[postgis-users] postgis JDBC failing to write PGgeometry or PGgeometryLW
Jeremy Reeve
jsr at argusat.com
Wed Oct 30 00:29:05 PDT 2013
I am using a 2.1.0 postgis compiled from source. I should probably try generating the jdbc driver from the source used to compile postgis...
On Tue, Oct 29, 2013 at 12:05:35PM +0100, Jeremy Reeve wrote:
>
>
> Hi there,
>
> I hope someone can assist in pointing a PostGIS newbie in the right direction.
>
> Using the following explicit Maven dependency:
>
> <dependency>
> <groupId>org.postgis</groupId>
> <artifactId>postgis-jdbc</artifactId>
> <version>1.3.3</version>
> </dependency>
>
> Where transitive dependencies on postgis-stubs (1.3.3) and postgresql-8.3-603.jdbc4.jar are also pulled in.
>
> Executing the following code yields an exception thrown, the following is executed once during construction:
>
> Class.forName("org.postgresql.Driver");
> mConnection = DriverManager.getConnection(URL, USER, PASSWORD);
>
> /*
> * Add the geometry types to the connection. Note that you must cast the
> * connection to the pgsql-specific connection implementation before
> * calling the addDataType() method.PostGIS 2.1.1dev Manual 75 / 672
> */
> ((org.postgresql.PGConnection) mConnection).addDataType("geometry",org.postgis.PGgeometry.class);
> mPreparedStatementInsertObservation = mConnection.prepareStatement(INSERT_OBSERVATION_SQL);
>
>
> And the following multiple times:
>
> Point point = new Point();
> point.x = observation.getLocation().getLatitude();
> point.y = observation.getLocation().getLongitude();
> point.z = observation.getLocation().getAltitude();
> PGgeometry geometry = new PGgeometry(point);
> mPreparedStatementInsertObservation.setObject(1, geometry);
>
> The top of stack trace when exception is thrown from setObject:
>
> java.lang.NoSuchMethodError: org.postgresql.core.BaseConnection.getEncoding()Lorg/postgresql/core/Encoding;
> at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2025)
> at org.postgresql.jdbc2.TypeInfoCache.getPGType(TypeInfoCache.java:216)
> at org.postgresql.jdbc2.AbstractJdbc2Connection.getPGType(AbstractJdbc2Connection.java:971)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.setPGobject(AbstractJdbc2Statement.java:1542)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.setObject(AbstractJdbc2Statement.java:1736)
> at com.argusat.gjl.observice.repository.postgis.ObservationRepositoryPostGISImpl.storeObservations(ObservationRepositoryPostGISImpl.java:145)
> at com.argusat.gjl.observice.repository.postgis.ObservationRepositoryPostGISImplTest.testStoreObservations(ObservationRepositoryPostGISImplTest.java:72)
>
>
> I have read on the mailing list that the root cause is a subtle classpath ordering issue but I'm not sure of exactly what's happening. It looks to me as though the PGgeometry type isn't being correctly registered with JDBC. I have seen driverconfig.properties packaged with the postgis-jdbc jar which appears to perform the required registration. I have tried the explicit registration and assuming that the driverconfig.properties is working but neither seem to work.
>
> Incidentally, is it possible to use PGgeometryLW in place of PGgeometry for better performance and if so, is the following SQL correct?
>
> private static final String INSERT_OBSERVATION_SQL = "insert into observations "
> + "(location, obs_timestamp, device_id, hdop, vdop, obs_type, value0, "
> + "value1, value2, value3, value4 ) VALUES"
> + "(ST_GeomFromEWKB(?),?,?,?,?,?,?,?,?,?,?)";
>
> Should I be using the values without wrapping in a ST_ constructor when using PGgeometry as opposed to PGgeometryLW, for example:
>
> private static final String INSERT_OBSERVATION_SQL = "insert into observations "
> + "(location, obs_timestamp, device_id, hdop, vdop, obs_type, value0, "
> + "value1, value2, value3, value4 ) VALUES"
> + "(?,?,?,?,?,?,?,?,?,?,?)";
>
> I think I'd prefer geography types in my database, is it possible to use these in conjunction with JDBC?
>
>
> With kind regards..Jeremy
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list