[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