一、需要插件
<!-- 解析KMZ航线-->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
二、KMZ解压成KML
package com.dji.sample.common.util;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
//将KMZ航线转成KML航线
public class KmzKml {
public Document unzipKmzToKml() throws Exception, Exception {
String strkmz="/home/ych/KmzKml/航点飞行测试.kmz";
System.out.println("********************** 【KMZ转kml开始】kmz路径: **********************\n"+ strkmz);
File file = new File(strkmz);
ZipFile zipFile = new ZipFile(file);
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));
InputStream inputStream = null;
ZipEntry entry = null;
Document doc = null;
while ((entry = zipInputStream.getNextEntry()) != null) {
String zipEntryName = entry.getName();
//获取所需文件的节点
if (zipEntryName.equals("wpmz/template.kml")) {
inputStream = zipFile.getInputStream(entry);
SAXReader reader = new SAXReader();
doc = (Document) reader.read(inputStream);
inputStream.close();
}
}
zipFile.close();
zipInputStream.close();
return doc;
}
}
三、KML提取航点坐标
package com.dji.sample.common.util;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.util.*;
//提取KML航线里的坐标值
public class Kml {
public static Collection<? extends String> parseXmlWithDom4j(InputStream input) throws Exception {
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(input);
} catch (DocumentException e) {
e.printStackTrace