当前位置:首页 > Java程序 > 正文内容

kmeansjava实现(javamap获取key)

abcsky884个月前 (01-26)Java程序53

本篇文章给大家谈谈

KML(Keyhole Markup Language,Keyhole 标记语言)最初是由Google 旗下的Keyhole 公司开发和维护的一种基于XML 的标记语言,利用XML 语法格式描述地理空间数据(如点、线、面、多边形和模型等) ,可以被 Google Earth、 Google Maps、国内的奥维软件识别并显示。

kmeansjava实现(javamap获取key)

如果你需要解析Kml文件并将数据保存在自己的数据库,在自己的平台展示kml的地图数据的画,那么本文为你提供了解析Kml数据的Java方式的实现。

接下去讲下使用步骤引入Kml解析依赖首先下载第三方的jar包(打开网址后还需要点下Download才会下载哦)引流推广哪些网站:https://github.com/huangtingliu/java_test/blob/master/src/main/java/com/huangtl/kml/JavaAPIforKml-2.2.0.jar

形状实体类和解析类代码接下去我们需要新建形状(点/线/多边形)实体类,和一个形状数据解析类,以及形状解析出来的数据存放对象KmlData,KmlPoint(点)import de.micromata.opengis.kml.v_2_2_0.Coordinate;

import java.util.List; publicclassKmlPoint{ 引流推广哪些网站    private  String color;     private List points;

private String name;     public String getName(){         return name;     }     publicvoidsetName(String name)

{         this.name = name;     }     public String getColor(){ 引流推广哪些网站        return color;     }     public

voidsetColor(String color){         this.color = color;     }     public List getPoints()

{         return points;     }     publicvoidsetPoints(List points){         this.points = points;引流推广哪些网站     } }

KmlLine(线)import de.micromata.opengis.kml.v_2_2_0.Coordinate; import java.util.List; publicclassKmlLine

{     private  String color;     private List points;     privatelong width;     private String name;     

public String getName(引流推广哪些网站){         return name;     }     publicvoidsetName(String name){         this

.name = name;     }     public String getColor(){         return color;     }     publicvoidsetColor

(String color){         this.color = col引流推广哪些网站or;     }     public List getPoints(){         return

points;     }     publicvoidsetPoints(List points){         this.points = points;     }     

publiclonggetWidth(){         return width;     }     publicvoidsetWidth(long引流推广哪些网站 width){         this.width = width;     } }

KmlPolygon(面/多边形)import de.micromata.opengis.kml.v_2_2_0.Coordinate; import java.util.List; /** * @program

: 面状实体 **/publicclassKmlPolygon{     private  String color;     private List 引流推广哪些网站points;

private String name;     public String getName(){         return name;     }     publicvoidsetName(String name)

{         this.name = name;     }     public String getColor(){         return color;     }     pub引流推广哪些网站lic

voidsetColor(String color){         this.color = color;     }     public List getPoints()

{         return points;     }     publicvoidsetPoints(List points){         this.points = points;     } }

KmlData类用于存放解析Kml文件的点线面的数据im引流推广哪些网站port java.util.ArrayList; import java.util.List; publicclassKmlData {private。

List kmlPoints;     private List kmlLines;     private List kmlPolygons;     

public List getKmlPoints() {         return kmlPoints;     }     publicvoidsetKmlPoints(List 引流推广哪些网站kmlPoints)

{         this.kmlPoints = kmlPoints;     }     public List getKmlLines() {         return kmlLines;     }     

publicvoidsetKmlLines(List kmlLines){         this.kmlLines = kmlLines;     }     public List getKmlPolygons() {         

return引流推广哪些网站 kmlPolygons;     }     publicvoidsetKmlPolygons(List kmlPolygons){         this.kmlPolygons = kmlPolygons;     }

public List getAllItems(){         List list = new ArrayList();         list.addAll(getKmlPoints());         

list.addAll(getKmlLines());   引流推广哪些网站      list.addAll(getKmlPolygons());         returnlist;     } }ParsingKmlUtil类

最重要的解析kml文件类package com.huangtl.kml; import de.micromata.opengis.kml.v_2_2_0.*; import java.io.File; import java.io.InputStream; import java.util.ArrayList; 引流推广哪些网站 import java.util.

