一、简介

1.1.kml是什么

KML 是一种文件格式,用于在地球浏览器(例如 Google 地球、Google 地图和 Google 地图移动版)中显示地理数据。KML 使用包含嵌套的元素和属性的结构(基于标记),并符合 XML 标准。所有标记都区分大小写,并且必须与 KML 参考中列出的完全一样。该参考指出了哪些标记是可选的。在给定元素内,标记必须按照参考中列出的顺序显示。
说白了,kml文件存储的一般是经纬度信息,用于在实景地图中显示轨迹。例如导航航迹、无人机飞行航迹等。

二、在spingboot项目中的简单应用

2.1引入依赖

         <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency>

2.2kml封装工具类

import cn.hutool.core.util.Idutil;
import com.common.dao.entity.PhotoFileInfo;
import com.common.dto.request.TravelRecordRequest;
import org.dom4j. Document;
import org. dom4j. DocumentHelper;
import org.dom4j. Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLwriter;
import org.springframework.beans.factory.annotation.Value;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; /**@Author: kiki Date: 2022/2/19*/public class Kmlutil {public static PhotoFileInfo setTravelsKml(List<TravelRecordRequest> travelRecords,String fileName,String sysPath)throws Exception{//根节点添加属性   Element root = DocumentHelper.createElement( name: "kml");Document document = DocumentHelper.createDocument(root); root.addAttribute("xmlns", "http://www.opengis.net/kml/2.2").addAttribute("xmlns:gx", "http://www.google.com/kml/ext/2.2").addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance").addAttribute("xsi:schemaLocation", "http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd");  Element documentElement = root.addElement("Document"); documentElement.addElement( "name").addText(fileName); Element folderElement = documentElement.addElement("Folder"); folderElement. addElement("name").addText("轨迹点位"); folderElement.addElement("open").addText("e");Element styleElement = folderElement.addElement("Style"); styleElement.addAttribute("id", s1: "EB-01-008");Element lineStyleElement = styleElement. addElement("LineStyle"); lineStyleElement. addElement("color").addText("FFeeffff");lineStyleElement. addElement ("width").addText("4");Element polyStyleElement = styleElement.addElement("PolyStyle"); polyStyleElement. addElement("color").addText("40eeffff");polyStyleElement.addElement("outline").addText("e");Element iconStyleElement = styleElement.addElement("IconStyle"); iconStyleElement.addElement ("Icon").addText("");Element style2Element = folderElement. addElement("Style");style2Element.addAttribute("id","EB-01-008(shadow)");Element lineStyle2Element = style2Element.addElement("LineStyle");lineStyle2Element.addElement ("color"). addText("FF007f7f");lineStyle2Element. addElement("width").addText("4");Element polyStyle2Element = style2Element.addElement(  "PolyStyle"); polyStyle2Element.addElement( "color").addText("40007f7f");polystyle2Element.addElement(  "outline").addText("e");Element iconStyle2Element = style2Element.addElement (  "IconStyle"); iconStyle2Element.addElement("Icon").addText("");//生成轨迹途路径数据Element lineElement = documentElement.addElement ( s: "Placemark"); lineElement.addElement( s: "name").addText("working area");lineElement.addElement( s: "styleUrl").addText("#EB-01-008"); Element pointElement = lineElement.addElement( s: "LineString");pointElement.addElement( s: "extrude"). addText("e");pointElement.addElement( s: "tessellate").addText("1");pointElement.addElement(s: "altitudeMode").addText("absolute"); String linedata = "";//每个坐标以及高度用换行符或空格分开for (TravelRecordRequest travelRecord : travelRecords) { linedata = linedata+"\n" +travelRecord.getLng()+", "+travelRecord.getLat()+", "+travelRecord.getAlt(); }pointElement. addElement( s: "coordinates ").addText(linedata);//创建km1到本地OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8");String dateDir = new SimpleDateFormat( pattern: "yyyy/MM/dd").format(new Date()); String localDirPath = sysPath+"/resource/"+ dateDir+"/thumb";He Ean yiee Nangate Code Arahge Betactor Buld Run Iools VCS Mindow HelpFile fileDir = new File(localDirPath); if(!fileDir.exists()){fileDir.mkdirs();}String endName= fileName+"-"+ IdUtil.fastSimpLeUUID()+".km1"; String relativePath ="/resource/"+dateDir+"/"+endName;String filePath=sysPath+relativePath; XMLWriter xmlwriter = new XMLWriter(new FileOutputStream(filePath));xmlWriter.write(document); xmlwriter.close(); PhotoFileInfo photoFileInfo = new PhotoFileInfo(); photoFileInfo.setFileRelativePath(relativePath); photoFileInfo.setFilePath(filePath); photoFileInfo.setUploadTime(new Date()); photoFileInfo.setNewName(endName); photoFileInfo.setoriginalName(fileName); return photoFileInfo;}

springboot项目java生成kml文件相关推荐

  1. java 生成kml文件_如何使用kml文件在地图上绘制路径?

    在上面的代码中,据我所见,您不会将kml数据传递到代码中的任何位置.要显示路由,您应该解析kml数据,即通过SAX解析器,然后在地图上显示路由标记. 请参阅下面的代码中的一个例子,但是它还没有完成-只 ...

  2. springboot项目输入打印日志文件到本地

    springboot项目输入打印日志文件到本地 pom.xml中添加jar包: <dependency><groupId>ch.qos.logback</groupId& ...

  3. zipentry压缩乱码linux,java生成压缩文件 ZipEntry出现乱码的有关问题

    java生成压缩文件 ZipEntry出现乱码的问题 在项目中,一次导出的文件有好几个,而且文件内容比较大,最后考虑到把文件进行压缩在下载,开始试用JDK自带的ZIP压缩包时,ZipEntry ze ...

  4. SpringBoot+Vue+mybatis生成pdf文件(表头跟页码,适应上传linux服务器后的操作)

    SpringBoot+Vue+mybatis生成pdf文件(表头跟页码,适应上传linux服务器后的操作) 为什么使用后端去生成 说明 依赖 后端目录 控制器代码 模板代码 前端代碼 最終效果 为什么 ...

  5. iText5实现Java生成PDF文件完整版,二维码

    iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...

  6. java 导出mdb文件_Java中Java生成mdb文件工具类

    package com.util; /**  * Java生成mdb文件[MS Access文件]  * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...

  7. 使用Apache XML项目FOP生成PDF文件(上)

    使用Apache XML项目FOP生成PDF文件(上) 一.前言:在项目中遇到要把文档保存成PDF文件,在网上找了很久之方面的资料,终于发现了Apache的FOP项目有这个功能. 二.适合读者对象:想 ...

  8. 使用Java生成excel文件:apache-poi

    使用办公文档插件: 文件-------HSSFWorkbook 页----------HSSFSheet 行----------HSSFRow 列----------HSSFCell 样式------ ...

  9. Java生成PDF文件_自用

    Java生成PDF文件 一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库.废话不多说,进入正题. 二.iText简介 ...

  10. java生成csv文件,excel打开文件乱码问题

    之前项目中用到了生成csv文件编码UTF-8在windos下excel打开乱码 二话不说直接撸上代码 解决方法如下: 1:生成csv文件封装类 public class CreateCsvUtil { ...

最新文章

  1. Python排序dict之list数组
  2. python断网还能用吗_室友打游戏时,让他断网掉线!明明没断网就是没网!Python黑客!...
  3. 启明云端分享| ESP32-C3智能写字板应用解决方案
  4. 【计算机组成原理】定点运算器的基本结构
  5. http?https?相对协议?
  6. 写了一篇关于餐饮业陷入困境的文章
  7. python操作数据库之删除数据
  8. 微信小程序 体验版开启调试模式
  9. STEAM账号被盗(绑定QQ邮箱)的找回方法以及背后操作原理解析
  10. Ubuntu 耳机和音响没有声音
  11. 漫画:鉴权与安全访问控制的技术血脉
  12. 算法图解-狄克斯特拉算法
  13. 老子是一个怎样的传奇!(转发)
  14. 【深度学习数学基础之线性代数】研究使用链式法则进行反向传播的求导算法
  15. [转帖]PAT 计算机程序设计能力考试
  16. 品优购电商系统开发 第19章 秒杀解决方案
  17. 用去水印小程序教大家微信小程序开发
  18. 普通断路器PS智能微型断路器
  19. 提权 --Windows提权方式总结
  20. 程序员找工作的各种坑…… 及防坑指南

热门文章

  1. 2019美赛A题—学习记录
  2. ENVI5.3下载与安装
  3. proteus中的米字(14段)数码管用法
  4. asp.net 动态生成二维码加文字描述或者二维码加logo
  5. windows安装pyspider教程
  6. CKS学习笔记-Sysdig
  7. Gradle化的Android Gallery3D App
  8. Linux多线程编程-线程函数返回值(返回复杂数据类型)
  9. 使用计算机键盘的基本步骤,键盘指法练习方法
  10. (一)LINGO入门---软件安装