[geos-commits] [SCM] GEOS branch main updated. 93540f4c27b6eff81e51203f52b585a7872f884b

git at osgeo.org git at osgeo.org
Wed Apr 12 16:54:36 PDT 2023


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GEOS".

The branch, main has been updated
       via  93540f4c27b6eff81e51203f52b585a7872f884b (commit)
       via  d3d9df75e81ec3b5612936023b53bb0285942f97 (commit)
      from  03ef7e3cc1fa06017c9eb5fb35dbfc39c4844ca3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 93540f4c27b6eff81e51203f52b585a7872f884b
Author: Martin Davis <mtnclimb at gmail.com>
Date:   Wed Apr 12 16:54:08 2023 -0700

    Add geosop coverageSimplify

diff --git a/util/geosop/GeometryOp.cpp b/util/geosop/GeometryOp.cpp
index 1eb8398eb..228e6b116 100644
--- a/util/geosop/GeometryOp.cpp
+++ b/util/geosop/GeometryOp.cpp
@@ -41,6 +41,7 @@
 #include <geos/operation/buffer/OffsetCurve.h>
 #include <geos/operation/cluster/GeometryDistanceClusterFinder.h>
 #include <geos/operation/cluster/GeometryIntersectsClusterFinder.h>
+#include <geos/coverage/CoverageSimplifier.h>
 #include <geos/coverage/CoverageValidator.h>
 #include <geos/operation/linemerge/LineMerger.h>
 #include <geos/operation/distance/DistanceOp.h>
@@ -106,6 +107,14 @@ struct GeometryOpCreator {
     std::function<GeometryOp *( std::string name )> create;
 } ;
 
+std::vector<const Geometry*> toList(const std::unique_ptr<Geometry>& geom) {
+    std::vector<const Geometry*> geomList;
+    for (std::size_t i = 0; i < geom->getNumGeometries(); i++) {
+        geomList.emplace_back( geom->getGeometryN(i));
+    }
+    return geomList;
+}
+
 /*
 * Static array of operation definitions.
 * All metadata for an operation is defined here.
@@ -838,6 +847,20 @@ std::vector<GeometryOpCreator> opRegistry {
 
 //=============  category: Polygonal Coverage  ==================
 
+{"coverageSimplify", [](std::string name) { return GeometryOp::createAgg(name,
+    catCoverage, "simplify a polygonal coverage by a distance tolerance",
+    [](const std::unique_ptr<Geometry>& geom, double d) {
+        std::vector<const Geometry*> coverage = toList(geom);
+        std::vector<std::unique_ptr<Geometry>> result
+            = geos::coverage::CoverageSimplifier::simplify(coverage, d);
+        //-- convert list type (be nice to avoid this)
+        std::vector<std::unique_ptr<const Geometry>> resultList;
+        for (std::size_t i = 0; i < result.size(); i++) {
+            resultList.emplace_back( std::move(result[i]) );
+        }
+        return new Result( std::move(resultList) );
+    });
+}},
 {"coverageUnionNG", [](std::string name) { return GeometryOp::createAgg(name,
     catCoverage, "union a polygonal coverage",
     [](const std::unique_ptr<Geometry>& geom) {
@@ -853,16 +876,11 @@ std::vector<GeometryOpCreator> opRegistry {
 {"coverageValidate", [](std::string name) { return GeometryOp::createAgg(name,
     catCoverage, "validate a polygonal coverage",
     [](const std::unique_ptr<Geometry>& geom) {
-        //-- create list of input polygons
-        std::vector<const Geometry*> coverage;
-        for (std::size_t i = 0; i < geom->getNumGeometries(); i++) {
-            coverage.emplace_back( geom->getGeometryN(i));
-        }
-
+        std::vector<const Geometry*> coverage = toList(geom);
         std::vector<std::unique_ptr<Geometry>> invalidList
             = geos::coverage::CoverageValidator::validate(coverage);
 
-        //-- create GeometryCollection from result list
+        // result may contain nulls, so remove them
         std::vector<std::unique_ptr<const Geometry>> resultList;
         for (std::size_t i = 0; i < invalidList.size(); i++) {
             if (invalidList[i] != nullptr) {
@@ -1041,7 +1059,7 @@ Result::toString() {
     case typeGeomList:
        return metadata();
     }
-    return "Value for Unknonwn type";
+    return "Value for Unknown type";
 }
 
 std::string

commit d3d9df75e81ec3b5612936023b53bb0285942f97
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Wed Apr 12 16:03:50 2023 -0700

    Finish up marking since on CAPI, closes #854

diff --git a/capi/geos_c.h.in b/capi/geos_c.h.in
index a1cb103a0..bc583020e 100644
--- a/capi/geos_c.h.in
+++ b/capi/geos_c.h.in
@@ -310,17 +310,20 @@ typedef void (GEOSInterruptCallback)(void);
 * \param cb Callback function to invoke
 * \return the previously configured callback
 * \see GEOSInterruptCallback
+* \since 3.4
 */
 extern GEOSInterruptCallback GEOS_DLL *GEOS_interruptRegisterCallback(
     GEOSInterruptCallback* cb);
 
 /**
 * Request safe interruption of operations
+* \since 3.4
 */
 extern void GEOS_DLL GEOS_interruptRequest(void);
 
 /**
 * Cancel a pending interruption request
+* \since 3.4
 */
 extern void GEOS_DLL GEOS_interruptCancel(void);
 
