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



我有一个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,则可以将Folder强制转换为对象,然后迭代这些功能。

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

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

最新更新