繁体   English   中英

如何使用Java从kml文件中提取坐标

[英]How can i extract coordinates from a kml file using Java

我有一个KML文件https://files.fm/u/nbwf3trv ,我需要获取所有坐标并将其添加到列表中。

示例:KML文件中的必需坐标。 11.651548147201538,48.249088525772095,0 9.20654296875,50.00086069107056,0 7.010795159396929,51.45182674763414,0”。

请提出建议。 谢谢。

JAK(用于KML的Java API)是一种简单的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) {
  ...
}

您还可以使用Java拓扑套件 (JTS)。 此处发布读取kml文件的示例。 JTS是一个活跃的开源项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM