我是GIS领域的新手,我需要在java中验证WKT格式的几何,检查一个简单的多边形是否是一个闭环,即顶点的起点和终点应该是相同的。我目前正在使用oracle spatial(com.oracle.sdoapi)的jGeometry类,获取第一个和最后一个顶点并进行比较。另外,我使用getType()方法来检查它是否是一个简单的多边形。以下是我正在使用的代码:
WKT wkt = new WKT();
JGeometry geometry = wkt.toJGeometry(wkt.getBytes());
double[] d1 = geometry.getFirstPoint();
double[] d2 = geometry.getLastPoint();
if(!jGeometry.getType() == jGeometry.GTYPE_POLYGON){
//error message for other geometries
}
有没有简单的方法可以做到这一点,还是有任何API可用?我不想重新发明轮子,如果它已经完成并且易于使用。谢谢!
答案 0 :(得分:2)
Java Topology Suite包含适合您目的的WKTReader类。见http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/io/WKTReader.html。您可以使用WKTReader来解析WKT,并查找ParseExceptions,它指示无效的WKT。
如果WKT解析,则可以使用instanceof
运算符或WKTReader.getGeometryType()
来确定已解析的Geometry类的类型,并查看它是否为已关闭的几何类型(多边形或多边形)之一像Polygon或Multipolygon这样的贝壳。