Как я могу извлечь координаты из файла kml, используя Java - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть файл KML https://files.fm/u/nbwf3trv, и мне нужно получить все координаты и добавить его в список.

Пример: необходимые координаты из файла KML.11.651548147201538,48.249088525772095,0 9.20654296875,50.00086069107056,0 7.010795159396929,51.45182674763414,0 ".

Пожалуйста, предложите. Спасибо.

1 Ответ

0 голосов
/ 20 ноября 2018

JAK (Java API для KML) - это простой и мощный Java API для анализа и / или создания файлов KML с нуля.

https://github.com/micromata/javaapiforkml

Вот фрагмент кода Java для извлечения координат из файла KML. В данном случае это метка и геометрия многоугольника. Если в файле KML есть несколько меток, вы можете выполнить итерацию по всем меткам.

JAXBContext jc = JAXBContext.newInstance(Kml.class);

// create KML reader to parse arbitrary KML into Java Object structure
Unmarshaller u = jc.createUnmarshaller();
Kml kml = (Kml) u.unmarshal(new File("test.kml"));

Placemark placemark = (Placemark) kml.getFeature();
Polygon geom = (Polygon) placemark.getGeometry();
LinearRing linearRing = geom.getOuterBoundaryIs().getLinearRing();
List<Coordinate> coordinates = linearRing.getCoordinates();
for (Coordinate coordinate : coordinates) {
    System.out.println(coordinate.getLongitude());
    System.out.println(coordinate.getLatitude());
    System.out.println(coordinate.getAltitude());
}

Если первая функция в KML - это папка, вы можете привести папку к объекту, а затем выполнить итерацию по объектам.

Folder doc = (Folder) kml.getFeature();
List<Feature> features = doc.getFeature();
for(Feature f : features) {
  ...
}
...