GeoJSON: проверьте, находится ли географическая координата внутри полигона - PullRequest
0 голосов
/ 09 февраля 2019

У меня следующий файл данных 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 = false

a) Не могли бы вы понять, почему pointIsInPolygon неверно.Я что-то упустил?

b) Какую координату я должен здесь дать, чтобы результат pointIsInPolygon привел к true

c) Есть ли другой способ анализа данного файла JSON в Polygon?и подтвердите, что если координата лежит в многоугольнике или нет?

1 Ответ

0 голосов
/ 10 февраля 2019

Ваша точка находится за пределами многоугольника, поэтому результат правильный.Здесь красная точка принадлежит вам, если вы измените ее на gf.createPoint(new Coordinate(9.13716433655009652, 48.79030985534630815)); (зеленая точка), она вернет истину.

enter image description here

...