2013-09-11 6 views
2

Я новичок в области ГИС, и мне нужно проверить геометрию в формате WKT в java, чтобы проверить, является ли простой многоугольник замкнутым циклом, то есть начальная и конечная точки вершин должны быть одинаковым. В настоящее время я использую класс jGeometry оракула (com.oracle.sdoapi), получаю первую и последнюю вершины и сравнивая их. Кроме того, я использую метод getType(), чтобы проверить, является ли он простым полигоном или нет. Ниже приведен фрагмент кода, который я использую:Проверка геометрии в формате WKT

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 доступны? Я не хочу изобретать велосипед, если он уже сделан и прост в использовании. Благодаря!

ответ

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) с замкнутыми оболочками, как многоугольник или MultiPolygon.

+0

Спасибо. Фактически, я пытался использовать это, но из-за некоторых проблем с лицензированием мне позже посоветовали не использовать JTS. Я использовал собственный код для создания геодезического точечного класса, преобразования геометрии в геодезические точки и сравнения первой и последней точек. – kumar