-
Notifications
You must be signed in to change notification settings - Fork 364
/
NEWS
847 lines (733 loc) · 34.3 KB
/
NEWS
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
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
Changes in 3.10.5
2023-03-16
- Fixes/Improvements:
- Support gcc-13 (GH-743, Sergei Trofimovich)
- Disallow Inf envelopes in Quadtree, avoid inf loop (Paul Ramsey)
- GEOSUnaryUnion: Fix crash on collection containing empty point (GH-830, Dan Baston)
- GEOSSTRtree_iterate: Do not return removed items (GH-833, Dan Baston)
- IndexedFacetDistance: Fix crash with Inf coordinates (GH-821, Dan Baston)
- HausdorffDistance: Fix crash on collection containing empty point (GH-840, Dan Baston)
- DistanceOp: Fix crash on collection containing empty point (GH-842, Dan Baston)
Changes in 3.10.4
2022-11-14
- Fixes/Improvements:
- Fix PreparedGeometry to avoid crashes with EMPTY elements in input (GH-678, Martin Davis)
- Fix LineSegment.orientationIndex(LineSegment) (GH-699, Martin Davis)
- Add OverlayNG support for simple GeometryCollection inputs (GH-716, Martin Davis)
- Fix TopologyPreservingSimplifier to produce stable results for Multi inputs (GH-718)
- Improve ConvexHull radial sort robustness (GH-724, Martin Davis)
- Use more robust Delaunay Triangulation frame size heuristic (GH-728, Martin Davis)
- Fix crash in GEOSIntersects with empty point inputs (#673, Dan Baston)
- Fix RelateOp for empty geometry and closed linear geometry (#1096, Dan Baston)
- Return 2D result on 2D input to GeometryPrecisionReducer (#1137, Dan Baston)
- Support gcc-13 (GH-743, Sergei Trofimovich)
- GEOSIntersection: Fix FE_INVALID exception on intersection of disjoint geometries
(GH-791, Joris Van den Bossche & Dan Baston)
- Fix incorrect result from Envelope::disjoint (GH-791, Dan Baston)
Changes in 3.10.3
2022-06-03
- Fixes/Improvements:
- VoronoiDiagramBuilder::setSites(const CoordinateSequence&) return sorted (GH-551)
- Add SnappingNoder seeding (Martin Davis)
- Fix RelateOp (and intersects predicate) for lines with intersections very near boundary (GH-570, Martin Davis)
- Fix segfault in Hausdorff distance with empty geometries (GH-569)
- Fix inf loop in PolygonTriangulator (GH-574, Andrew Stelter)
- Fix short circuit from TemplateSTRtree query (GH-577, Andrew Stelter)
- Fix IsValidOp to handle repeated node points (JTS-845, Martin Davis)
- Fix IsSimpleOp to handle closed LineStrings with repeated endpoints (JTS-851, Martin Davis)
- Add OverlayNG area check heuristic (JTS-812, Paul Ramsey)
- Improve test_geos_unit application error checking and reporting (Martin Davis)
- Fix LengthIndexedLine (via LengthLocationMap fix) (JTS-859, Martin Davis)
- Fix PolygonHoleJoiner (JTS-862, Martin Davis)
- Fix crash in GeometryNoder on empty intpu (GH-601, Paul Ramsey)
- Handle case where user sets explicit absolute lib and include dirs (GH-608, Paul Ramsey)
- Fix MinimumDiameter getMinimumRectangle for flat input (JTS-875, Martin Davis)
- Fix HilbertEncoder difference in ARM vs x64 (GH-579, Paul Ramsey)
- Fix BufferOp inverted ring check (JTS-878, Martin Davis)
Changes in 3.10.2
2022-01-15
- Fixes/Improvements:
- Fix crash in MonotoneChain with empty CoordinateSequence (GH-539, Sandro Santilli)
- Fix crash in GeoJSONWriter in case of empty points (TRAC-1139, Paul Ramsey)
- Improve BuildArea performance (TRAC-1122, Sandro Santilli)
- Fix unaryUnion to avoid segfault with empty polygon (GH-501, Mike Taves)
- Fix memory leak on exception in prepared geometry (GH-506, Dan Baston)
- Iterator invalidation in rare cases (GH-508, Momtchil Momtchev)
- Infinite loop on collapsed input to MaximumInscribedCircle (Paul Ramsey)
- Write LinearRing to GeoJSON as LineString (TRAC-1140, Paul Ramsey)
- Fix PolygonEarClipper to handle collapsed corners (GH-526, Martin Davis)
- Fix GEOSSTRtree_remove for empty tree (GH-544, Dan Baston)
- Fix crash on query of STRtree with removed items (GH-545, Dan Baston)
Changes in 3.10.1
2021-11-2
- Fixes/Improvements:
- Fix mistake in constants used to select WKB flavor in C API (GH489, Paul Ramsey)
- Fix crash when reducing precision on a LinearRing (#1135, Paul Ramsey)
- Fix GeoJSON crash on invalid input (GH498, Even Rouault)
- Use std::sqrt exclusively for Solaris build (Paul Ramsey)
- Fix mistaken version numbers in some parts of 3.10.0 (Paul Ramsey)
Changes in 3.10.0
2021-10-20
- New things:
- CAPI: GEOSDistanceWithin, GEOSPreparedDistanceWithin
(#1124, Sandro Santilli)
- Output WKT using positional precision with the ryu
library (#868, Paul Ramsey)
- geosop CLI for GEOS (Martin Davis)
- Full doxygen of the C-API (Paul Ramsey)
- GeometryFixer class for validity enforcement (Martin Davis, Paul Ramsey)
- CAPI: GEOSDensify (Brendan Ward)
- CAPI: GEOSCoordSeq_copyFromArrays, GEOSCoordSeq_copyFromBuffer,
GEOSCoordSeq_copyToArrays, GEOSCoordSeq_copyToBuffer (Daniel Baston)
- CAPI: GEOSMakeValidWithParams new validity enforcement approach from
https://github.com/locationtech/jts/pull/704, uses GeometryFixer
(Paul Ramsey, Martin Davis)
- CAPI: GEOSWKBWriter_getFlavor, GEOSWKBWriter_setFlavor support
outputting ISO or Extended WKB flavors (#466, Paul Ramsey)
- CAPI: GEOSConstrainedDelaunayTriangulation, builds a constrained
triangulation of an input Polygon or MultiPolygon,
returning a GeometryCollection(Polygon) of the triangles.
- Fixes/Improvements:
- Improved IsValidOp (Paul Ramsey, Martin Davis)
- Improved IsSimpleOp (Paul Ramsey, Martin Davis)
- Preserve ordering of lines in overlay results (Martin Davis)
- Check for invalid geometry before fixing polygonal result in Densifier
and DPSimplifier (Martin Davis)
- Fix overlay handling of flat interior lines (JTS-685, Martin Davis)
- Fix IsValidOp to correctly report invalid nested MultiPolygons (#1112, Martin Davis)
- Fix IsValidOp to correctly report certain kinds of invalid LinearRings (Martin Davis)
- Fix BufferOp to avoid artifacts in certain polygon buffers (#1101, Martin Davis)
- Improve STRtree performance through TemplateSTRtree implementation (Daniel Baston)
- Fix DiscreteFrechetDistance to use initial points of input lines (#1128, Martin Davis)
- Changes:
- Autoconf build system is dropped in favour of CMake
See README.md and INSTALL.md for examples of usage
- Libtool is no longer used for in favour of CMake
Therefor libgeos.la is no longer built/installed
- #1094, #1090: Drop inlines.cpp to address duplicate symbols on many platforms
(Regina Obe)
- GH475: Do not return NaN from GEOSProjectNormalized_r (Paul Ramsey)
- GH442: BufferOp now returns unique_ptr<Geometry> result (Paul Ramsey)
Changes in 3.9.0
2020-12-09
- New things:
- OverlayNG engine from JTS, now the default (Martin Davis, Paul Ramsey)
- MaximumInscribedCircle and LargestEmptyCircle (JTS-530, Paul Ramsey)
- CAPI: Fixed precision overlay operations (Sandro Santilli)
- CAPI: GEOSPreparedNearestPoints (#1007, Sandro Santilli)
- CAPI: GEOSPreparedDistance (#1066, Sandro Santilli)
- CAPI: GEOSGeom_setPrecision uses OverlayNG (Paul Ramsey)
- SimpleSTRTree spatial index implementation (Paul Ramsey)
- Add support for pkg-config for GEOS C API (#1073, Mike Taves)
- Fixes/Improvements:
- Stack allocate segments in OverlapUnion (Paul Ramsey)
- Improve performance of GEOSisValid (Dan Baston)
- Update geos-config tool for consistency
and escape paths (https://git.osgeo.org/gitea/geos/geos/pulls/99)
changes mostly affect CMake MSVC builds (#1015, Mike Taves)
- Testing on Rasberry Pi 32-bit (berrie) (#1017, Bruce Rindahl, Regina Obe)
- Replace ttmath with JTS DD double-double implementation (Paul Ramsey)
- Fix bug in DistanceOp for geometries with empty components (#1026, Paul Ramsey)
- Remove undefined behaviour in CAPI (#1021, Greg Troxel)
- Fix buffering issue (#1022, JTS-525, Paul Ramsey)
- MinimumBoundingCircle.getMaximumDiameter fix (JTS-533, Paul Ramsey)
- Changes:
- Drop SWIG bindings, including for Ruby and Python (#1076, Mike Taves)
Changes in 3.8.0
2019-10-10
- New things:
- CAPI: GEOSBuildArea (#952, Even Rouault)
- CAPI: GEOSMakeValid (#952, Even Rouault)
- CAPI: GEOSPolygonize_valid (#727, Dan Baston)
- CAPI: GEOSCoverageUnion (Dan Baston)
- CAPI: GEOSCoordSeq_setXY, GEOSCoordSeq_setXYZ,
GEOSCoordSeq_getXY, GEOSCoordSeq_getXYZ (Dan Baston)
- CAPI: GEOSMinimumBoundingCircle (#735)
- CAPI: GEOSGeom_createPointFromXY (Dan Baston)
- Improvements:
- Improve overall performance by reducing of heap allocations (Dan Baston)
- Improve performance and robustness of GEOSPointOnSurface (Martin Davis)
- Improve performance of GEOSPolygonize for cases with many potential
holes (#748, Dan Baston)
- Support extended precision calculations (ttmath) and port JTS
improvements related to extended precision (Paul Ramsey, Mateusz Loskot)
- Improve performance of GEOSPolygonize for cases with many or complex
shells (Dan Baston, Martin Davis)
- Improve performance of Delaunay triangulations / Voronoi Diagrams
(Dan Baston)
- Improve performance of prepared geometry operations (Dan Baston)
- Improve robustness of Delaunay triangulations (Paul Ramsey, Martin Davis)
- Improve performance of unary union for lines (Dan Baston)
- Improve general predicate, overlay, and buffer performance (Dan Baston, Paul Ramsey)
- Improve cascaded union performance (Paul Ramsey, Martin Davis)
- Allocate default GeometryFactory singleton on the stack (Sandro Mani)
- Harmonize XML tests with JTS and harmonize cmake/autoconf
test running (Paul Ramsey)
- CMake modernization (Mateusz Loskot, Paul Ramsey, Dan Baston)
- Return unique_ptr from most methods that produce a new geometry (Dan Baston)
- Changes:
- Constructive geometry functions in CAPI now preserve SRID
of input arguments in output (#896)
Changes in 3.7.2
2019-05-02
- Bug fixes / improvements
- Envelope constructor using strtod (#875 Paul Ramsey)
- Failure in CMake for OSX Framework (#936 Paul Ramsey)
- Polygon build failure in Overlay difference (#789 Paul Ramsey)
- Invalid union result from valid polygon inputs (#838)
Changes in 3.7.1
2018-11-29
- Bug fixes / improvements
- Fix crash in GEOSCoordSeq_isCCW with empty coordseq
(#927, Sergey Fedoseev)
- Fix crash in GEOSInterpolate with empty LineString
(#926, Sergey Fedoseev)
- Fix crash in GEOSUnaryUnion with empty LineString
(#928, Sergey Fedoseev)
- Fix memory leak in SIRtree::insert (#919, Dan Baston)
- Reduce required autoconf to 2.63
(#56, John Harvey)
- Fix incorrect return values on error from GEOSLength
GEOSisValidDetail (#941, Dan Baston)
Changes in 3.7.0
2018-09-10
- New things:
- CAPI: GEOSDistanceIndexed (#795, Dan Baston)
- CAPI: GEOSCoordSeq_isCCW (#870, Dan Baston)
- CAPI: GEOSGeom_getXMin, GEOSGeom_getXMax,
GEOSGeom_getYMin, GEOSGeom_getYMax (#871, Dan Baston)
- CAPI: GEOSFrechetDistance (#797, Shinichi SUGIYAMA)
- CAPI: GEOSReverse (#872, Dan Baston)
- CAPI: GEOSSegmentIntersection (#873, Dan Baston)
- CAPI: GEOSGeomGetZ (#581, J Smith)
- Improvements
- Interruptible snap operation (Paul Ramsey)
- Numerous packaging, doc, and build changes
(Debian group: Bas Couwenberg, Francesco Paolo Lovergine)
- C++ API changes:
- Require defining USE_UNSTABLE_GEOS_CPP_API for use without
warnings.
- Make C++11 required (Mateusz Loskot)
- Use C++11 unique_ptr, nullptr, and override constructs
(Mateusz Loskot)
- C++11 standard delete on noncopyable
(#851, Vicky Vergara)
- Fix CommonBits::getBit to correctly handle i >= 32
(#834, Kurt Schwehr)
Changes in 3.7.0rc1
2018-08-19
Fixes / enhancements since 3.7.0beta2
- Avoid segfault when querying empty tree (#730, framm)
- Collection with Empty components crashes overlay (#782, Dan Baston)
- Allow static library with C API for CMake builds (#878, Dakota Hawkins)
Changes in 3.7.0beta2
2018-08-06
Fixes since 3.7.0beta1
- Fix infinite loop in GEOSClipByRect (#865, Dan Baston)
- Make GEOSException inherit from std::runtime_error
to address clang warnings (Dan Baston)
- Add missing CMake files to tarball (#895, Regina Obe)
Changes in 3.7.0beta1
2018-06-25
See 3.7.0 latest notes
Changes in 3.7.0alpha
2018-06-14
See 3.7.0 notes
Changes in 3.6.1
2016-12-24
- Bug fixes / improvements
- Fix GEOSSTRtree_nearest_r signature and add implementation (#796)
- Fix --static-clibs and --static-cclibs returns from geos-config
- Fix WKB representation of empty polygon (#680).
- Fix empty GEOSSimplify return on inner ring collapse (#741)
Changes in 3.6.0
2016-10-25
- Important / Breaking Changes:
- The PHP binding moved to its own repository:
http://git.osgeo.org/gogs/geos/php-geos (#765)
- New things:
- CAPI: GEOSGeom_{get,set}UserData (Rashad Kanavath)
- CAPI: GEOSGeom_{set,get}Precision (#713)
- CAPI: GEOSMinimumRotatedRectangle and GEOSMinimumWidth
(#729, Nyall Dawson)
- CAPI: GEOSSTRtree_nearest (#768, Dan Baston)
- CAPI: GEOSMinimumClearance and GEOSMinimumClearanceLine
(#776, Dan Baston)
- C++ API changes:
- Automatic memory management for GeometryFactory objects
Changes in 3.5.0
2015-08-16
- New things:
- Voronoi API (#627)
- PHP: Geometry->normalize method
- GEOS_USE_ONLY_R_API macro support (#695)
- PHP: WKBReader->read() & WKBWriter::write() methods (Benjamin Morel)
- GEOSClipByRect (#699, Mika Heiskanen, Sandro Santilli)
- CAPI: thread-safe message handling API (#663, Pepijn Van Eeckhoudt)
- Improvements:
- Speed-up intersection and difference between geometries
with small bounding box overlap.
- CAPI: add MULTILINESTRING support for GEOSisClosed (Benjamin Morel)
- C++ API changes:
- Added no-parameter CoordinateSequenceFactory::create method (Sandro Mani)
Changes in 3.4.2
2013-08-25
- Bug fixes / improvements
- Use a double for PrecisionModel scale, avoiding overflows
should fix 32-bit regression failures (#652)
- isnan workaround OS detection missing NetBSD, DragonFly, Sun nuance (#650)
- Do not distribute platform.h and version.h, but install both (#601)
- Non-standard ChangeLog file in 3.4.0 and 3.4.1 releases (#654)
- new travis bot (#657)
- accept multiple Nan representations (#656)
Changes in 3.4.1
2013-08-17
- Bug fixes / improvements
- Assertion failure snapping line to points of rectangle
smaller than tolerance (#649)
- Can't build using cmake with tar ball (#644)
Changes in 3.4.0
2013-08-11
- New things:
- Delaunay Triangulation API (#487, #565, #570, #567)
- Interruptibility API (C and C++)
- CAPI: GEOSNode (#496) - PHP: Geometry->node
- GeometryPrecisionReducer class (#496, #526)
- BufferInputLineSimplifier header exposed (#548)
- New Centroid class supporting mixed geometry components (#612)
- io::Writer::reserve() method
- CAPI: GEOSNearestPoints
- Add --cclibs, --static-clibs and --static-cclibs to geos-config (#497)
- Early bail out of overlay exception if input is invalid
- C++ API changes:
- New noding::GeometryNoder class
- Added BufferOp::setSingleSided
- Signature of most functions taking a Label changed to take it
by reference rather than pointer.
- Signature of most functions taking an IntersectionMatrix changed
to take it by reference rather than pointer.
- GraphComponent::label is now a Label value (from a pointer)
- NodedSegmentString takes ownership of CoordinateSenuence now
- io::Writer's toString() returns by const ref, write() takes a const ref
- Unify prototypes of WKTReader and WKBReader constructor (#310)
- GeometryCollection::computeEnvelopInternal and
GeometryCollection::compareToSameClass are marked virtual (#478)
- Bug fixes / improvements
- A point interpolated from a line does not always intersect
the same line (#323)
- Port ConvexHull robustness fix from JTS-1.13 (#457)
- Improve Overlay robustness by reducing input precision on topology
exception and by refusing to accept unnoded output (#459)
- Improve Buffer robustness by reducing input precision on topology
exception (#605)
- Mismatch segment sides in OffsetCurveBuilder (#633 )
- Fixed Linear Referencing API to handle MultiLineStrings consistently
by always using the lowest possible index value, and by trimming
zero-length components from results (#323)
- Fixed CMake configuration to set correct SOVERSION (current - age)
- Fix EMPTY return from single-point lines and zero-length polygons (#612)
- CMakeLists.txt, tools/geos_svn_revision_cmake.h.in: Add
geos_svn_revision.h generator to CMake config (#643)
- Makefile.vc 'clean' step leaks obj files (#607)
Changes in 3.3.9
2013-09-04
- Bug fixes / improvements
- Fix OffsetCurve op in presence of duplicated vertices (#602)
- Fix LineSegmentVisitor copy ctor (#636)
- Fix area boundary return from GEOSPointOnSurface (#623)
- Speedup GEOSWKBReader_read (#621)
- Fix RobustLineIntersector handling of invalid intersection points (#622)
- Reduce likelyhood of invalid output from snap operation (#629, #501)
- Reduce memory fragmentation of prepared Polygon/Point intersection op
- Fix mingw64 compile (#630)
- Fix bug in HotPixel constructor (#635)
- Fix install location of linearref headers (#624)
- Fix multi-geometry constructor to drop SRID from components (#583)
Changes in 3.3.8
2013-02-28
- Bug fixes / improvements
- IsValidOp: throw proper error on nested shells (#608)
- Fix header guards (#617, #618, #619)
- WKTWriter::appendCoordinate optimisation
- Fix centroid computation for collections with empty components (#582)
Changes in 3.3.7
2013-01-22
- Bug fixes / improvements
- Fix abort in RightmostEdgeFinder (#605)
- Do not force precision reduction below 6 significant digits
while trying to obtain a valid Buffer output (#605)
- Fix GEOSPointOnSurface with zero-length linestring (#609)
- Fix EMPTY return from zero-area polygon (#613)
- Segfault from symdifference (#615)
Changes in 3.3.6
2012-11-15 -- that's Post-GIS day !
- Bug fixes / improvements
- Add support for testing with phpunit 3.6 (not loosing support for 3.4)
- Segfault from intersection (#586, #598, #599)
Changes in 3.3.5
2012-06-25
- Bug fixes / improvements
- Correctly increment CAPI lib version from 3.3.3 (#558)
- Port robustness fix to CentroidArea (#559)
- Always return POINT from GEOSGetCentroid, even for EMPTY (#560)
- Always return POINT from GEOSPointOnSurface, even for EMPTY (#561)
Changes in 3.3.4
2012-05-31
- Bug fixes / improvements
- Do not abort on NaN overlay input (#530)
- Reduce CommonBitsRemover harmful effects during overlay op (#527)
- Better cross-compiler support (#534)
- Enable overlay ops short-circuits (#542)
- Envelope-based short-circuit for symDifference (#543)
- Fix support for PHP 5.4 (#513)
- Fix TopologyPreservingSimplifier invalid output on closed line (#508)
- Reduce calls to ptNotInList, greatly speeding up Polygonizer (#545)
Changes in 3.3.3
2012-04-01
- Bug fixes / improvements
- Fix simplification of collections with empty items (#519)
- Fix MSVC compilation of ambiguous log() call (#506)
- Fix CMake issues with std:: namespace detection (#493)
Changes in 3.3.2
2012-01-05
- Bug fixes / improvements
- Fix CMAKE_CXX_FLAGS overriding -std=gnu++0x (#489)
- Missing versions update in CMake configuration (#490)
- Fix noding of self-intersecting lines through UnaryUnion (#482)
- Fix handling of collapsed edges skipping in BufferOp (#494)
- Print up to 18 digits of precision for TopologyException points
- Fix noding with reduced precision in Buffer operation (#473)
- Fix HotPixel original point invalidation (#498)
- Fix CascadedPolygonUnion to discard non-polygonal components (#499)
- Improve buffer robustness by reverting to non-snaprounding noder (#495)
- Fix C++11 build by avoiding std::pair<auto_ptr> (#491)
- Add --clibs to geos-config and GEOS_C_LIBS to geos.m4 (#497)
- Apply shoelace formula for area calculation (#485)
- Fix default initialization issue for clang (#500)
- Improve overlay robustness by fixing areal validity on snapping (#488)
Changes in 3.3.1
2011-09-27
- Bug fixes / improvements
- Fix memory leak on invalid geometry in InteriorPointArea (#475)
- ValidOp abort in presence of 2 touching holes forming an island (#449)
- Enable prepared intersects operation for points
- Fortify suspicious code found by static analysis tools
- Fix for SOLARIS build (#461)
- Fix EMPTY result from GEOSOffsetCurve with distance 0 (#454)
- Fix Geometry::clone to copy SRID (#464)
- Fix for clang builds (#463)
- Fix out-of-place builds for python binding (#332) and regress testing
- Fix OS X framework cmake build (#385)
Changes in 3.3.0
2011-05-30
- New things:
- CAPI: GEOSBufferWithParams (allows single sided buffers)
- CAPI: GEOSOffsetCurve deprecates GEOSSingleSidedBuffer
- CAPI: GEOSUnaryUnion deprecates GEOSCascadedUnion
- CAPI: GEOSisValidDetail: tell state, reason & location apart. allows
passing flags.
- CAPI: GEOSContext_setNoticeHandler_r, GEOSContext_setErrorHandler_r
- CAPI: GEOSGeom_createEmptyPoint, GEOSGeom_createEmptyLineString
GEOSGeom_createEmptyPolygon, GEOSGeom_createEmptyCollection
- CAPI: GEOSGeom_extractUniquePoints
- CAPI: GEOSGetGeometryN support for single geometries
- CAPI: GEOSPolygonize_full to return all informations computed by
the polygonizer
- CAPI: GEOSOrientationIndex
- CAPI: GEOSSharedPaths to find shared paths and their orientation
- CAPI: GEOSSnap
- CAPI: GEOSRelatePatternMatch
- CAPI: GEOSCovers, GEOSCoveredBy (#396)
- CAPI: GEOSRelateBoundaryNodeRule (#399)
- CAPI: GEOSGeom_getCoordinateDimension() (#311)
- CAPI: GEOSWKTWriter_setOutputDimension, GEOSWKTWriter_setOld3D (#292)
- PHP: new PHP5 bindings based on CAPI
- Semantic C++ API changes:
- Geometry inheritance chain changed to introduce Puntal, Lineal
and Polygonal classes (virtual inheritance introduced)
- Polygonizer::getInvalidRingLines retains ownership of vector elements
- Geometry::isWithinDistance method is now const
- Polygonizer::getCutEdges returns by const ref
- Polygonizer::getDangles returns by const ref
- Empty LinearRings are closed by definition
- Bug fixes / improvements
- Fixed Geometry.distance() and DistanceOp to return 0.0 for empty inputs
- Invalid compound geometries reported as valid (#333)
- Return up to 15 digits of precision from GEOSisValidReason_t (#329)
- CAPI: do not leak contexts when using the non-reentrant interface
- Fix duplicated dangles returned by Polygonizer
- Fix SnapIfNeededOverlayOp to throw the originating exception
- Fixed LineMerger to skip lines with only a single unique coordinate
- Fix NodedSegmentString to handle zero-length line segments correctly
(via safeOctant)
- Fixed buffer OffsetCurveSetBuilder to handle "flat" rings correctly
- Added illegal state check in LineSegment::pointAlongOffset()
- Improved performance of RectangleIntersects by always using
segment-scanning and refining SegmentIntersectionTester
- Reduce memory use in PreparedGeometry predicates (#342)
- Fix infinite loop in RobustDeterminant with nan/inf input (#357)
Changes in 3.2.0
2009-12-14
- Add Single-sided buffer operation
- JTS-1.10 sync ...
- Drastically improved Buffer speed (20x for a case in testsuite)
- Improved EdgeList duplicate edge finding
- Added algorithm::distance package
- Added algorithm::Angle class
- Added algorithm::BoundaryNodeRule class
- IsSimpleOp can now return non-simple location coordinate
- DistanceOp can now check for 'within distance' predicate
(earlier exit)
- MultiPolygon::getBoundary always return MultiLineString, also
when the result is the EMPTY geometry.
- Various bug and leak fixes, optimizations
- Replace MarkupSTL with tinyXML
Changes in 3.1.0
- PreparedGeometry operations for very fast predicate testing.
- Intersects()
- Covers()
- CoveredBy()
- ContainsProperly()
- Easier builds under MSVC and OpenSolaris
- Thread-safe CAPI option
- IsValidReason added to CAPI
- GEOSPolygonizer_getCutEdges added to CAPI
- CascadedUnion operation for fast unions of geometry sets
- Numerous bug fixes.
http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
Changes in 3.0.0
These are mostly ABI breaking changes.
In few cases the API also changed, but the most external one
(the documented one) should be unchanged.
- New things:
- Added geom::BinaryOp class performing a binary operation
using different heuristics to reduce probability of robustness
issues. Both C-API and XMLTester now use this class for
binary operations.
- Added covers() and coveredBy() predicates to Geometry class
- Added overlay::overlayOp() adapter class
- Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
to the C API
- Added closed ring checks in IsValidOp
- Multi-input support in XMLTester
- HEXWKB I/O
- Envelope(string) ctor
- Ruby interface
- New ShortCircuitedGeometryVisitor class
- New operation/predicate package
- Added CGAlgorithms::isPointInRing() version working with
Coordinate::ConstVect type (faster!)
- Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
class.
- Moved GetNumGeometries() and GetGeometryN() interfaces
from GeometryCollection to Geometry class.
- New planarSubgraph class
- New ConnectedSubgraphFinder class.
- New LineSequencer class
- New WKTWriter::toLineString and ::toPoint convenience methods
- New IsValidOp::setSelfTouchingRingFormingHoleValid method
- New WKTWriter::toLineString and ::toPoint convenience methods
- New IsValidOp::setSelfTouchingRingFormingHoleValid method
- New Envelope::centre()
- New Envelope::intersection(Envelope)
- New Envelope::expandBy(distance, [ydistance])
- New LineString::reverse()
- New MultiLineString::reverse()
- New Geometry::buffer(distance, quadSeg, endCapStyle)
- New SnapRounding code
- New size() and operator[] interfaces to CoordinateSequence
- New ScaledNoder class
- New unit tests (make check rule)
- Optimizations:
- WKT parser speedup
- Function inlining
- Coordinate copies reduction
- Heap allocations reduction
- More classes made final
- Better use of standard containers
- Use of singletons when appropriate
- Removed many function calls in loops' end conditions
- Improved XMLTester output and user interface
- Improved memory use in geos::geom::util::PolygonExtractor
- Ported JTS-1.7 version of ConvexHull with big attention to
memory usage optimizations.
- Changed CoordinateArrayFilter to reduce memory copies
- Changed UniqueCoordinateArrayFilter to reduce memory copies
- Added rectangle-based optimizations of intersects() and
contains() ops
- Inlined all planarGraphComponent class
- More iterators returning methods and inlining in planargraph.
- Obsoleted toInternalGeometry/fromInternalGeometry
- Improved buffering speed and robustness by using Snap Rounding
- Semantic changes
- SegmentString: getCoordinates() doesn't return a clone
anymore, getCoordinatesRO() obsoleted.
- JTS packages mapped to geos:: sub-namespaces
- Geometry::getInteriorPoint() returns NULL if called
against an EMPTY geom
- LineString::get{Start,End}Point return NULL for
EMPTY geoms
- GEOSException is now derived by std::runtim_exception
and thrown by const reference.
- Geometry constructors made protected, to force use
of a GeometryFactory.
- Correctness:
- More const-correct signatures
- Stronger methods typing (removed some void * args).
- Changed index-related funx signatures to use size_t
rather then int
- More const-correctness in Buffer "package"
- Bugfix in LineString::getCoordinate() failing to return
NULL from getCoordinat() when empty.
- Use unsigned int for indexes and sizes.
- Layout changes:
- Namespaces mapping JTS packages
- Renamed classes after JTS names (namespaces use made this possible
w/out name clashes)
- Splitted headers, for build speedup and possible API reduction.
- Moved source/bigtest and source/test to tests/bigtest
and test/xmltester
- Moved C-API in it's own top-level dir capi/
- Reworked automake scripts to produce a static lib for each subdir
and then link all subsystem's libs togheter
- Renamed DefaultCoordinateSequence to CoordinateArraySequence.
- Renamed OverlayOp opcodes by prepending the 'op' prefix, and
given the enum a name (OpCode) for type-safety.
- Bug fixes:
- Fixed bug causing redundant linestrings to be returned in the
result of overlaying polygons containing touching holes (#13)
- Fixed integer conversion bug
- Fixed PointLocator handling of LinearRings
- Added missing ::clone() methods for Multi* geoms
- (Partial) Detailed list of changes:
- Changed SegmentNode to contain a *real* Coordinate (not a pointer)
to reduce construction costs.
- Changed geomgraph nodeMap to use Coordinate pointers as keys
- Envelope destructor made non-virtual to give compiler more static
binding options.
- Changed BufferSubgraph::computeDepths to use a set instead of a
vector for checking visited Edges.
- Made LineIntersector a concrete type
- Node::isIncidentEdgeInResult() method made virtual
- Const-correct signatures in LineMerger package
- Changed operation/valid/*NestedRingTester classes interface
to use Coordinate pointers instead of copies.
- Changed EdgeIntersectionList to use a set instead of a vector
- Changed DepthSegment to store a real Coordinate rather then a pointer.
- Changed SubgraphDepthLocater to store real containers rather then
pointers.
- Changed BufferSubgraph to store a real RightmostEdgeFinder and real
containers rather then pointers.
- CoordinateSequence API changes:
- point index and size related functions
use unsigned int rather then int
- Changed EdgeEndStar to maintain a single container for EdgeEnds
- Changed PlanarGraph::addEdges to take a const vector by ref
rathern then a non-const vector by pointer
- Changed EdgeList::addAll to take a const vector by ref
rather then a non-const vector by pointer
- Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
const to CoordinateSequence
- LineBuilder::lineEdgesList made a real vector, rather then pointer
(private member)
- SegmentString::eiList made a real SegmentNodeList, rather then
a pointer (private member)
- Removed coordinate copies in ElevationMatrix::elevate
- Changed CoordinateFilter interface to have a const method
for filter_rw, updated interfaces using this to take
const CoordinateFilter (apply_rw).
Changes in 2.2.4
- Added version.in.vc to distribution
Changes in 2.2.1
- Support for MingW builds
- Bugfix in Polygonizer chocking on invalid LineString inputs
- CAPI: small leak removed in GEOSHasZ()
Changes in 2.2.0
- Performance improvement in OverlayOp::insertUniqueEdge()
- CoordinateSequence copy removal in EdgeRing
- Minor memory allocation improvements
- Higher dimensions interface for CoordinateSequence
- Added getCoordinatesRO for Point class
- NEW WKB IO
- NEW Simplified and stabler C API
Changes in 2.1.4
- Severe BUGFIX in BufferSubgraphGT and other functions used
as StrictWeakOrdering predicates for sort()
Changes in 2.1.3
- win32/mingw build support
- Segfault fix in LinearRing and LineString constructors
- Segfault fix in Polygonizer
- XMLTester installed by default
- XMLTester code cleanup
- Fixed handling of collection input in GeometryFactory::buildGeometry
- Added shortcircuit test for Union operation
- Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
- Performance improvements in CGAlgorithms::isOnLine()
- Other minor performance improvements
- New Node::isIncidentEdgeInResult() method
- OverlayOp's PointBuilder performance improvement by reduction
of LineIntersector calls.
- Optimizations in Buffer operation
- Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
Changes in 2.1.2
- Segfault fix in Point::isEmpty
- Mem Leak fix in OffsetCurveBuilder::getRingCurve
- Bugfix in LineSegment::reverse
- Added multipolygon buffering test in source/test/testLeaksBig
- Ported JTS robustness patch for RobustLineIntersector
- Removed useless Coordinate copies in OverlayOp::mergeZ()
- Avoided throws by IsValid on invalid input
- Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
instead of sprintf)
- Better support for older compilers (Polygonizer::LineStringAdder friendship)
- Removed useless Coordinate copies in CGAlgorithms::isOnLine()
- Added support for polygonize and parametrized buffer tests in XMLTester
- Fixed support for --includedir and --libdir
- Fixed Z interpolation in LineIntersector
- Handled NULL results from getCentroid() in XMLTester
- Segfault fix in (EMPTY)Geometry::getCentroid()
- Made polygon::getBoundary() always OGC-valid (no LinearRings)
- Input checking and promoting in GeometryFactory::createMultiLineString()
- Segfault fix in GeometryEditor::editPolygon()
Changes in 2.1.1
- Fixed uninitialized Coordinate in TopologyException
- Added install of version.h, platform.h and timeval.h
- Memleak fix in PolygonizeGraph
- Memleak fix in OverlayOp
- Compiler warnings removal
- Cleaner w32 build
- Z interpolation in overlay operations
- Debian package build scripts
Changes in 2.1.0
- Added Polygonizer and LineMerger classes.
- python wrapper examples
- General cleanup / warnings removal
- cleaner win32 / older copilers builds
- Reduced heap allocations
- debian package builder scripts
- reduction of standard C lib headers dependency
- Z support in overlay operations.
Changes in 2.0.0
- CoordinateList renamed to CoordinateSequence, BasicCoordinateList
renamed to DefaultCoordinateSequence to reflect JTS changes.
DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
got same interface as JTS.
- Added geos/version.h defining versioning infos
- Added geos.h for quick inclusion. It will include geos/geom.h,
new geos/version.h, geos/util.h geos/io.h and geos/unload.h
(geometry input/output, exceptions, operations).
- Added a geos::version() function showing GEOS and equivalent
JTS versions as strings.
- All geometry constructors take ownership of given arguments.
GeometryFactory provides pass-by-reference geometry creators
to take care of a deep-copy.
- GeometryFactory::createMultiPoint(const CoordinateList *)
has been renamed to
GeometryFactory::createMultiPoint(const CoordinateList &)
to reflect copy semantic
- GeometryFactory: EMPTY geometry creation do now have their
own constructors taking no arguments.
- Geometry constructors taking PrecisionModel and SRID have
been dropped. You have to use GeometryFactory instead.
- WKTWriter default constructor has been dropped. You need
to initialize it with an explicit GeometryFactory