[postgis-users] Problem with Z coordinate using postgis-jts
Fernando González
fergonco at gmail.com
Thu Mar 6 01:17:02 PST 2008
Thanks Kevin. I'm using your solution. However, there is another real
difference: it takes twice the time to parse with that method. I have
inserted this code to test:
String geom = rs.getString(2);
WKBReader reader = new WKBReader();
JtsBinaryParser parser = new JtsBinaryParser();
String bytes = rs.getString(2);
long t1 = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
Geometry g = parser.parse(bytes);
}
long t2 = System.currentTimeMillis();
System.out.println((t2 - t1) / 1000000.0);
t1 = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
Geometry g = reader.read(WKBReader.hexToBytes(geom));
}
t2 = System.currentTimeMillis();
System.out.println((t2 - t1) / 1000000.0);
Is the postgis-jts stuff supported at all? My ignorance says it's not
difficult to fix... I'm taking a look at the source to see if I can see
something.
Fernando.
On Wed, Mar 5, 2008 at 10:22 PM, Kevin Neufeld <kneufeld at refractions.net>
wrote:
> Alternatively, don't use the postgis jar at all ... use a regular
> postgres driver and JTS. This yields the results you are looking for.
> The only real difference here is the use of WKBReader instead of
> JtsBinaryParser.
>
> public static void main(String[] args) throws Throwable {
> Class.forName("org.postgresql.Driver").newInstance();
> String sql = "CREATE TABLE test (pk_0 int4 NOT NULL);";
> sql += "select
> AddGeometryColumn('test','the_geom','-1','GEOMETRY','2');";
> sql += "insert into test " + "values(3, "
> + "GeomFromText('LINESTRING(191232 243118,191108
> 243242)',-1));";
>
> Connection c = DriverManager.getConnection(
> "jdbc:postgresql://turtle:9876/cwb/",
> "postgres",
> "postgres");
>
> Statement st = c.createStatement();
> try {
> st.execute("drop table test");
> } catch (SQLException e) {
>
> }
> st.execute(sql);
>
> ResultSet rs = st.executeQuery("select * from test");
> rs.next();
> String geom = rs.getString(2);
> WKBReader reader = new WKBReader();
> Geometry g = reader.read(WKBReader.hexToBytes(geom));
> Coordinate[] coords = g.getCoordinates();
> for (int i = 0; i < coords.length; i++) {
> System.out.println(coords[i]);
> }
> }
>
> -- output is
> (191232.0, 243118.0, NaN)
> (191108.0, 243242.0, NaN)
>
> -------------
> Kevin Neufeld
> Software Developer
> Refractions Research Inc.
> 300-1207 Douglas St.
> Victoria, B.C., V8W 2E7
>
> Phone: (250) 383-3022
> Email: kneufeld at refractions.net
>
>
>
> Fernando González wrote:
> > Thank you for the answer. When I execute this code:
> >
> > public static void main(String[] args) throws Throwable {
> > Class.forName("org.postgresql.Driver").newInstance();
> > String sql = "CREATE TABLE test (pk_0 int4 NOT NULL);";
> > sql += "select
> > AddGeometryColumn('test','the_geom','-1','GEOMETRY','2');";
> > sql += "insert into test "
> > + "values(3, "
> > + "GeomFromText('LINESTRING(191232 243118,191108
> > 243242)',-1));";
> >
> > Connection c = DriverManager
> > .getConnection("jdbc:postgresql://127.0.0.1/gdms/test",
> > "postgres", "postgres");
> > ((PGConnection) c)
> > .addDataType("geometry", org.postgis.PGgeometry.class);
> > ((PGConnection) c).addDataType("box3d",
> > org.postgis.PGbox3d.class);
> >
> > Statement st = c.createStatement();
> > try {
> > st.execute("drop table test");
> > } catch (SQLException e) {
> >
> > }
> > st.execute(sql);
> >
> > ResultSet rs = st.executeQuery("select * from test");
> > rs.next();
> > String geom = rs.getString(2);
> > JtsBinaryParser parser = new JtsBinaryParser();
> > Geometry g = parser.parse(geom);
> > Coordinate[] coords = g.getCoordinates();
> > for (Coordinate coordinate : coords) {
> > System.out.println(coordinate);
> > }
> > }
> >
> > I obtain this output:
> > (191232.0, 243118.0, 0.0)
> > (191108.0, 243242.0, 0.0)
> >
> > I think I should obtain
> > (191232.0, 243118.0, NaN)
> > (191108.0, 243242.0, NaN)
> >
> > am I wrong?
> >
> >
> > Fernando.
> >
> > On Wed, Mar 5, 2008 at 12:14 PM, Mark Cave-Ayland
> > <mark.cave-ayland at siriusit.co.uk
> > <mailto:mark.cave-ayland at siriusit.co.uk>> wrote:
> >
> > On Wednesday 05 March 2008 10:13:26 Fernando González wrote:
> > > Hi,
> > >
> > > I'm storing and reading some geometries from a postgis table.
> > The table is
> > > 2D. I'm using a jar I have compiled with the "make postgis_jts"
> > command. It
> > > works very well except for one thing. I write 2D JTS geometries,
> > this is
> > > with the z component equal to NaN, into a postgis table but when
> > I read
> > > them the Z coordinate is no longer equal to NaN but equal to 0.
> > is this a
> > > feature? a bug?
> > >
> > > I'm using this code to read the geometry. To store them I use
> > GeomFromText
> > > function and I specify only X-Y components for each coordinate
> > (I'm not
> > > specifying the Z coordinate):
> > >
> > > JtsBinaryParser parser = new JtsBinaryParser();
> > > String bytes = rs.getString(fieldId);
> > > Geometry geom = parser.parse(bytes);
> > >
> > > is it clear? I can write some code to reproduce the problem if
> > anyone is
> > > interested.
> > >
> > > Thanks in advance,
> > > Fernando
> >
> >
> > Hi Fernando,
> >
> > Yes please. I may not be the person that eventually looks at this,
> > however a
> > reproducible test case is enormously helpful in cases like these.
> >
> >
> > ATB,
> >
> > Mark.
> >
> > --
> > Mark Cave-Ayland
> > Sirius Corporation - The Open Source Experts
> > http://www.siriusit.co.uk
> > T: +44 870 608 0063
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20080306/9bd19e78/attachment.html>
More information about the postgis-users
mailing list