[geos-commits] r3841 - in branches/3.3: src/geom tests/unit/io
svn_geos at osgeo.org
svn_geos at osgeo.org
Mon Jul 15 08:30:21 PDT 2013
Author: strk
Date: 2013-07-15 08:30:21 -0700 (Mon, 15 Jul 2013)
New Revision: 3841
Modified:
branches/3.3/src/geom/GeometryCollection.cpp
branches/3.3/tests/unit/io/WKBWriterTest.cpp
Log:
Drop SRID from geometrycollection elements (#583)
Modified: branches/3.3/src/geom/GeometryCollection.cpp
===================================================================
--- branches/3.3/src/geom/GeometryCollection.cpp 2013-07-15 15:21:39 UTC (rev 3840)
+++ branches/3.3/src/geom/GeometryCollection.cpp 2013-07-15 15:30:21 UTC (rev 3841)
@@ -53,6 +53,8 @@
for(size_t i=0; i<ngeoms; ++i)
{
(*geometries)[i]=(*gc.geometries)[i]->clone();
+ // Drop SRID from inner geoms
+ (*geometries)[i]->setSRID(0);
}
}
@@ -69,6 +71,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: branches/3.3/tests/unit/io/WKBWriterTest.cpp
===================================================================
--- branches/3.3/tests/unit/io/WKBWriterTest.cpp 2013-07-15 15:21:39 UTC (rev 3840)
+++ branches/3.3/tests/unit/io/WKBWriterTest.cpp 2013-07-15 15:30:21 UTC (rev 3841)
@@ -37,8 +37,8 @@
:
pm(1000.0),
gf(&pm),
- wktreader(&gf),
- wkbreader(gf)
+ wktreader(&gf),
+ wkbreader(gf)
{}
};
@@ -133,6 +133,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