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

Другие вопросы по тегам