[geos-devel] Re: GEOS / SRID / WKB
strk at refractions.net
strk at refractions.net
Thu Feb 2 05:17:17 EST 2006
On Thu, Feb 02, 2006 at 01:26:33AM -0700, Charlie Savage wrote:
> Hi Strk,
>
> Yes, that sounds like a good way of doing it. Is this planned for the
> near future, or should I put something together if I need it?
No plans for near future.
I think that should also include support for M, and
GEOS is not ready for that yet.
> What do you think of saving the SRID on input (i.e., accepting
> extensions)? That's the part that I need at the moment.
The Geometry class provides a setUserData/getUserData mechanism
for extended informations to be added to a Geometry.
Maybe that's a better way to handle this, as the setSRID/getSRID
methods have been marked as deprecated.
--strk;
>
> Thanks,
>
> Charlie
>
> strk at refractions.net wrote:
> >Charlie, we're playing dirty here, even for Z values.
> >One thing is accepting "extensions", another thing is spitting them out.
> >Z,M and SRID flags are postgis-specific.
> >The next update on OGC dox will define a different way to express
> >Z and M for example, and won't say anything about SRID.
> >
> >The most correct way to support multiple different specs
> >would be to provide a method to specify which one to use.
> >
> >For example:
> >
> > WKBWriter writer;
> > writer.setFormat(DIALECT);
> > writer.write(geom);
> >
> >Same would apply to WKBReader and to WKT reader/writer.
> >
> >--strk;
> >
> >On Wed, Feb 01, 2006 at 06:50:07PM -0700, Charlie Savage wrote:
> >
> >>I'd like to be able to read/write SRID information from GEOS using the
> >>WKB Reader/Writer. Currently the WKBReader reads the SRID value in an
> >>extended WKB format, but then tosses it away. Attached is a patch that
> >>saves the SRID value by calling setSRID on the newly created geometry.
> >>
> >>It would also be nice if WKBWriter could output SRID values. Looking
> >>through the code, it would be easy enough to write this information
> >>out. However, if a geometry has an SRID, the output WKB value would be
> >>one byte longer plus have an SRID flag in the geomtype byte. So this
> >>would break existing code that reads wkb values if a geometry has an
> >>SRID. I'm not sure if this is an issue or not, since I see the SRID
> >>field on a geometry is not documented. Is this a frequently used
> >>feature? An alternative of course would be having a separate method,
> >>maybe called writeExtended or some such thing.
> >>
> >>Thanks,
> >>
> >>Charlie
> >>
> >
> >
> >>Index: source/io/WKBReader.cpp
> >>===================================================================
> >>RCS file: /home/cvs/postgis/geos/source/io/WKBReader.cpp,v
> >>retrieving revision 1.15
> >>diff -u -r1.15 WKBReader.cpp
> >>--- source/io/WKBReader.cpp 20 Jan 2006 00:59:55 -0000 1.15
> >>+++ source/io/WKBReader.cpp 2 Feb 2006 01:44:16 -0000
> >>@@ -230,31 +230,43 @@
> >> cout<<"WKB hasSRID: "<<hasZ<<endl;
> >> #endif
> >>
> >>- if (hasSRID) dis.readInt(); // skip SRID
> >>-
> >>+ int srid = -1;
> >>+ if (hasSRID) srid = dis.readInt(); // read SRID
> >>
> >> // allocate space for ordValues
> >> if ( ordValues.size() < inputDimension )
> >> ordValues.resize(inputDimension);
> >>
> >>+ Geometry * result;
> >>
> >> switch (geometryType) {
> >> case WKBConstants::wkbPoint :
> >>- return readPoint();
> >>+ result = readPoint();
> >>+ break;
> >> case WKBConstants::wkbLineString :
> >>- return readLineString();
> >>+ result = readLineString();
> >>+ break;
> >> case WKBConstants::wkbPolygon :
> >>- return readPolygon();
> >>+ result = readPolygon();
> >>+ break;
> >> case WKBConstants::wkbMultiPoint :
> >>- return readMultiPoint();
> >>+ result = readMultiPoint();
> >>+ break;
> >> case WKBConstants::wkbMultiLineString :
> >>- return readMultiLineString();
> >>+ result = readMultiLineString();
> >>+ break;
> >> case WKBConstants::wkbMultiPolygon :
> >>- return readMultiPolygon();
> >>+ result = readMultiPolygon();
> >>+ break;
> >> case WKBConstants::wkbGeometryCollection :
> >>- return readGeometryCollection();
> >>+ result = readGeometryCollection();
> >>+ break;
> >>+ default:
> >>+ throw new ParseException("Unknown WKB type " +
> >>geometryType);
> >> }
> >>- throw new ParseException("Unknown WKB type " + geometryType);
> >>+
> >>+ result->setSRID(srid);
> >>+ return result;
> >> }
> >>
> >> Point *
> >>
> >>
> >
> >
> >
> >
> >
> _______________________________________________
> geos-devel mailing list
> geos-devel at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel
--
+----------------------------------------+
| Fight against software patents in EU! |
| www.ffii.org www.nosoftwarepatents.org |
+----------------------------------------+
More information about the geos-devel
mailing list