@Nullable public static <T extends Geometry> T extractGeometry(ResultSet rs, String columnName) throws SQLException { JtsGeometry geom = (JtsGeometry) rs.getObject(columnName); if (geom == null) { //info("no geometry found in column " + columnName); return null; } return (T) geom.getGeometry(); } }
public Object clone() { JtsGeometry obj = new JtsGeometry(geom); obj.setType(type); return obj; }
@Override public void setObject(int parameterIndex, Object x) throws SQLException { if(x instanceof Geometry) { JtsGeometry geometry = new JtsGeometry((Geometry) x); preparedStatement.setObject(parameterIndex, geometry); } else if (x instanceof PGObjectWrapper) { preparedStatement.setObject(parameterIndex, ((PGObjectWrapper) x).getPGobject()); } else { preparedStatement.setObject(parameterIndex, x); } }
public static Geometry geomFromString(String value) throws SQLException { try { value = value.trim(); if (value.startsWith("00") || value.startsWith("01")) { return bp.parse(value); } else { Geometry result; // no srid := 0 in JTS world int srid = 0; // break up geometry into srid and wkt if (value.startsWith("SRID=")) { String[] temp = value.split(";"); value = temp[1].trim(); srid = Integer.parseInt(temp[0].substring(5)); } result = reader.read(value); setSridRecurse(result, srid); return result; } } catch (Exception E) { E.printStackTrace(); throw new SQLException("Error parsing SQL data:" + E); } }
public void setValue(String value) throws SQLException { geom = geomFromString(value); }
/** Constructor called by JDBC drivers */ public JtsGeometry() { setType("geometry"); }
public JtsGeometry(String value) throws SQLException { this(); setValue(value); }
@Override public void setObject(int parameterIndex, Object x) throws SQLException { if(x instanceof Geometry) { JtsGeometry geometry = new JtsGeometry((Geometry) x); preparedStatement.setObject(parameterIndex, geometry); } else if (x instanceof PGObjectWrapper) { preparedStatement.setObject(parameterIndex, ((PGObjectWrapper) x).getPGobject()); } else { preparedStatement.setObject(parameterIndex, x); } }
/** * Recursively set a srid for the geometry and all subgeometries * @param geom Geometry to work on * @param srid SRID to be set to */ public static void setSridRecurse(final Geometry geom, final int srid) { geom.setSRID(srid); if (geom instanceof GeometryCollection) { final int subcnt = geom.getNumGeometries(); for (int i = 0; i < subcnt; i++) { setSridRecurse(geom.getGeometryN(i), srid); } } else if (geom instanceof Polygon) { Polygon poly = (Polygon) geom; poly.getExteriorRing().setSRID(srid); final int subcnt = poly.getNumInteriorRing(); for (int i = 0; i < subcnt; i++) { poly.getInteriorRingN(i).setSRID(srid); } } }
public JTSShape(JtsGeometry _geom) { this(_geom.getGeometry()); }
public String getValue() { return bw.writeHexed(getGeometry()); }
@Override public Object getObject(int columnIndex) throws SQLException { Object object = rs.getObject(columnIndex); if(spatialFields.contains(columnIndex)) { if(object instanceof JtsGeometry) { return ((JtsGeometry) object).getGeometry(); } else if(object instanceof PGboxbase) { PGboxbase box = ((PGboxbase) object); Point bottomLeft = box.getLLB(); Point upRight = box.getURT(); Envelope envelope = new Envelope(bottomLeft.x, upRight.x, bottomLeft.y, upRight.y); return geometryFactory.toGeometry(envelope); } } if(object instanceof PGobject) { return new PGObjectWrapper((PGobject) object); } else { return object; } }
@Override public Object getObject(int columnIndex) throws SQLException { Object object = rs.getObject(columnIndex); if(spatialFields.contains(columnIndex)) { if(object instanceof JtsGeometry) { return ((JtsGeometry) object).getGeometry(); } else if(object instanceof PGboxbase) { PGboxbase box = ((PGboxbase) object); Point bottomLeft = box.getLLB(); Point upRight = box.getURT(); Envelope envelope = new Envelope(bottomLeft.x, upRight.x, bottomLeft.y, upRight.y); return geometryFactory.toGeometry(envelope); } } if(object instanceof PGobject) { return new PGObjectWrapper((PGobject) object); } else { return object; } }