提交 38a24477 authored 作者: noelgrandin's avatar noelgrandin

turns out that it's tricky to figure out how many dimensions a geometry has

上级 c0177852
...@@ -10,7 +10,7 @@ import java.sql.PreparedStatement; ...@@ -10,7 +10,7 @@ import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import org.h2.message.DbException; import org.h2.message.DbException;
import org.h2.util.StringUtils; import org.h2.util.StringUtils;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.GeometryFactory;
...@@ -202,11 +202,25 @@ public class ValueGeometry extends Value { ...@@ -202,11 +202,25 @@ public class ValueGeometry extends Value {
* @return the well-known-binary * @return the well-known-binary
*/ */
public byte[] toWKB() { public byte[] toWKB() {
int outputDimension = getNoDimensions();
boolean includeSRID = geometry.getSRID() != 0; boolean includeSRID = geometry.getSRID() != 0;
WKBWriter writer = new WKBWriter(geometry.getDimension(), includeSRID); WKBWriter writer = new WKBWriter(outputDimension, includeSRID);
return writer.write(geometry); return writer.write(geometry);
} }
private int getNoDimensions() {
Coordinate[] coordinates = geometry.getCoordinates();
if (coordinates == null) {
return 2;
}
for (Coordinate coordinate : coordinates) {
if (!Double.isNaN(coordinate.z)) {
return 3;
}
}
return 2;
}
/** /**
* Convert a Well-Known-Text to a Geometry object. * Convert a Well-Known-Text to a Geometry object.
* *
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论