@@ -2005,6 +2008,7 @@ extern void GEOS_DLL GEOSFree_r(
 * This function does not have a reentrant variant and is
 * available if `GEOS_USE_ONLY_R_API` is defined.
 * \return version string
+* \since 2.2
 */
 extern const char GEOS_DLL *GEOSversion(void);
 
@@ -2032,6 +2036,7 @@ extern const char GEOS_DLL *GEOSversion(void);
 *
 * \param notice_function Handle notice messages
 * \param error_function Handle error messages
+* \since 2.2
 */
 extern void GEOS_DLL initGEOS(
     GEOSMessageHandler notice_function,
@@ -2040,6 +2045,7 @@ extern void GEOS_DLL initGEOS(
 /**
 * For non-reentrant code, call when all GEOS operations are complete,
 * cleans up global resources.
+* \since 3.1
 */
 extern void GEOS_DLL finishGEOS(void);
 
@@ -2048,6 +2054,7 @@ extern void GEOS_DLL finishGEOS(void);
 * as GEOSWKBWriter_write(),
 * GEOSWKBWriter_writeHEX() and GEOSWKTWriter_write(), etc.
 * \param buffer The memory to free
+* \since 3.1
 */
 extern void GEOS_DLL GEOSFree(void *buffer);
 
@@ -2065,6 +2072,7 @@ extern void GEOS_DLL GEOSFree(void *buffer);
 * \param size number of coordinates in the sequence
 * \param dims dimensionality of the coordinates (2, 3 or 4)
 * \return the sequence or NULL on exception
+* \since 2.2
 */
 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
 
@@ -2122,12 +2130,14 @@ extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double
 * Clone a coordinate sequence.
 * \param s the coordinate sequence to clone
 * \return a copy of the coordinate sequence or NULL on exception
+* \since 2.2
 */
 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(const GEOSCoordSequence* s);
 
 /**
 * Destroy a coordinate sequence, freeing all memory.
 * \param s the coordinate sequence to destroy
+* \since 2.2
 */
 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
 
@@ -2137,6 +2147,7 @@ extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
 * \param idx the index of the coordinate to alter, zero based
 * \param val the value to set the ordinate to
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
     unsigned int idx, double val);
@@ -2146,6 +2157,7 @@ extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
 * \param idx the index of the coordinate to alter, zero based
 * \param val the value to set the ordinate to
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
     unsigned int idx, double val);
@@ -2155,6 +2167,7 @@ extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
 * \param idx the index of the coordinate to alter, zero based
 * \param val the value to set the ordinate to
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
     unsigned int idx, double val);
@@ -2190,6 +2203,7 @@ extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s,
 * \param dim the dimension number of the ordinate to alter, zero based
 * \param val the value to set the ordinate to
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
     unsigned int idx, unsigned int dim, double val);
@@ -2200,6 +2214,7 @@ extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
 * \param idx the index of the coordinate to alter, zero based
 * \param val pointer where ordinate value will be placed
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
     unsigned int idx, double *val);
@@ -2210,6 +2225,7 @@ extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
 * \param idx the index of the coordinate to alter, zero based
 * \param val pointer where ordinate value will be placed
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
     unsigned int idx, double *val);
@@ -2219,6 +2235,7 @@ extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
 * \param idx the index of the coordinate to alter, zero based
 * \param val pointer where ordinate value will be placed
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
     unsigned int idx, double *val);
