Java源码示例:org.postgis.PGgeometry
示例1
@Override
public GeometryObject getMultiPoint(Object geomObj) throws SQLException {
GeometryObject multiPoint = null;
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
if (geometry.getType() == Geometry.MULTIPOINT) {
multiPoint = getMultiPoint((MultiPoint)geometry);
}
else if (geometry.getType() == Geometry.POINT) {
Point pointObj = (Point)geometry;
double[][] coordiantes = new double[1][];
coordiantes[0] = getPointCoordinates(pointObj);
multiPoint = GeometryObject.createMultiPoint(coordiantes, pointObj.getDimension(), pointObj.getSrid());
}
}
return multiPoint;
}
示例2
@Override
public GeometryObject getMultiCurve(Object geomObj) throws SQLException {
GeometryObject multiCurve = null;
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
if (geometry.getType() == Geometry.MULTILINESTRING) {
multiCurve = getMultiCurve((MultiLineString)geometry);
}
else if (geometry.getType() == Geometry.LINESTRING) {
LineString lineStringObj = (LineString)geometry;
double[][] coordiantes = new double[1][];
coordiantes[0] = getCurveCoordinates(lineStringObj);
multiCurve = GeometryObject.createMultiPoint(coordiantes, lineStringObj.getDimension(), lineStringObj.getSrid());
}
}
return multiCurve;
}
示例3
@Override
public GeometryObject getMultiPolygon(Object geomObj) throws SQLException {
GeometryObject multiPolygon = null;
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
if (geometry.getType() == Geometry.MULTIPOLYGON) {
multiPolygon = getMultiPolygon((MultiPolygon)geometry);
}
else if (geometry.getType() == Geometry.POLYGON) {
Polygon polygonObj = (Polygon)geometry;
double[][] coordinates = getPolygonCoordinates(polygonObj);
int[] exteriorRings = new int[]{ 0 };
multiPolygon = GeometryObject.createMultiPolygon(coordinates, exteriorRings, polygonObj.getDimension(), polygonObj.getSrid());
}
}
return multiPolygon;
}
示例4
@Override
public GeometryObject getGeometry(Object geomObj) throws SQLException {
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
switch (geometry.getType()) {
case Geometry.POINT:
return getPoint((Point)geometry);
case Geometry.MULTIPOINT:
return getMultiPoint((MultiPoint)geometry);
case Geometry.LINESTRING:
return getCurve((LineString)geometry);
case Geometry.MULTILINESTRING:
return getMultiCurve((MultiLineString)geometry);
case Geometry.POLYGON:
return getPolygon((Polygon)geometry);
case Geometry.MULTIPOLYGON:
return getMultiPolygon((MultiPolygon)geometry);
default:
throw new SQLException("Cannot convert PostGIS geometry type '" + geometry.getType() + "' to internal representation: Unsupported type.");
}
}
return null;
}
示例5
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
PGgeometry pGgeometry = (PGgeometry) rs.getObject(columnName);
if (pGgeometry == null) {
return null;
}
return (T) pGgeometry.getGeometry();
}
示例6
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
PGgeometry pGgeometry = (PGgeometry) rs.getObject(columnIndex);
if (pGgeometry == null) {
return null;
}
return (T) pGgeometry.getGeometry();
}
示例7
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
PGgeometry pGgeometry = (PGgeometry) cs.getObject(columnIndex);
if (pGgeometry == null) {
return null;
}
return (T) pGgeometry.getGeometry();
}
示例8
@Override
@Test
public void shouldSetParameter() throws Exception {
getTypeHandler().setParameter(ps, 1, t, null);
ArgumentCaptor<PGgeometry> argument = ArgumentCaptor.forClass(PGgeometry.class);
verify(ps).setObject(eq(1), argument.capture());
assertEquals(t, argument.getValue().getGeometry());
}
示例9
@Override
public Geometry fromResultSet( IHMResultSet rs, int index ) throws Exception {
Object object = rs.getObject(index);
if (object instanceof PGgeometry) {
PGgeometry pgGeometry = (PGgeometry) object;
Geometry geometry = getGeom(pgGeometry);
return geometry;
}
return null;
}
示例10
private synchronized Geometry getGeom( PGgeometry pgGeometry ) throws SQLException, ParseException {
String wkt = pgGeometry.toString();
String[] splitSRID = PGgeometry.splitSRID(wkt);
Geometry geometry = wktReader.read(splitSRID[1]);
try {
int srid = Integer.parseInt(splitSRID[0].substring(5));
geometry.setSRID(srid);
} catch (Exception e) {
e.printStackTrace();
}
return geometry;
}
示例11
@Override
public Geometry fromSqlObject( Object geomObject ) throws Exception {
if (geomObject instanceof Geometry) {
return (Geometry) geomObject;
} else if (geomObject instanceof PGgeometry) {
return getGeom((PGgeometry) geomObject);
}
throw new IllegalArgumentException("Geom object needs to be a JTS/PGGeometry geometry.");
}
示例12
@Override
protected BoundingBox transformBoundingBox(BoundingBox bbox, DatabaseSrs sourceSrs, DatabaseSrs targetSrs, Connection connection) throws SQLException {
BoundingBox result = new BoundingBox(bbox);
int sourceSrid = sourceSrs.getSrid();
int targetSrid = targetSrs.getSrid();
StringBuilder boxGeom = new StringBuilder()
.append("SRID=").append(sourceSrid).append(";POLYGON((")
.append(bbox.getLowerCorner().getX()).append(" ").append(bbox.getLowerCorner().getY()).append(",")
.append(bbox.getLowerCorner().getX()).append(" ").append(bbox.getUpperCorner().getY()).append(",")
.append(bbox.getUpperCorner().getX()).append(" ").append(bbox.getUpperCorner().getY()).append(",")
.append(bbox.getUpperCorner().getX()).append(" ").append(bbox.getLowerCorner().getY()).append(",")
.append(bbox.getLowerCorner().getX()).append(" ").append(bbox.getLowerCorner().getY()).append("))");
try (PreparedStatement psQuery = connection.prepareStatement("select ST_Transform(ST_GeomFromEWKT(?), " + targetSrid + ')')) {
psQuery.setString(1, boxGeom.toString());
try (ResultSet rs = psQuery.executeQuery()) {
if (rs.next()) {
PGgeometry pgGeom = (PGgeometry) rs.getObject(1);
if (!rs.wasNull() && pgGeom != null) {
Geometry geom = pgGeom.getGeometry();
result.getLowerCorner().setX(geom.getPoint(0).x);
result.getLowerCorner().setY(geom.getPoint(0).y);
result.getUpperCorner().setX(geom.getPoint(2).x);
result.getUpperCorner().setY(geom.getPoint(2).y);
result.setSrs(targetSrs);
}
}
}
return result;
}
}
示例13
@Override
public GeometryObject getPoint(Object geomObj) throws SQLException {
GeometryObject point = null;
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
if (geometry.getType() != Geometry.POINT)
return null;
point = getPoint((Point)geometry);
}
return point;
}
示例14
@Override
public GeometryObject getCurve(Object geomObj) throws SQLException {
GeometryObject curve = null;
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
if (geometry.getType() != Geometry.LINESTRING)
return null;
curve = getCurve((LineString)geometry);
}
return curve;
}
示例15
@Override
public GeometryObject getPolygon(Object geomObj) throws SQLException {
GeometryObject polygon = null;
if (geomObj instanceof PGgeometry) {
Geometry geometry = ((PGgeometry)geomObj).getGeometry();
if (geometry.getType() != Geometry.POLYGON)
return null;
polygon = getPolygon((Polygon)geometry);
}
return polygon;
}
示例16
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
PGgeometry geometry = new PGgeometry();
geometry.setGeometry(parameter);
ps.setObject(i, geometry);
}
示例17
@Override
public Object toSqlObject( Geometry geometry ) throws Exception {
org.postgis.Geometry pgGeometry = PGgeometry.geomFromString(geometry.toText());
pgGeometry.srid = geometry.getSRID();
return pgGeometry;
}
示例18
@Override
protected BoundingBox createBoundingBoxes(List<Integer> objectClassIds, boolean onlyIfNull, Connection connection) throws SQLException {
BoundingBox bbox = null;
try {
for (Integer classId : objectClassIds) {
String call = "{? = call " + databaseAdapter.getSQLAdapter().resolveDatabaseOperationName("citydb_envelope.get_envelope_cityobjects") + "(?,1,?)}";
interruptableCallableStatement = connection.prepareCall(call);
interruptableCallableStatement.registerOutParameter(1, databaseAdapter.getGeometryConverter().getNullGeometryType());
interruptableCallableStatement.setInt(2, classId);
interruptableCallableStatement.setInt(3, onlyIfNull ? 1 : 0);
interruptableCallableStatement.executeUpdate();
Position lowerCorner = new Position(Double.MAX_VALUE, Double.MAX_VALUE);
Position upperCorner = new Position(-Double.MAX_VALUE, -Double.MAX_VALUE);
Object geomObject = interruptableCallableStatement.getObject(1);
if (geomObject instanceof PGgeometry) {
Geometry geom = ((PGgeometry) geomObject).getGeometry();
double xmin, ymin, xmax, ymax;
xmin = geom.getPoint(0).x;
ymin = geom.getPoint(0).y;
xmax = geom.getPoint(2).x;
ymax = geom.getPoint(2).y;
lowerCorner.setX(xmin);
lowerCorner.setY(ymin);
upperCorner.setX(xmax);
upperCorner.setY(ymax);
}
if (!isInterrupted) {
if (bbox == null)
bbox = new BoundingBox(lowerCorner, upperCorner);
else
bbox.update(lowerCorner, upperCorner);
}
}
} catch (SQLException e) {
if (!isInterrupted)
throw e;
} finally {
if (interruptableCallableStatement != null) {
interruptableCallableStatement.close();
interruptableCallableStatement = null;
}
isInterrupted = false;
}
return bbox;
}