Changeset: 3d083bcbf9a1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3d083bcbf9a1
Modified Files:
        geom/monetdb5/geom.c
Branch: sfcgal
Log Message:

Preserve the SRID, fix the if clause


diffs (54 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -5202,12 +5202,14 @@ BATgroupWKBWKBtoWKB(bat *outBAT_id, BAT 
 
             // add one more segment for each following row
             for (i = start; i < end; i++) {
+                bit empty;
                 if (aWKBs[gid] == NULL) {
                     aWKBs[gid] = (wkb *) BUNtail(bBAT_iter, i);
                     continue;
                 }
 
                 bWKB = (wkb *) BUNtail(bBAT_iter, i);
+                wkbIsEmpty(&empty, &bWKB);
 
                 if ( (msg = (*func)(&outWKBs[gid], &aWKBs[gid], &bWKB)) != 
MAL_SUCCEED ) {
                     GDKfree(aWKBs);
@@ -5391,7 +5393,7 @@ wkbCollectAppend(wkb **out, wkb **geom1W
        GEOSGeom outGeometry, geom1Geometry, geom2Geometry;
     GEOSGeometry **geomGeometries = NULL;
        str err = MAL_SUCCEED;
-    int i, type, geometry1Type, geometry2Type, num_geoms = 0;
+    int i, type, geometry1Type, geometry2Type, num_geoms = 0, srid;
 
        if (wkb_isnil(*geom1WKB) || wkb_isnil(*geom2WKB)) {
                if ((*out = wkbNULLcopy()) == NULL)
@@ -5409,14 +5411,15 @@ wkbCollectAppend(wkb **out, wkb **geom1W
             GEOSGeom_destroy(geom2Geometry);
         throw(MAL, "geom.collect" , "wkb2geos failed");
     }
+    srid = GEOSGetSRID(geom2Geometry);
 
     //make sure the geometries are of the same srid
-    if ((GEOSisEmpty(geom1Geometry) != 1) && GEOSGetSRID(geom1Geometry) != 
GEOSGetSRID(geom2Geometry)) {
+    if ((GEOSisEmpty(geom1Geometry) == 0) && (GEOSGetSRID(geom1Geometry) != 
GEOSGetSRID(geom2Geometry))) {
         err = createException(MAL, "geom.collect", "Geometries of different 
SRID");
     } else { 
         geometry1Type = GEOSGeomTypeId(geom1Geometry);
         geometry2Type = GEOSGeomTypeId(geom2Geometry);
-        if ( (GEOSisEmpty(geom1Geometry) != 1) &&  (geometry1Type != 
geometry2Type)) {
+        if ( (GEOSisEmpty(geom1Geometry) == 0) &&  (geometry1Type != 
geometry2Type)) {
             type = geometry1Type;
             switch (geometry1Type + 1) {
                 case wkbMultiPoint_mdb:
@@ -5481,7 +5484,7 @@ wkbCollectAppend(wkb **out, wkb **geom1W
         if ( (outGeometry = GEOSGeom_createCollection(type, geomGeometries, 
num_geoms+1)) == NULL ) {
             err = createException(MAL, "geom.Collect", 
"GEOSGeom_createCollection failed!!!");
         } else {
-               GEOSSetSRID(outGeometry, GEOSGetSRID(geom1Geometry));
+               GEOSSetSRID(outGeometry, srid);
             *out = geos2wkb(outGeometry);
         }
     }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to