@@ -2254,6 +2271,7 @@ extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
 * \param[in] dim the dimension number of the ordinate to read, zero based
 * \param[out] val pointer where ordinate value will be placed
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
     unsigned int idx, unsigned int dim, double *val);
@@ -2263,6 +2281,7 @@ extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
 * \param[in] s the coordinate sequence
 * \param[out] size pointer where size value will be placed
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_getSize(
     const GEOSCoordSequence* s,
@@ -2273,6 +2292,7 @@ extern int GEOS_DLL GEOSCoordSeq_getSize(
 * \param[in] s the coordinate sequence
 * \param[out] dims pointer where dimension value will be placed
 * \return 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
     const GEOSCoordSequence* s,
@@ -2306,6 +2326,7 @@ extern int GEOS_DLL GEOSCoordSeq_isCCW(
 * \param s Input coordinate sequence, ownership passes to the geometry
 * \return A newly allocated point geometry. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
 
@@ -2334,6 +2355,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint(void);
 * \param s Input coordinate sequence, ownership passes to the geometry
 * \return A newly allocated linear ring geometry. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
 
@@ -2342,6 +2364,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
 * \param s Input coordinate sequence, ownership passes to the geometry
 * \return A newly allocated linestring geometry. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
 
@@ -2374,6 +2397,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon(void);
 *       The caller **retains ownership** of the containing array,
 *       but the ownership of the pointed-to objects is transferred
 *       to the returned \ref GEOSGeometry.
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(
     GEOSGeometry* shell,
@@ -2391,6 +2415,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(
 *       The caller **retains ownership** of the containing array,
 *       but the ownership of the pointed-to objects is transferred
 *       to the returned \ref GEOSGeometry.
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(
     int type,
@@ -2426,12 +2451,14 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createRectangle(
 * \param g The geometry to copy
 * \return A newly allocated geometry. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
 
 /**
 * Release the memory associated with a geometry.
 * \param g The geometry to be destroyed.
+* \since 2.2
 */
 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
 
@@ -2450,6 +2477,7 @@ extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
 * \return A string with the geometry type.
 * Caller must free with GEOSFree().
 * NULL on exception.
+* \since 2.2
 */
 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
 
@@ -2457,6 +2485,7 @@ extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
 * Returns the \ref GEOSGeomTypeId number for this geometry.
 * \param g Input geometry
 * \return The geometry type number, or -1 on exception.
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
 
@@ -2464,6 +2493,7 @@ extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
 * Returns the "spatial reference id" (SRID) for this geometry.
 * \param g Input geometry
 * \return SRID number or 0 if unknown / not set.
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
 
@@ -2487,6 +2517,7 @@ extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
 * \param g Input geometry
 * \return Number of direct children in this collection
 * \warning For GEOS < 3.2 this function may crash when fed simple geometries
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
 
@@ -2503,6 +2534,7 @@ extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
 * \note Up to GEOS 3.2.0 the input geometry must be a Collection, in
 *       later versions it doesn't matter (getGeometryN(0) for a single will
 *       return the input).
+* \since 2.2
 */
 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
     const GEOSGeometry* g,
@@ -2524,6 +2556,7 @@ extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
 * an exception otherwise.
 * \param g Input Polygon geometry
 * \return Number of interior rings, -1 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
 
@@ -2532,6 +2565,7 @@ extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
 * an exception otherwise.
 * \param g Input LineString geometry
 * \return Number of points, -1 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
 
@@ -2541,6 +2575,7 @@ extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
 * \param[in] g Input Point geometry
 * \param[out] x Pointer to hold return value
 * \returns 1 on success, 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
 
@@ -2550,6 +2585,7 @@ extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
 * \param[in] g Input Point geometry
 * \param[out] y Pointer to hold return value
 * \returns 1 on success, 0 on exception
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
 
@@ -2582,6 +2618,7 @@ extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
 * \param g Input Polygon geometry
 * \param n Index of the desired ring
 * \return LinearRing geometry. Owned by parent geometry, do not free. NULL on exception.
+* \since 2.2
 */
 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
     const GEOSGeometry* g,
@@ -2593,6 +2630,7 @@ extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
 *       it must NOT be destroyed directly.
 * \param g Input Polygon geometry
 * \return LinearRing geometry. Owned by parent geometry, do not free. NULL on exception.
+* \since 2.2
 */
 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
     const GEOSGeometry* g);
@@ -2602,6 +2640,7 @@ extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
 * of any type.
 * \param g Input geometry
 * \return Number of points in the geometry. -1 on exception.
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGetNumCoordinates(
     const GEOSGeometry* g);
@@ -2613,6 +2652,7 @@ extern int GEOS_DLL GEOSGetNumCoordinates(
 * the parent geometry.
 * \param g Input geometry
 * \return Coordinate sequence or NULL on exception.
+* \since 2.2
 */
 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
     const GEOSGeometry* g);
@@ -2627,6 +2667,7 @@ extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
 * \see geos::geom::Dimension::DimensionType
 * \param g Input geometry
 * \return The dimensionality
+* \since 2.2
 */
 extern int GEOS_DLL GEOSGeom_getDimensions(
     const GEOSGeometry* g);
@@ -2712,6 +2753,7 @@ extern int GEOS_DLL GEOSGeom_getExtent(
 * \return A Point geometry.
 *         Caller must free with GEOSGeom_destroy()
 *         NULL on exception.
+* \since 3.3
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
 
@@ -2721,6 +2763,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
 * \return A Point geometry.
 *         Caller must free with GEOSGeom_destroy()
 *         NULL on exception.
+* \since 3.3
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(const GEOSGeometry *g);
 
@@ -2730,6 +2773,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(const GEOSGeometry *g);
 * \return A Point geometry.
 *         Caller must free with GEOSGeom_destroy()
 *         NULL on exception.
+* \since 3.3
 */
 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
 
@@ -2740,6 +2784,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
 * has no boundary or interior.
 * \param g The geometry to test
 * \return 1 on true, 0 on false, 2 on exception
+* \since 2.2
 */
 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
 
@@ -2749,6 +2794,7 @@ extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
 * with start and end point being identical.
 * \param g The geometry to test
 * \return 1 on true, 0 on false, 2 on exception
+* \since 2.2
 */
 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
 
@@ -2756,6 +2802,7 @@ extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
 * Tests whether the input geometry has Z coordinates.
 * \param g The geometry to test
 * \return 1 on true, 0 on false, 2 on exception
+* \since 2.2
 */
 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
 
@@ -2774,6 +2821,7 @@ extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
 * with the start and end points being the same.
 * \param g The geometry to test
 * \return 1 on true, 0 on false, 2 on exception
+* \since 3.3
 */
 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
 
@@ -2789,6 +2837,7 @@ extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
 * Set the "spatial reference id" (SRID) for this geometry.
 * \param g Input geometry
 * \param SRID SRID number or 0 for unknown SRID.
+* \since 2.2
 */
 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
 
@@ -2818,6 +2867,7 @@ extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
 * Use before calling \ref GEOSEqualsExact to avoid false "not equal" results.
 * \param g Input geometry
 * \return 0 on success or -1 on exception
+* \since 3.0
 */
 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
 
@@ -2835,6 +2885,7 @@ and geometric quality.
 * linestrings. A "simple" linestring has no self-intersections.
 * \param g The geometry to test
 * \return 1 on true, 0 on false, 2 on exception
+* \since 2.2
 */
 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
 
@@ -2849,6 +2900,7 @@ extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
 * \param g The geometry to test
 * \return 1 on true, 0 on false, 2 on exception
 * \see geos::operation::valid::isValidOp
+* \since 2.2
 */
 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
 
@@ -2857,7 +2909,7 @@ extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
 * "Valid Geometry" string otherwise, or NULL on exception.
 * \param g The geometry to test
 * \return A string with the reason, NULL on exception.
-          Caller must GEOSFree() their result.
+*         Caller must GEOSFree() their result.
 *
 * \since 3.1
 */
@@ -3023,6 +3075,7 @@ extern GEOSGeometry GEOS_DLL *GEOSRemoveRepeatedPoints(
 * \param[in] g Input geometry
 * \param[out] area Pointer to be filled in with area result
 * \return 1 on success, 0 on exception.
+* \since 2.2
 */
 extern int GEOS_DLL GEOSArea(
     const GEOSGeometry* g,
@@ -3033,6 +3086,7 @@ extern int GEOS_DLL GEOSArea(
 * \param[in] g Input geometry
 * \param[out] length Pointer to be filled in with length result
 * \return 1 on success, 0 on exception.
+* \since 2.2
 */
 extern int GEOS_DLL GEOSLength(
     const GEOSGeometry* g,
@@ -3045,6 +3099,7 @@ extern int GEOS_DLL GEOSLength(
 * \param[in] g Input geometry
 * \param[out] length Pointer to be filled in with length result
 * \return 1 on success, 0 on exception.
+* \since 3.3
 */
 extern int GEOS_DLL GEOSGeomGetLength(
     const GEOSGeometry *g,
@@ -3065,6 +3120,7 @@ extern int GEOS_DLL GEOSGeomGetLength(
 * \param[in] g2 Input geometry
 * \param[out] dist Pointer to be filled in with distance result
 * \return 1 on success, 0 on exception.
+* \since 2.2
 */
 extern int GEOS_DLL GEOSDistance(
     const GEOSGeometry* g1,
@@ -3128,6 +3184,7 @@ extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
 * \param[out] dist Pointer to be filled in with distance result
 * \return 1 on success, 0 on exception.
 * \see geos::algorithm::distance::DiscreteHausdorffDistance
+* \since 3.2
 */
 extern int GEOS_DLL GEOSHausdorffDistance(
     const GEOSGeometry *g1,
@@ -3146,6 +3203,7 @@ extern int GEOS_DLL GEOSHausdorffDistance(
 * \param[out] dist Pointer to be filled in with distance result
 * \return 1 on success, 0 on exception.
 * \see geos::algorithm::distance::DiscreteHausdorffDistance
+* \since 3.2
 */
 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
     const GEOSGeometry *g1,
@@ -3209,6 +3267,7 @@ extern int GEOS_DLL GEOSFrechetDistanceDensify(
 * \return distance along line that point projects to, -1 on exception
 *
 * \note Line parameter must be a LineString.
+* \since 3.2
 */
 extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
                                    const GEOSGeometry* point);
@@ -3222,6 +3281,7 @@ extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
 * \param d distance from start of line to created point
 * \return The point \ref GEOSGeometry that is distance from the start of line.
 * Caller takes ownership of returned geometry.
+* \since 3.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
                                               double d);
@@ -3234,6 +3294,7 @@ extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
 * \param point the point to project
 * \return The proportion of the overall line length that the projected
 * point falls at.
+* \since 3.2
 */
 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
                                              const GEOSGeometry* point);
@@ -3245,6 +3306,7 @@ extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
 * \param proportion The proportion from the start of line to created point
 * \return The point \ref GEOSGeometry that is distance from the start of line.
 * Caller takes ownership of returned geometry.
+* \since 3.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
     const GEOSGeometry *line,
@@ -3267,6 +3329,7 @@ extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
 * \return A newly allocated geometry of the intersection. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::overlayng::OverlayNG
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -3294,6 +3357,7 @@ extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const
 * \return A newly allocated geometry of the difference. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::overlayng::OverlayNG
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSDifference(
     const GEOSGeometry* ga,
@@ -3328,6 +3392,7 @@ extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec(
 * \return A newly allocated geometry of the symmetric difference. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::overlayng::OverlayNG
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(
     const GEOSGeometry* ga,
@@ -3362,6 +3427,7 @@ extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec(
 * \return A newly allocated geometry of the union. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::overlayng::OverlayNG
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSUnion(
     const GEOSGeometry* ga,
@@ -3502,6 +3568,7 @@ extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(
 *        segments provides a more "precise" buffer at the expense of size.
 * \return A \ref GEOSGeometry of the buffered result.
 * NULL on exception. Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
     double width, int quadsegs);
@@ -3664,6 +3731,7 @@ extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
 * \param g The geometry to calculate an envelope for
 * \return A newly allocated polygonal envelope or point. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
 
@@ -3678,6 +3746,7 @@ extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
 * \param g The input geometry
 * \return A newly allocated geometry of the boundary. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
 
@@ -3688,6 +3757,7 @@ extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
 * \return A newly allocated geometry of the convex hull. NULL on exception.
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::overlayng::OverlayNG
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
 
@@ -3795,6 +3865,8 @@ extern GEOSGeometry GEOS_DLL *GEOSConcaveHullByLength(
 * \see geos::algorithm::hull::ConcaveHullOfPolygons
 * \see GEOSConcaveHull
 * \see GEOSConvexHull
+*
+* \since 3.11
 */
 extern GEOSGeometry GEOS_DLL *GEOSConcaveHullOfPolygons(
     const GEOSGeometry* g,
@@ -3962,6 +4034,8 @@ extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
 * \return A point that is inside the input
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::algorithm::InteriorPointArea
+*
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
 
@@ -3971,6 +4045,8 @@ extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
 * \return A point at the center of mass of the input
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::algorithm::Centroid
+*
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
 
@@ -4119,6 +4195,8 @@ extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
 * \return The polygonal output geometry.
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::polygonize::Polygonizer
+*
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
     const GEOSGeometry * const geoms[],
@@ -4222,6 +4300,7 @@ extern GEOSGeometry GEOS_DLL *GEOSDensify(
 * \return The merged linework
 * Caller is responsible for freeing with GEOSGeom_destroy().
 * \see geos::operation::linemerge::LineMerger
+* \since 2.2
 */
 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
 
@@ -4432,6 +4511,7 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision(
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::disjoint
+* \since 2.2
 */
 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4442,6 +4522,7 @@ extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::touches
+* \since 2.2
 */
 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4451,6 +4532,7 @@ extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2)
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::intersects
+* \since 2.2
 */
 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4461,6 +4543,7 @@ extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry*
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::crosses
+* \since 2.2
 */
 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4471,6 +4554,7 @@ extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2)
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::within
+* \since 2.2
 */
 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4480,6 +4564,7 @@ extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::contains
+* \since 2.2
 */
 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4490,6 +4575,7 @@ extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::overlaps
+* \since 2.2
 */
 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4499,6 +4585,7 @@ extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2
 * \param g2 Input geometry
 * \returns 1 on true, 0 on false, 2 on exception
 * \see geos::geom::Geometry::equals
+* \since 2.2
 */
 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
 
@@ -4541,6 +4628,7 @@ extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g
 * \param tolerance Tolerance to determine vertex equality
 * \returns 1 on true, 0 on false, 2 on exception
 * \see GEOSNormalize()
+* \since 3.0
 */
 extern char GEOS_DLL GEOSEqualsExact(
     const GEOSGeometry* g1,
@@ -4574,6 +4662,7 @@ extern char GEOS_DLL GEOSEqualsIdentical(
 * \param g2 Second geometry in pair
 * \param pat DE9IM pattern to check
 * \return 1 on true, 0 on false, 2 on exception
+* \since 2.2
 */
 extern char GEOS_DLL GEOSRelatePattern(
     const GEOSGeometry* g1,
@@ -4587,6 +4676,7 @@ extern char GEOS_DLL GEOSRelatePattern(
 * \param g2 Second geometry in pair
 * \return DE9IM string. Caller is responsible for freeing with GEOSFree().
 *         NULL on exception
+* \since 2.2
 */
 extern char GEOS_DLL *GEOSRelate(
     const GEOSGeometry* g1,
@@ -5033,8 +5123,8 @@ extern void GEOS_DLL GEOSSTRtree_iterate(
  * \return 0 if the item was not removed;
  *         1 if the item was removed;
  *         2 if an exception occurred
-*
-* \since 3.2
+ *
+ * \since 3.2
  */
 extern char GEOS_DLL GEOSSTRtree_remove(
     GEOSSTRtree *tree,
@@ -5117,12 +5207,14 @@ extern int GEOS_DLL GEOSOrientationIndex(
 /**
 * Allocate a new \ref GEOSWKTReader.
 * \returns a new reader. Caller must free with GEOSWKTReader_destroy()
+* \since 3.0
 */
 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(void);
 
 /**
 * Free the memory associated with a \ref GEOSWKTReader.
 * \param reader The reader to destroy.
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
 
@@ -5132,6 +5224,7 @@ extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
 * \param reader A WKT reader object, caller retains ownership
 * \param wkt The WKT string to parse, caller retains ownership
 * \return A \ref GEOSGeometry, caller to free with GEOSGeom_destroy())
+* \since 3.0
 */
 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(
     GEOSWKTReader* reader,
@@ -5154,12 +5247,14 @@ extern void GEOS_DLL GEOSWKTReader_setFixStructure(
 /**
 * Allocate a new \ref GEOSWKTWriter.
 * \returns a new writer. Caller must free with GEOSWKTWriter_destroy()
+* \since 3.0
 */
 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(void);
 
 /**
 * Free the memory associated with a \ref GEOSWKTWriter.
 * \param writer The writer to destroy.
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKTWriter_destroy(
     GEOSWKTWriter* writer);
@@ -5171,6 +5266,7 @@ extern void GEOS_DLL GEOSWKTWriter_destroy(
 * \param g Input geometry
 * \return A newly allocated string containing the WKT output or NULL on exception.
 * Caller must free with GEOSFree()
+* \since 3.0
 */
 extern char GEOS_DLL *GEOSWKTWriter_write(
     GEOSWKTWriter* writer,
@@ -5247,12 +5343,14 @@ extern void GEOS_DLL GEOSWKTWriter_setOld3D(
 /**
 * Allocate a new \ref GEOSWKBReader.
 * \returns a new reader. Caller must free with GEOSWKBReader_destroy()
+* \since 3.0
 */
 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(void);
 
 /**
 * Free the memory associated with a \ref GEOSWKBReader.
 * \param reader The reader to destroy.
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKBReader_destroy(
     GEOSWKBReader* reader);
@@ -5275,6 +5373,7 @@ extern void GEOS_DLL GEOSWKBReader_setFixStructure(
 * \param wkb A pointer to the buffer to read from
 * \param size The number of bytes of data in the buffer
 * \return A \ref GEOSGeometry built from the WKB, or NULL on exception.
+* \since 3.0
 */
 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(
     GEOSWKBReader* reader,
@@ -5287,6 +5386,7 @@ extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(
 * \param hex A pointer to the buffer to read from
 * \param size The number of bytes of data in the buffer
 * \return A \ref GEOSGeometry built from the HEX WKB, or NULL on exception.
+* \since 3.0
 */
 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(
     GEOSWKBReader* reader,
@@ -5298,12 +5398,14 @@ extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(
 /**
 * Allocate a new \ref GEOSWKBWriter.
 * \returns a new writer. Caller must free with GEOSWKBWriter_destroy()
+* \since 3.0
 */
 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(void);
 
 /**
 * Free the memory associated with a \ref GEOSWKBWriter.
 * \param writer The writer to destroy.
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
 
@@ -5314,6 +5416,7 @@ extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
 * \param g Geometry to convert to WKB
 * \param size Pointer to write the size of the final output WKB to
 * \return The WKB representation. Caller must free with GEOSFree()
+* \since 3.0
 */
 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
     GEOSWKBWriter* writer,
@@ -5327,6 +5430,7 @@ extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
 * \param g Geometry to convert to WKB
 * \param size Pointer to write the size of the final output WKB to
 * \return The HEX WKB representation. Caller must free with GEOSFree()
+* \since 3.0
 */
 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
     GEOSWKBWriter* writer,
@@ -5339,6 +5443,7 @@ extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
 * Return current number of dimensions.
 * \param writer The writer to read from.
 * \return Number of dimensions (2, 3, or 4)
+* \since 3.0
 */
 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
     const GEOSWKBWriter* writer);
@@ -5348,6 +5453,7 @@ extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
 * 2, 3, or 4 dimensions.
 * \param writer The writer to read from.
 * \param newDimension The dimensionality desired
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(
     GEOSWKBWriter* writer,
@@ -5360,6 +5466,7 @@ extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(
 * The return value is a member of \ref GEOSWKBByteOrders.
 * \param writer The writer to read byte order from
 * \return The current byte order
+* \since 3.0
 */
 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
     const GEOSWKBWriter* writer);
@@ -5369,6 +5476,7 @@ extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
 * a value from \ref GEOSWKBByteOrders enum.
 * \param writer The writer to set byte order on
 * \param byteOrder Desired byte order
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
     GEOSWKBWriter* writer,
@@ -5406,6 +5514,7 @@ extern void GEOS_DLL GEOSWKBWriter_setFlavor(
 /**
 * Read the current SRID embedding value from the writer.
 * \param writer The writer to check SRID value on
+* \since 3.0
 */
 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
     const GEOSWKBWriter* writer);
@@ -5415,6 +5524,7 @@ extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
 * Many WKB readers do not support SRID values, use with caution.
 * \param writer The writer to set SRID output on
 * \param writeSRID Set to 1 to include SRID, 0 otherwise
+* \since 3.0
 */
 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
     GEOSWKBWriter* writer,

-----------------------------------------------------------------------

Summary of changes:
 capi/geos_c.h.in           | 116 +++++++++++++++++++++++++++++++++++++++++++--
 util/geosop/GeometryOp.cpp |  34 +++++++++----
 2 files changed, 139 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
GEOS


More information about the geos-commits mailing list