-
Notifications
You must be signed in to change notification settings - Fork 7
/
NOTES
331 lines (203 loc) · 11.1 KB
/
NOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
* 2023-0127 Version 1.2.8
Bug 113. ERFA had a main function, which led to linking error. Renamed to main_test.
* 2023-0107 Version 1.2.7
Bug 111. fromJulianUTC throws exception for dubious year returned by ERFA.
Added a static erfa_status static variable in TemporalIndex.h. Return
codes from ERFA routines are stored there. Accessor and clearing functions
are defined for users to check. Exceptions are no longer raised for ERFA
non-nominal return codes. Updated ERFA and added a unit test.
* 2022-1015 Version 1.2.6
Bug 107. expandIntervalsMultiRes was trying to concatenate faces of
the root polyhedra, leading to a runaway loop and runaway memory use.
* 2021-0910 Version 1.2.5
Bug 99. acos(1) was going to NaN due to round off. Coerced the argument
of acos to be in [-1,1].
* 2021-0909 Version 1.2.4b
Improved CMake configuration for building both shared and static
versions. Working around GNUInstallDirs.
* 2021-0907 Version 1.2.3b
Improved CMake configuration for building both shared and static versions.
Following:
https://alexreinking.com/blog/building-a-dual-shared-and-static-library-with-cmake.html
* 2021-0906 Version 1.2.2b
Documentation improvements.
* 2021-0903 Version 1.2.1b
CMake build/install improvement.
* 2021-0821 Version 1.2.0b
Added reverse and forward resolutions to fromJulianUTC and fromJulianTAI. Added default values to
their declarations. Many changes to tests and generated a few bugs. Found overflow/underflow issue
in TemporalIndex constructor.
* 2021-07-28 Version 1.1.0
Added TemporalIndex set_temporal_resolutions_from_sorted_inplace(...).
* 2021-07-25 Version 1.0.0
Added baseline temporal API.
* 2021-03-23 Version 0.17.0
Added two sided temporal resolution.
20201-04-07 Version 0.16.7
Fixed bug in HtmRangeMultiLevel::CompressionPass, which inappropriately cut an interval, coarsened its resolution, and then wrote it to the SpatialRange skiplist. The fix was to check the number of triangles to be coalesced in the interval and to leave the SpatialRange alone if there weren't enough trixels to combine.
20201-03-27 Version 0.16.6
Fixed careless uint64 vs. int64 bug. Was testing a uint64 delta < 1 where delta actually should have been int64. Delta < 0 was a valid exit criteria, but uint64 masked that leading to a catastrophic error.
2021-03-19 Version 0.16.5
Enhanced expandIntervals and added expandIntervalsMultiRes. The previous version looked only at the resolution of an interval and then expanded accordingly. Thus if one started an interval with a small trixel larger ones later in the sequence would be split using the finer resolution, even when multi-resolution was desired. expandIntervalsMultiRes is a revision of similar code in HtmRangeMultiResolution::compress, which was an improvement on HtmRangeMultiResolution::defrag. expandIntervalsMultiRes attempts to coalesce as many trixels as possible using a rolled-out recursion scheme. The previous API method, expandIntervals retains the older non-multi-resolution behavior.
* 2021-03-08 Version 0.16.4
Various fixes to SpatialRange and HtmRangeMultiLevel, specifically, defrag and compress.
* 2020-10-09 Version 0.16.3
Build couldn't find gcc/g++ on conda-forge installation. Removed pystare references.
* 2020-09-13 Version 0.16.2
Fix test/CUTE/tests segfault arising when STARE_SRC_HOME not set.
* 2020-09-12 Version 0.16.1
Add default constructor to LatLonDegrees64.
* 2020-09-01 Version 0.16.0
Add SpatialRange::intersects that checks if a single spatial index value is contained therein. Performance scaling is not as expected.
* 2020-05-30 Version 0.15.6
Added an in-place adaptive resolution function for STARE spatial index value arrays.
* 2020-05-30 Version 0.15.5
Nonconvex now produces the complement when the input polygon is CW.
Needs more testing.
Fixed subtle error in nonconvex that dropped trixels when not enough
of the pixel intersected the ROI.
* 2020-05-28 Version 0.15.4
Removing polygon parity seems to introduce other ambiguities. Now we
require that polygons processed by non-convex hull be counter-clockwise,
i.e. areal normal pointing outward from sphere (right-hand sense).
* 2020-05-27 Version 0.15.3
Removed restriction on polygon parity.
* 2020-05-22 Version 0.15.0, 0.15.1, 0.15.2
Added a non-convex hull routine. Correction because of polygon parity needed more care.
Fixed problems with non-convex hull. Removed dependence on convex hull.
Found bug in index counting. Switched to older less precise point-in-triangle solve.
* 2020-05-20 Version 0.14.3
Small change to tests. Added in-place data-driven data resolution estimation
& coercion for STARE spatial indexing.
* 2020-05-01 Version 0.14.2
Extended domain of TriangleFromValue and LatLonDegreesFromValue to cover
terminators. LatLons are calculated by converting to resolution level of 27.
* 2020-04-10 Version 0.14.1
Add range in SpatialRange was implicitly destructing (a complex) SpatialRange
input, leading to a double-freeing of certain objects. Fixed by changing
signature to const&. We should look for other places where we pass complex
objects that require such treatment. Perhaps I'm not getting value- or
copy-semantics right.
* 2020-03-27 Version 0.14
PySTARE removed.
* 2020-03-20 Version 0.13
Added box_cover_from_latlon to PySTARE, also checked effect of correct varlen
signature in convex hull routines.
* 2020-03-19 Version 0.12
Adding STARE_Stash for a basic persistence mechanism, writing to binary files.
* 2020-03-11 Version 0.11.3
Fixed a bad 'off-by-one' array size declaration in STARE_Covers_test. Led to
segfault on CentOS 7 but not on Fedora 31.
* 2020-02-27 Version 0.11.2
htmInterface::convexHull failed for a case involving a moderate number of points.
RangeConvex::simplify0 removes the N-i constraint where N is the number of
constraints and i is identified earlier in the routine. The error was simplify0
was using the current length of the constraint vector for N rendering the
index values i invalid.
Note: MLR: I do not understand the construction of the RangeConvex constraint
list so that ruling out constraint(i) leads to the deletion of constraint(N-i-1).
* 2020-02-13 Version 0.11.1
htmInterface::convexHull failed for a case involving several colinear points.
ConvexHull did not correctly determine and eliminate internal points, sending
bad (colinear) segments to simplify0. Relaxing the tolerance (tol2) in
SpatialInterface::setPolyCorner and RangeConvex::simplify0 may help.
* 2020-02-07 Version 0.11
- STARE::adaptSpatialResolutionEstimates
- STARE::cmpSpatialResolutionEstimate and STARE::cmpSpatialResolutionEstimateI
- STARE::cmpSpatialDistanceCosine
- STARE::cmpSpatialDistanceRadians
* 2020-02-05 Version 0.10.3
Fixed: Q0 (root level) not handled correctly by STARE interface.
* 2019-12-20 Version 0.10.2
PySTARE triangulate for Matplotlib support was improperly cut & pasted.
* 2019-12-18 Version 0.10.1
- Bugfix. PySTARE.i _intersect_multiresolution broken during
analysis. Unit test and fix added.
* 2019-12-18 Version 0.10.0
- Shapely and Geopandas support.
- Valgrind analysis and leak patching.
* 2019-11-14 Version 0.9.1
Diagnostic "iFuse" loop counter set to low value of 12 during testing
of "infinite" looping in RangeConvex::simplify0. This guaranteed that
large enough sets of points sent to ConvexHull would overstep this
loop limit, which would then exit 1 the app.
* 2019-11-14 Version 0.9.0
Many improvements, most to pystare.
In pystare...
- Circular covers
- Support for matplotlib.tri.Triangulate
- A toe in the water of exceptions
In the library...
- Subtle bug corrected in terminator construction
* 2019-09-23 Version 0.8.2
Replacing math.h with cmath seems to help builds on CentOS 7 and later gcc.
* 2019-09-22 Version 0.8.1
Made change to STARE.h not STARE.h.in in 0.8.0 that
broke compilation and hid problem with STARE::ValueFromSpatialVector.
* 2019-09-21 Version 0.8.0
Many improvements to pystare.
- Vertices & Centroids
- ConvexHull
- SpatialRange interval lists
- Expand intervals into spatial id values
- Intersection
- Visualization examples
Some use is made of the STARE spatial index as a way to convey location information,
however there is some difficulty going back and forth to SpatialVectors. Note
that vertices and edges are not the easiest points to determine.
There was a bug in expandIntervals due to the confusing nature of
EmbeddedLevelNameEncoding with its native and SciDB formats.
Added a number of tests using Constraint.
Improved intersection behavior by injecting dependency on varlen, i.e.
interior vs. boundary calculation. Setting varlen to false tends to
force calculation all the way down to leaf, whereas varlen true
stops on reaching a fully enclosed trixel, leading to the multi-resolution
partitioning.
Corrected bug in SetPolyCorner of ConvexHull calculation. 2-corner list would
throw out co-linear third point without checking if it extended the side
or not.
Changed HtmRangeMultiLevel::RangeFromIntersection to eliminate iteration over
the range in favor of using the SkipList's findMAX. Also eliminated superfluous
iteration after intersection is found.
Added SpatialRange to use SkipList to generate intersections. Note the intersect
doesn't use find or search, so it's not clear we're getting the benefit of the SkipLists.
* 2019-09-05 Version 0.7.0
Added Griessenbaum's new apps and python interface.
* 2019-08-27 Version 0.6.3
Older versions of cmake that don't have the two policies used in the
if(SWIG_FOUND) section are now supported (i.e., the build doesn't break).
However, the python bindings don't build for those versions of cmake,
even if swig is present.
* 2019-09-03 Version 0.6.3
Convex hull fixes. Note that the convex hull is still producing triangles in the interior.
* 2019-08-17 Version 0.6.2
Improved build. Python include directories now controlled by environment
variable PYTHON_INCLUDE_DIRS.
* 2019-08-08 Version 0.6.2*
- Rename PySTARE1 to PySTARE.
- PySTARE has a slightly different usage and no tuple/list support
currently depending on Numpy. (See contrib/python examples.)
* 2019-08-06 Version 0.6.1
Minor modifications. Build improvements. PySTARE and Boost removed.
Corrected NOTES and INSTALL documentation.
* 2019-07-03 Version 0.5.0
- Added ERFA single file and CUTE. Cf. 6/19.
- Tests for SWIG.
- Added integer-based "contains," i.e. cmpSpatial.
- ERFA provides datum mappings for precise positioning in time. We should
take advantage of this when we need to associate longitude and time.
* 2019-06-19
** TODOs
- Add ERFA and CUTE to the root directory of the distribution.
- Update the CMakeLists.txt to reflect those changes and reduce hardcoding.
- A number of classes & files have a "1" at the end of their names This
generally indicates a need to refactor as the "1" is either a
derived class or an evolution meant to replace older code.
- The TemporalIndex hierarchy of classes needs more thought. Currently
the default type is #2 and different implementations for the other
types is left for the future.
** ODDITIES
- The HTM spatial libraries, in particular the SkipList code used for
spatial ranges and covers expects negative index values to indicate
invalid indices. Therefore the STARE spatial index must be positive
and the most significant bit is not used.