GeoJSON: проверьте, находится ли географическая координата внутри полигона
У меня есть следующий файл данных GeoJSON, который содержит многоугольник с координатами.
[
{
"geometry": {
"type": "Polygon",
"coordinates":
[
[
[
9.137248,
48.790411
],
[
9.137248,
48.790263
],
[
9.13695,
48.790263
],
[
9.137248,
48.790411
]
]
]
}
}
]
С помощью org.geotools.geojson.geom.GeometryJSON
Я анализирую координаты JSON в com.vividsolutions.jts.geom.Polygon
класс, как указано ниже. А также проверка, если Coordinate(9.13710, 48.790360)
находится внутри этого многоугольника или нет.
GeometryJSON g = new GeometryJSON();
com.vividsolutions.jts.geom.Polygon polygon = g.readPolygon(new File(fileLocation));
System.out.println("Type="+polygon.getGeometryType());
GeometryFactory gf = new GeometryFactory();
boolean pointIsInPolygon = polygon.contains(gf.createPoint(new Coordinate(9.13710, 48.790360)));
System.out.println("Point is in polygon="+pointIsInPolygon);
Но моя программа всегда дает мне результат ниже, что данная координата не в полигоне.
Результат
Тип =Polygon
Точка в многоугольнике = ложь
а) Не могли бы вы понять, почему pointIsInPolygon
ложно Я что-то пропустил?
б) Какую координату я должен дать здесь, так что pointIsInPolygon
результат в true
c) есть ли другой способ проанализировать данный файл JSON в Polygon и подтвердить, что координата лежит в Polygon или нет?
1 ответ
Ваша точка находится за пределами многоугольника, поэтому результат правильный. Здесь красная точка ваша, если вы измените ее на gf.createPoint(new Coordinate(9.13716433655009652, 48.79030985534630815));
(зеленая точка) возвращает истину.
ht tps://s tackru.com/images/aa26308d7b5d6eb4fe9175a81692d074be5e716c.png