[geos-commits] r3840 - in trunk: src/geom tests/unit/io

svn_geos at osgeo.org svn_geos at osgeo.org
Mon Jul 15 08:21:39 PDT 2013


Author: strk
Date: 2013-07-15 08:21:39 -0700 (Mon, 15 Jul 2013)
New Revision: 3840

Modified:
   trunk/src/geom/GeometryCollection.cpp
   trunk/tests/unit/io/WKBWriterTest.cpp
Log:
Drop SRID from geometrycollection elements (#583)

Modified: trunk/src/geom/GeometryCollection.cpp
===================================================================
--- trunk/src/geom/GeometryCollection.cpp	2013-07-12 12:37:35 UTC (rev 3839)
+++ trunk/src/geom/GeometryCollection.cpp	2013-07-15 15:21:39 UTC (rev 3840)
@@ -52,6 +52,8 @@
 	for(size_t i=0; i<ngeoms; ++i)
 	{
 		(*geometries)[i]=(*gc.geometries)[i]->clone();
+    // Drop SRID from inner geoms
+		(*geometries)[i]->setSRID(0);
 	}
 }
 
@@ -68,6 +70,13 @@
 		return;
 	}
 	geometries=newGeoms;
+
+  // Drop SRID from inner geoms
+	size_t ngeoms=geometries->size();
+	for(size_t i=0; i<ngeoms; ++i)
+	{
+		(*geometries)[i]->setSRID(0);
+	}
 }
 
 /*

Modified: trunk/tests/unit/io/WKBWriterTest.cpp
===================================================================
--- trunk/tests/unit/io/WKBWriterTest.cpp	2013-07-12 12:37:35 UTC (rev 3839)
+++ trunk/tests/unit/io/WKBWriterTest.cpp	2013-07-15 15:21:39 UTC (rev 3840)
@@ -36,8 +36,8 @@
 			:
 			pm(1000.0),
 			gf(&pm),
-			wktreader(&gf),
-            wkbreader(gf)
+      wktreader(&gf),
+      wkbreader(gf)
 		{}
 
 	};
@@ -132,6 +132,31 @@
             delete geom;
     }
 
+	// 4 - Test that SRID is output only once
+  // See http://trac.osgeo.org/geos/ticket/583
+	template<>
+	template<>
+	void object::test<4>()
+	{         
+    typedef geos::geom::Geometry Geom;
+    typedef std::vector<Geom *> GeomVect;
+    GeomVect *geoms = new GeomVect;
+    geoms->push_back( wktreader.read("POLYGON((0 0,1 0,1 1,0 1,0 0))") );
+    geoms->back()->setSRID(4326);
+    Geom *geom = gf.createGeometryCollection(geoms);
+    std::stringstream result_stream;
 
+    wkbwriter.setOutputDimension( 2 );
+    wkbwriter.setByteOrder( 1 );
+    wkbwriter.setIncludeSRID( 1 );
+    wkbwriter.writeHEX( *geom, result_stream );
+    delete geom;
+
+    std::string actual = result_stream.str();
+    ensure_equals( actual, "0107000000010000000103000000010000000500000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F000000000000F03F0000000000000000000000000000F03F00000000000000000000000000000000");
+
+  }
+
+
 } // namespace tut
 



More information about the geos-commits mailing list