提交 e27ce052 编写于 作者: S Serge Rider

Geometry converter utils refactoring

上级 764fe79e
......@@ -79,7 +79,7 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler {
} else if (value instanceof byte[]) {
bindBytes(statement, paramIndex, (byte[]) value);
} else if (value instanceof Geometry) {
bindBytes(statement, paramIndex, GeometryConverter.getInstance().to((Geometry)value));
bindBytes(statement, paramIndex, convertGeometryToBinaryFormat(session, (Geometry)value));
}
}
......@@ -103,13 +103,13 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler {
} else if (object instanceof Geometry) {
geometry = new DBGeometry((Geometry)object);
} else if (object instanceof byte[]) {
Geometry jtsGeometry = getGeometryFromBinaryFormat(session, (byte[]) object);
Geometry jtsGeometry = convertGeometryFromBinaryFormat(session, (byte[]) object);
// if (invertCoordinates) {
// jtsGeometry.apply(GeometryConverter.INVERT_COORDINATE_FILTER);
// }
geometry = new DBGeometry(jtsGeometry);
} else if (object instanceof String) {
Geometry jtsGeometry = GeometryConverter.getInstance().from((String) object);
Geometry jtsGeometry = GeometryConverter.getInstance().fromWKT((String) object);
geometry = new DBGeometry(jtsGeometry);
} else {
throw new DBCException("Unsupported geometry value: " + object);
......@@ -120,8 +120,12 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler {
return geometry;
}
protected Geometry getGeometryFromBinaryFormat(DBCSession session, byte[] object) throws DBCException {
return GeometryConverter.getInstance().from(object);
protected Geometry convertGeometryFromBinaryFormat(DBCSession session, byte[] object) throws DBCException {
return GeometryConverter.getInstance().fromWKB(object);
}
protected byte[] convertGeometryToBinaryFormat(DBCSession session, Geometry geometry) throws DBCException {
return GeometryConverter.getInstance().toWKB(geometry);
}
@NotNull
......
......@@ -40,10 +40,18 @@ public class GeometryConverter {
return INSTANCE;
}
public Geometry fromWKT(String str) {
try {
return new WKTReader().read(str);
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
/**
* Convert byte array containing SRID + WKB Geometry into Geometry object
*/
public Geometry from(byte[] bytes) {
public Geometry fromWKB(byte[] bytes) {
if (bytes == null) {
return null;
}
......@@ -66,18 +74,10 @@ public class GeometryConverter {
}
}
public Geometry from(String str) {
try {
return new WKTReader().read(str);
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
/**
* Convert Geometry object into byte array containing SRID + WKB Geometry
*/
public byte[] to(Geometry userObject) {
public byte[] toWKB(Geometry userObject) {
if (userObject == null) {
return null;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册