Packaging changes:
Use cmake instead of the now-deleted autotools, introducing a
regression in "make test" where the installed version is tested
instead of the build tree version.
Upstream changes:
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:
- 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 BufferOp to avoid artifacts in certain polygon buffers (#1101, Martin Davis)
- Fix IsValidOp to correctly report certain kinds of invalid LinearRings (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)
Upstream NEWS:
Changes in 3.9.0beta1
2020-11-27
- New things:
- MaximumInscribedCircle and LargestEmptyCircle (JTS-530, Paul Ramsey)
- CAPI: Fixed precision overlay operations (Sandro Santilli, Paul Ramsey)
- CAPI: GEOSPreparedNearestPoints (#1007, Sandro Santilli)
- CAPI: GEOSPreparedDistance (#1066, Sandro Santilli)
- SimpleSTRTree spatial index implementation (Paul Ramsey)
- Add support for pkg-config for GEOS C API (#1073, Mike Taves)
- 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.1
2020-xx-xx
- Bug fixes / improvements
- Stack allocate line segments in OverlapUnion (Paul Ramsey)
- Avoid returning non-empty CoordinateSequence from empty Point
(#1001, Dan Baston)
- Avoid assertion failure with MSVC 2017 / 2019 (#1002, Dan Baston)
- Remove whitespace from end of GEOSversion() output (azhi)
- Improve performance of GEOSisValid (#1008, Dan Baston)
- Avoid changing MultiLineString component order in GEOSReverse
(#1013, Dan Baston)
- Fix missing vtable for LineString and CoordinateArraySequenceFactory
(#299 and #1016, Evgen Bodunov)
- Reduce performance regression in GEOSBuffer (#1020)
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)
pkgsrc changes: revise comments about geos C vs C++ library linking in
light of unexpected libtool behavior (which defeats geos's scheme)
Upstream NEWS:
3.7.0 changes
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: GEOSGeomGetZ (#581, J Smith)
- Improvements
- Interruptible snap operation (Paul Ramsey)
- Numerous packaging, doc, and build changes
(Debian group: Bas Couwenberg, Francesco Paolo Lovergine)
(NetBSD: Greg Troxel)
- Allow static library with C API for CMake builds (#878, Dakota Hawkins)
- 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.6.2
2017-07-25
- Bug fixes / improvements
- Fix exception in UnaryUnion of collection of touching polygons (#837)
- Allow building against python 3 (#774)
- Fix build with android-ndk and other compilers (#799)
- Allows compiling with -Wpointer-bool-conversion (#638)
- Fix unhandled exception on invalid fp operation (#811)
- Fix overloaded virtual print in DirectedEdge* (#812)
- AppVeyor CI build added (#813)
- Clean up numerous MSVC warnings, notably C4275 and C4589 (#814)
- Bump CMake version to 3.0.0 (#817)
- Fix leaks in WKT parser (#830)
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
Expand on the "is using the geos C++ interface a bug" controversy.
Add osm2pgsql as a geos-C++-using package, and link to the issue where
osm2pgsql says they intend to stop depending on geos.
(Comment-only change; no PKGREVISION++.)
Upstream changes are bugfixes:
- Fix CMake configuration to allow build from released sources
package (#753)
- Fix memory leaks in single-sided buffers (#747), PlanarGraph and
tests
- Fix GeometryEditor to correctly update factory of empty geometries
(#749)
- Fix snapping of last segment of a closed linestring (#758)
- Fix memory exhaustion case in isvalid (#757)
- Fix Windows build with Visual Studio 2008 (#766)
- Fix incorrect return from prepared multipoint intersects (#764)
- Fix build against GCC 3.5.0+ (#784)
One mismatched digest found in geography/libmemphis02:
# package libmemphis02
recorded SHA1 (memphis-0.2.3.tar.gz) = dbc2f61e49b996dc9ca91df0de9a08eb7adbfa9b
calculated SHA1 (memphis-0.2.3.tar.gz) = 85993bce12c3616fcf6e7682a70b9605883edec2
No changes were made to the libmemphis02 distinfo file
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
patches/patch-include-geos-platform.h.in was applied upstream in r3902
(trunk) and r3903 (branches/3.4).
Upstream NEWS:
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-DD
- 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)
- 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)
Upstream says using the C++ API is broken; document the policy and the
list of (broken per geos rules) packages that need a revbump every
time, currently gdal-lib.
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 analisys 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)
XXX The comment in the code is wrong and using std::isnan is actually
XXX the portable approach. DragonFly and other GCC users likely need the
XXX same change
- 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
- CAPI: GEOSRelateBoundaryNodeRule
- 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
- Return up to 15 digits of precision from GEOSisValidReason_t
- 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
- Fix infinite loop in RobustDeterminant with nan/inf input
Changes in 3.2.0
- 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
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.