List; /** * @description: KML文件解析 **/publicclassParsingKmlUtil{     /**      * 解析kml文件      */public

KmlData parseKmlByFile(File file) {         Kml kml = Kml.unmarshal(file);         return getByKml(kml);    引流推广哪些网站 }

/**      * 解析kml文件流      * @param inputstream      * @return      */public KmlData parseKmlByInputstream(InputStream inputstream) {         Kml kml = Kml.unmarshal(inputstream);         

return getByKml(kml);     }     /**      * Kml对象转自定义存储对象引流推广哪些网站      * @param kml      * @return      */private

KmlData getByKml(Kml kml){         KmlData kmlData = new KmlData();         kmlData.setKmlPoints(new

ArrayList<>());         kmlData.setKmlLines(new ArrayList<>());         kmlData.setKmlPolygons(n引流推广哪些网站ew ArrayList<>());         Feature feature = kml.getFeature();         parseFeature(feature, kmlData);

return kmlData;     }     /**      * 解析kml节点      * @param feature      * @param kmlData      */private

void parseFeature(Feature feat引流推广哪些网站ure, KmlData kmlData) {         if (feature != null) {             if (feature

instanceof Document) {                 List featureList = ((Document) feature).getFeature();                 featureList.

forEach(documentFeature -> {                             if (引流推广哪些网站documentFeature instanceof Placemark) {                                 getPlaceMark((Placemark) documentFeature, kmlData);                             }

else {                                 parseFeature(documentFeature, kmlData);                             } 引流推广哪些网站                         }                 );             }

elseif (feature instanceof Folder) {                 List featureList = ((Folder) feature).getFeature();                 featureList.

forEach(documentFeature -> {                             if (docume引流推广哪些网站ntFeature instanceof Placemark) {                                 getPlaceMark((Placemark) documentFeature, kmlData);                             }

else{                                 parseFeature(documentFeature, kmlData);                             }      引流推广哪些网站                   }                 );             }         }     }

private void getPlaceMark(Placemark placemark, KmlData kmlData) {         Geometry geometry = placemark.getGeometry();         String name = placemark.getName();         

if(name==null){ 引流推广哪些网站             name=placemark.getDescription();         }         parseGeometry(name, geometry, kmlData);     }

/**      * 解析点线面形状的数据分别放入存储对象      * @param name 形状名称      * @param geometry 形状类型      * @param kmlData 存储对象      */

private vo引流推广哪些网站id parseGeometry(String name, Geometry geometry, KmlData kmlData) {         if (geometry !=

null) {             if (geometry instanceof Polygon) {                 Polygon polygon = (Polygon) geometry;                 Boundary outerBoundaryIs = polygon.getOuterBoundaryI引流推广哪些网站s();

if (outerBoundaryIs != null) {                     LinearRing linearRing = outerBoundaryIs.getLinearRing();                     

if (linearRing != null) {                         List coordinates = linearRing.getCoordinates();                         

if (coordinates != null) {                             outerBoundary引流推广哪些网站Is = ((Polygon) geometry).getOuterBoundaryIs();                             addPolygonToList(kmlData.getKmlPolygons(), name, outerBoundaryIs);                         }                     }                 }             }

elseif (geometry instanceof LineString引流推广哪些网站) {                 LineString lineString = (LineString) geometry;

List coordinates = lineString.getCoordinates();                 if (coordinates != null) {                     coordinates = ((LineString) geometry).getCoordinates();                     addLineStringTo引流推广哪些网站List(kmlData.getKmlLines(), coordinates, name);                 }             }

elseif (geometry instanceof Point) {                 Point point = (Point) geometry;                 

List coordinates = point.getCoordinates();                 if (coordinates != null) {            引流推广哪些网站         coordinates = ((Point) geometry).getCoordinates();                     addPointToList(kmlData.getKmlPoints(), coordinates, name);                 }             }

elseif (geometry instanceof MultiGeometry) {                 List geometries = ((MultiGeometry) ge引流推广哪些网站ometry).getGeometry();

for (Geometry geometryToMult : geometries) {                     Boundary outerBoundaryIs;                     

List coordinates;                     if (geometryToMult instanceof Point) {                         coordinates = ((Point) geometryToMult).getCoordinates(); 引流推广哪些网站                         addPointToList(kmlData.getKmlPoints(), coordinates, name);                     }

elseif (geometryToMult instanceof LineString) {                         coordinates = ((LineString) geometryToMult).getCoordinates();                         addLineStrin引流推广哪些网站gToList(kmlData.getKmlLines(), coordinates, name);                     }

elseif (geometryToMult instanceof Polygon) {                         outerBoundaryIs = ((Polygon) geometryToMult).getOuterBoundaryIs();                         addPolygonToList(kmlData.getKmlPolygons(), n引流推广哪些网站ame, outerBoundaryIs);                     }                 }             }         }     }

/**      * 保存面状数据      * @param kmlPolygonList 已有面状数据      * @param name 面状名称      * @param outerBoundaryIs 面状信息      */

private 引流推广哪些网站void addPolygonToList(List kmlPolygonList, String name, Boundary outerBoundaryIs) {         LinearRing linearRing = outerBoundaryIs.getLinearRing();

//面         KmlPolygon kmlPolygon = new KmlPolygon();         kmlPolygon.setPoints(linearRing.getCoordinates());        引流推广哪些网站 kmlPolygon.setName(name);         kmlPolygonList.add(kmlPolygon);     }

/**      * 保存线状数据      * @param kmlLineList 已有线状数据      * @param coordinates 线状经纬度数据      * @param name 线状名称      */

private void addLineStringToList( List kmlLineList, List引流推广哪些网站 coordinates, String name) {         KmlLine kmlLine =

new KmlLine();         kmlLine.setPoints(coordinates);         kmlLine.setName(name);         kmlLineList.add(kmlLine);     }     

/**      * 保存点状数据      * @param kmlPointList 已有点状数据      引流推广哪些网站* @param coordinates 点状经纬度数据      * @param name 点状名称      */

private void addPointToList(List kmlPointList, List coordinates, String name) {         KmlPoint kmlPoint =

new KmlPoint();         kmlPoint.setName(name);         kmlPoint.setPoints(coordinates); 引流推广哪些网站         kmlPointList.add(kmlPoint);     } }

测试解析效果创建一个测试类,写一个main方法测试下package com.huangtl.kml; import java.io.File; import java.io.FileInputStream; 。

import java.io.FileNotFoundException; publicclassTest{     public static void main(String引流推广哪些网站[] args) {         KmlData kmlData = getKmlData();

if (kmlData.getKmlPoints().size() > 0) {             System.out.println("点====");             for (KmlPoint k : kmlData.getKmlPoints()) {                 System.

out.println("点【"+k.getName()+"】        ====》       "+k.ge引流推广哪些网站tPoints());             }         }

if (kmlData.getKmlLines().size() > 0) {             System.out.println("线====");             for (KmlLine k : kmlData.getKmlLines()) {                 System.

out.println("线【"+k.getName()+"】        ====》       "+k.getPoints())引流推广哪些网站;             }         }

if (kmlData.getKmlPolygons().size() > 0) {             System.out.println("面====");             for (KmlPolygon k : kmlData.getKmlPolygons()) {                 System.

out.println("面【"+k.getName()+"】        ====》       "+k.getPoints());引流推广哪些网站             }         }     }

public static KmlData getKmlData(){         KmlData kmlData = null;         ParsingKmlUtil parsingKmlUtil = new ParsingKmlUtil();         String path = Main

.class.getClassLoader().getResource("").getPath();        引流推广哪些网站 File file = new File(path+"/test.kml"); //文件地址自己修改

try {             kmlData = parsingKmlUtil.parseKmlByInputstream(new FileInputStream(file));             assert kmlData !=

null;         } catch (FileNotFoundException e) {             e.printStackTrace();     引流推广哪些网站    }

return kmlData;     } }注意我这里解析的kml文件是本地的test.kml文件,你需要替换成自己的文件地址。看下解析效果,可以看到点线面的经纬度点数据都打印出来了。

点数据

线数据

面/多边形数据这些经纬度你都获取到了,自己想怎么展示就怎么展示了。

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://www.4blc.com/post/13116.html

分享给朋友:

“kmeansjava实现(javamap获取key)” 的相关文章

电热水器防电墙是什么意思呀(电热水器防电墙是什么意思图片)

本篇文章给大家谈谈 开门见山,电热水器中的防电墙元件其实就是下图这么个东西。位于电热水器连接外部的出入水口处。 说实话,开门见山,电热水器中的防电墙元件其实就是下图这么个东西。位于电热水器连接外部的出入水口处。 说实话,小编第一次见到也看不懂这是个什么东西。第一印象感觉是个...

大连北大青鸟计算机学校(在北大青鸟学java有用吗)

今天给各位分享 北大青鸟有着多年IT教育培训的经验,这些年过去,送走的学员也是一批接着一批,帮助的学员大部分都成功入职,下面就讲讲Java培训班出来的学员是如何找工作的1.尽量在简历中提到以往的商业项目经历,如果没有,可以多写一些学习项目,经验越多,越能显示你的工作能力。...

java培训班学校(学java的培训学校)

今天给各位分享 Java培训学校怎么选?如今,市面上的Java培训学校林林总总,让人眼花缭乱,想要选择一个最适合自己的学校并不容易,在选择Java培训学校时,应该注意哪些方面呢? Java培训学校怎么选?首先,应该了解清楚学校的培训方向和办学资质有着扎实的技术基础,并且有着...

java一般面试的问题(java面试问面试官什么问题)

今天给各位分享 一、常见的面试形式讲讲输入URL到网页显示发生什么?这就是直接抛给大家的“八股题”,没有一点拐弯抹角,这种问题在一面非常常见一面通过后,面试官觉得你基础还不错,那之后就见不到这种问题了(文末可以领取资料!。 )你可以讲一下URL到网页显示,每一层具体干了什么...

java基础学完能干什么(java基础学完要多久)

本文分享给大家的是: 对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做的事情抽象成对象,告诉对象去做。 所以要想学好java...

java程序工程师资格证报考要多少(java程序员需要考证吗)

今天给各位分享 Java的应用可以说是无处不在,从桌面办公应用到网络数据库等应用,从PC到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案,处处都有Java的身影,就连美国大型太空项目当中,也使用了Java来开发控制系统和相关软件。 用...