kml文件内容细观
KML与GE开发
![KML与GE开发](https://img.taocdn.com/s3/m/43c2721ec5da50e2524d7f91.png)
Placemark可以是点,可以是线,可以为任何的Geometry对象 可以是点,可以是线,可以为任何的 可以是点 对象 被以下元素包含: 被以下元素包含:<Folder><Docunment>
展示例子
KML
OverLay KML文件
<!-- Overlay id="ID" --> <!-- GroundOverlay,ScreenOverlay --> <!-- inherited from Feature element --> <!-- specific to Overlay --> <color>ffffffff</color> <!-- kml:color --> <drawOrder>0</drawOrder> <!-- int --> <Icon> <href>...</href> </Icon> <!-- /Overlay -->
是用来组织管理其它Features,如Placemarks,Overlays , 是用来组织管理其它 , 展示示例) 等(展示示例)
Google Earth应用与开发 应用与开发
本节主要内容: 本节主要内容:
KML文件
什么是KML文件? 如何撰写KML文件? KML标签详解
GE二次开发
什么是GE二次开发? GE二次开发工具有哪些? GE COM GE开发实例详解
KML
什么是KML文件 文件 什么是
KML全称是Keyhole Markup Language (KML),是一个基于 XML语法和文件格式的文件,用来描述和保存地理信息如点,线,图 片,折线并能够在Google Earth客户端显示.
WGS84坐标和KML文件在线路勘测中的应用
![WGS84坐标和KML文件在线路勘测中的应用](https://img.taocdn.com/s3/m/f5241b7aaf1ffc4ffe47ac28.png)
35.794167
35.787806 35.788972 35.788194 35.774972 35.764472 35.764778
115.416778
115.436222 115.449056 115.458250 115.466417 115.485361 115.488028
-2.3E-05 6.67E-06
勘测的应用中,除了“数字化电力规划设计平台”为我单位自 主研发,其它涉及到的软件均为对大众开放的公共软件,如谷
歌地球、GPS状态、奥维地图浏览器、KML文件转换等软件。
2015/11/24
4
二、软件安装
电脑版:谷歌地球 • 需安装软件: 手机版:GPS状态 谷歌地球 电脑版:奥维地图 • 建议安装软件: 手机版:奥维地图 电脑版: KML文件制作 • 可选安装软件: 手机版: 微信 (免安装) 电建邮箱 设计平台
线路工程勘测,由于工作量分散,一般不使用测量仪器施放位置, 勘探点没有具体的坐标,多以地名标注,给勘测资料的归档、查询、 再利用造成很大难度。 随着GPS定位系统及其移动应用端的普及,使得线路工程外业勘 测工作得到了极大的便利。目前智能手机等移动设备上的GPS定位精
度一般在0.5~5.0m,完全满足线路工程勘探点对位置精度的要求。
2.25E-05 1.31E-05 -6.9E-06 4.17E-06 -2.5E-06 3.61E-06 1.64E-05 4.42E-05 -3E-05 6.94E-06 2.22E-06 -5E-06
-2.089
2.039 -0.629 -0.227 1.485 -2.718 0.201
0.604
4.47E-05 1.36E-05 2.67E-05 5.58E-05 1.39E-05 2.5E-06
善领行车记录文件的解读
![善领行车记录文件的解读](https://img.taocdn.com/s3/m/25e0774ab94ae45c3b3567ec102de2bd9705de4c.png)
善领行车记录文件的解读善领预警软件中行车记录文件的解读一、善领行车记录的使用办法:1.需要记录行车轨迹,必须设置善领的config.ini文件,将savelog=1(savelog=0不记录轨迹),记录文件将以天为单位记录在USER文件夹内。
文件名是:日期.LOG。
如20110524.LOG。
即2011年5月24日的行车航迹记录。
2.导出USER文件夹内的.LOG文件,利用NMEA2KML.exe,将LOG文件转换为kml 文件。
3.双击kml文件,便可以在Google Earth中打开你的行车记录。
二、善领行车记录文件的数据格式:行车记录文件采用NMEA0183标准[美国国家海洋电子协会海用电子设备通讯协议]。
文件可以用记事本打开,里面记录的有日期时间、经纬度、海拔高度、卫星仰角、卫星方位角、运动角度(真北)、运动角度(磁北)、水平运动速度等等。
行车记录每秒向当日LOG文件添加成组数据。
各版本在不同的状态下传输的成组数据行数不等,例如GPGSV数据每5秒传送一次,有些不传送GPVTG数据。
下面是截取LOG文件中的一组数据来说明文件的数据格式:成组7行数据数据注释$GPRMC,175151.960,V,4003.5057,N,11716.6084,E,000 .0,000 .0,100413,,,N*72 $GPRMC 推荐定位信息数据≤70字节$GPGGA,175151.960,4003.5057,N,11716.6084,E,0,02,00.0,,M,,M,,0000*5C $GPGGA 全球定位信息数据≤72字节$GPVTG,10.691,T,10.691,M,37.538,N,69.520,K,A*21 $GPVTG 地面速度信息数据≤34字节$GPGSA,A,1,01,20,,,,,,,,,,,,,*1D $GPGSA 卫星PRN 信息数据≤65字节$GPGSV,3,1,11,17,76,021,16,20,40,057,42,01,11,062,34 ,12,07 ,324,32*78 $GPGSV 卫星状态信息信息≤210字节$GPGSV,3,2,11,04,52,266,,28,37,177,,10,23,193,,02,18,255,*74 $GPGSV 卫星状态信息信息≤210字节$GPGSV,3,3,11,32,16,041,,23,11,103,,24,07,291,*42 $GPGSV 卫星状态信息信息≤210字节第1行:$GPRMC,175151.960,V,4003.5057,N,11716.6084,E,000.0,000.0,10 0413,,,N*72 $GPRMC (推荐定位数据),后跟13个字段,以逗号分隔。
KML教程_1 基本部分
![KML教程_1 基本部分](https://img.taocdn.com/s3/m/db65d916eff9aef8941e0667.png)
KML 教程KML 是一种文件格式,用于在地球浏览器(例如 Google 地球、Google 地图和谷歌手机地图)中显示地理数据。
KML 使用含有嵌套的元素和属性的基于标记的结构,并符合 XML 标准。
所有标记都区分大小写,而且完全如KML 参考中列出的那样显示。
该参考指出了哪些标记是可选的。
在指定元素内,标记必须按照参考中显示的顺序显示。
如果您尚不熟悉 KML,请查看本文档和附带的示例文件(SamplesInEarth和SamplesInMaps),开始了解 KML 文件的基本结构和最常用的标记。
第一部分介绍了可以用 Google 地球用户界面创建的地图项。
这些地图项有:地标、说明、地面叠加层、路径和多边形。
第二部分介绍了需要用文本编辑器编写 KML 的地图项。
用“.kml”或“.kmz”扩展名保存文本文件时,地球浏览器会知道如何显示它。
提示:要在 Google 地球中查看某地图项的KML“代码”,只需在 Google 地球的三维查看器中右键点击该地图项并选择“复制”。
然后将剪贴板内容粘贴到任一文本编辑器中。
Google 地球中显示的可视地图项将转换为与其相当的 KML 文本。
您一定要试试该功能。
此处描述的所有示例都在KML Samples文件中。
请先下载该文件,然后在Google 地球中查看这些示例。
目录1.基本 KML 文档1.地标2.地标中的描述性 HTML3.地面叠加层4.路径5.多边形2.高级 KML 文档1.几何图形样式2.突出显示图标的样式3.屏幕叠加层4.网络链接3.KML MIME 类型KML几何对象类型KML文档格式第1行:XML 标头。
这是每个 KML 文件的第 1 行。
该行前面不能有空格或其他字符。
第2行:KML 名称空间声明。
这是每个 KML 2.2 文件的第 2 行。
1 基本 KML 文档最简单的 KML 文档类型就是可直接在 Google 地球中编写的文档,也就是说您无需在文本编辑器中编辑或创建任何 KML。
Google Earth KML中文说明
![Google Earth KML中文说明](https://img.taocdn.com/s3/m/549116fd700abb68a982fb91.png)
基于Google Earth客户端版本3.0 的KML 版本2.0本文来源于Google由翻译并整理,若有任何疑问,可到评论区留言KML 2.0介绍KML全称是Keyhole Markup Language KML,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示,(KML以前的版本能够被Google Earth读取并保存为KML 2.0) KML 2.0提供以下功能:•指定一个地点的图标和标注来区分每一个地点•为每一个视图指定明确的视角来创建不同的特写镜头•使用指定到屏幕或地理位置的图片标注•为特定种类的标注定义显示样式•为标注指定基于简单HTML语法的描述,支持超级链接和图片的显示•使用目录(folders)对标注进行树形的分类管理(为了便于理解和符合习惯,将"folder"翻译为"目录",实际上是代表一组地理标注,请谅解)•基于时间戳记的标注可以用来进行动态的播放•从本地或远程的网络地址动态的加载KML文件•当Google Earth客户端视图变化时,自动将视图信息发送给指定的源服务器并从服务器获取相关的标注信息KML被Google Earth viewer显示的过程和HTML网页被浏览器处理差不多,而且和HTML一样,KML也使用一种基于标签(名称和属性)的语法格式来描述地里标注信息,可以说,Google Earth viewer是一个KML文件浏览器.•KML 2.0 What's New•编写您自己的Google earth KML文件•KML基础o常用标签o地名标注(Placemarks)o几何图形(Geometry)o目录(Folders)o文档(Documents)o图片标注(Image Overlays)▪地理图片标注(Ground Overlays)▪屏幕图片标注(Screen Overlays) o时间o样式o Schemaso网络连接o Google Earth KML 2.0参考▪KML语法规则▪文档结构▪标记类型▪字符串▪KML标签列表▪<address>▪<altitudeMode>▪<begin>▪<color>▪<coordinates>▪<description>▪<Document>▪<drawOrder>▪<east>▪<end>▪<extrude>▪<fill>▪<Folder>▪<geomColor>▪<GeometryCollection>▪<geomScale>▪<GroundOverlay>▪<h>▪<heading>▪<href>▪<Icon>▪<IconStyle>▪<innerBoundaryIs>▪<labelColor>▪<latitude>▪<LatLonBox>▪<LinearRing>▪<LineString>▪<longitude>▪<name>▪<NetworkLink>▪<north>▪<ObjArrayField>▪<ObjField>▪<open>▪<outerBoundaryIs>▪<outline>▪<overlayXY>▪<Pair>▪<parent>▪<Placemark>▪<Point>▪<Polygon>▪<PolyStyle>▪<range>▪<refreshInterval>▪<refreshVisibility>▪<rotation>▪<Schema>▪<scale>▪<ScreenOverlay>▪<screenXY>▪<SimpleArrayField>▪<SimpleField>▪<size>▪<south>▪<snippet>▪<Style>▪<StyleMap>▪<styleUrl>▪<tessellate>▪<tilt>▪<TimePeriod>▪<TimeInstant>▪<timePosition>▪<type>▪<href>▪<Url>▪<viewRefreshMode>▪<viewRefreshTime>▪<visibility>▪<w>▪<x>▪<y>KML 1.0是由原先的Keyhole客户端进行读写的文件格式,Google Earth完全支持KML 1.0文件,KML 2.0 是KML 1.0的升级版本,主要的更新如下:o Google Earth默认的输出文件格式改为KMZ,这是一个经过ZIP 格式压缩过的KML文件,可以被任何支持ZIP压缩文件格式的软件打开,这种文件的优点是自身可以包含图片而不需要引用网络上的图片;o<description>标签现在可以支持一些标准的HTML格式语法,例如链接、图片、带格式文本和表格;o过去使用的<View>标签被新的<LookAt>标签替代;o对<ScreenOverlay>标签的语法进行了升级更新;o样式功能更为强大,现在由<IconStyle>、<LabelStyle>、<LineStyle>和<PolyStyle>四个分样式组成;o过去的网络连接功能升级后能支持基于视图变化的更新;o线段可以选择是否根据地形进行自动调整;o<opacity>标签不再支持,推荐使用<color>标签来实现透明;o Network links功能现在支持向服务器发送当前视角信息,以便让服务器返回特定的KML文件。
Google Earth KML中文说明(详细)
![Google Earth KML中文说明(详细)](https://img.taocdn.com/s3/m/cb130548fe4733687e21aa11.png)
Google Earth KML:Google Earth KML文件格式原创翻译,不得转载Google Earth KML gisman@BlogChinaKML 2.0KML全称是Keyhole Markup Language,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示,(KML以前的版本能够被Google Earth读取并保存为KML2.0) KML2.0提供以下功能:�指定一个地点的图标和标注来区分每一个地点�为每一个地物定义相应的视角�使用指定到屏幕或地理位置的图片标注�定义地物的显示样式�为标注指定基于简单HTML语法的描述,支持超级链接和图片的显示�使用树形目录管理地物�从本地或远程的网络地址动态的加载KML文件�当Google Earth客户端视图变化时,自动将视图信息发送给指定的源服务器并从服务器获取相关的标注信息KML被Google Earth viewer处理并显示的过程和HTML网页被浏览器处理差不多,类似于HTML,KML也使用一种基于标签(名称和属性)的语法格式来描述地里标注信息,因此,Google Earth viewer是一个KML文件浏览器.�o KML 2.0o KMLo?�KMLo KML(a simple KML file)o(place mark)o(geometry)o(image overlays)o(style)�样式效果(style effect)�样式参考(style reference)�本地参考样式(locally reference style)�基于ID关键字的参考样式(共享样式)(reference style by ID)�样式地图(style maps)�文件(Documents)�目录(folder)�几何图形集合(Geometry collection)o(Network link)�地点(location)�刷新的地物(Refresh Features)�网络控件(Network Control Features)�Common Elements�Schemas�KML KML Syntax Ruleso文件结构(Document Structure)o标签类型(Tag Types)o字符串值(String Values)�KML标签查询(KML Tag Dictionary)o地址o高程模式o颜色o颜色模式oo坐标o描述o文件o渲染顺序o东o突出物o填充物o鸟瞰视图o目录o几何图形颜色o几何图形集合o几何图形比例尺o地面叠加层ooo超链接o图标o图标样式o内部边界o关键词o标签颜色o标签样式o纬度o经纬度框o线性环o连续线o线条样式o链接描述o链接名o经度o视点o信息o最小刷新间隔o多种几何图形o名称o网络连接o网络连接控件o北o对象数组域o对象域o外部边界o轮廓o叠加层oo父节点o地物标记o点o多边形o多边形样式o范围o内部刷新o刷新样式o刷新可视标记o旋转o表达模式o比例尺o屏幕叠加层o屏幕坐标o简单对象数组域o简单域o大小o南o片断o样式o样式地图o样式Urlo方格o斜度o类型oo可视边界比例尺o可视刷新模式o可视刷新时间o可视格式o可视标签oo宽度o X坐标值o Y坐标值KML 2.0KML2.0 版本最新特性如下:�新对象,控制通过网络连接传送的文件。
KML 文档简介
![KML 文档简介](https://img.taocdn.com/s3/m/a78b6df5f90f76c661371a61.png)
3.成为开放地理资讯编码标准
KML在2008年4月14日被OGC(Open Geospatial Consortium, Inc. 开放地理信息系 统协会, 或译成开放式地理空间协会)宣布为 开放地理资讯编码标准,而Goolge同时也 在网站Blog上宣布不再控制KML标准,而移 交给OGC去维护发展,而被采用的开放地 理资讯编码标准(OpenGIS KML 2.2 Encoding Standard)可以在这个网页见到完整的手册 内容:
▪ 网络链接可让您从远程计算机提供内容,并且常用于向 大量用户分发数据。用这种方式分发数据时,如果需要 修改数据,只需在源位置修改,所有用户就会自动收到 更新后的数据。
海拔高度模式
▪ absolute ▪ clampToGround ▪ clampToSeaFloor ▪ relativeToGround ▪ relativeToSeaFloor
▪ 地面叠加层的定位由 <LatLonBox> 标签控 制。边框值以南纬、北纬和东经、西经形 式给出。此外,旋转值是针对 y 轴与网格 北端不重合的图像给出的。该示例为叠加 层使用 JPEG 图像。Google 地球还支持 BMP、GIF、TIFF、TGA 和 PNG 格式。
<GroundOverlay> <name>Large-scale overlay on errain</name> <Icon> <href>http://documentation/etna.jpg</href> </Icon> <LatLonBox> <north>37.91904192681665</north> <south>37.46543388598137</south> <east>15.35832653742206</east> <west>14.60128369746704</west> <rotation>-0.1556640799496235</rotation> </LatLonBox> </GroundOverlay>
KML培训手册-2012
![KML培训手册-2012](https://img.taocdn.com/s3/m/b5eb37ec941ea76e58fa0423.png)
FME Desktop KML 培训手册FME Desktop 2012KML基础如果你刚接触KML数据,这里有一些基础知识可供学习。
什么是KMLKML全称为Keyhole Markup Language,是一种基于XML的格式(或语言),用于存储谷歌地球和谷歌地图使用的数据。
“Keyhole”这个名字源自KML格式和谷歌地球产品最初的开发人员。
KMZ是KML格式数据集的一种变换形式。
KMZ只是简单的将KML数据集通过ZIP程序进行压缩并重命名为新的文件后缀。
KMZ 最常用来作为存储一组栅格影像;KMZ(ZIP)文件夹中存储了所有的栅格文件(JPEG或GeoTIFF),还有一个链接它们的KML文件。
KML数据集是什么样的呢?KML数据集看起来与XML或HTML文档类似。
事实上,谷歌地球需要KML数据就像IE浏览器需要HTML文档一样:仅仅只是一个可以让用户对数据集可视化的浏览器。
谷歌地图也是一个KML浏览器,在写这篇文章时,它仅仅支持KML的子集。
还有其他一些KML查看器,但这里我们坚持使用Google Earth。
与HTML一样,KML具有影响特定要素显示的标签。
由于KML 存储的数据具有空间特性,标签是与空间数据有关的符号;例如,线条样式,点符号和面填充颜色。
完成数据清理后(移除各种样式标签后),一个简单的KML数据如下:KML与FME了解FME所支持格式的结构与FME的关系非常重要,以及FME 如何把这些结构定义为一个模式。
要素类和数据集KML是文件型数据集,即每个KML文件就是一个FME数据集。
每个文件中包含“Floder ID”的节点即FME的要素类。
例如,如果FME数据集名称为planning,要素类名称为ROADS,那么输出的KML文件,文件名为planning.kml,包含一个节点:<Folder id="kml_ft_ROADS">KML与坐标系KML存储基于WGS84基准面的经纬度坐标。
110KV电力线路KML文件与影像叠加并导出为图片案例
![110KV电力线路KML文件与影像叠加并导出为图片案例](https://img.taocdn.com/s3/m/9584135aeff9aef8951e0615.png)
110KV电力线路KML文件与影像叠加并导出为图片案例1.概述水经注软件除了可以下载无水印Google Earth卫星影像、地方高清天地图、百度高德大字体打印地图,按1万/5千等国家标准图幅下载,下载陆地及海洋高程、STRM高程、提取10米等高线等深线、CASS高程点,下载含高度的全国矢量建筑、全国乡镇及街区行政区划、地名点、高速铁路网、公交路线、水系、百度高德POI兴趣点、全球OpenStreet矢量之外,还可以导入KML矢量文件与影像叠加并导出图片。
这里以110KV电力线路为例,介绍如何将KML文件与影像叠加并导出为图片。
2.什么是KML文件KML,是标记语言(Keyhole Markup Language)的缩写,最初由Keyhole公司开发,是一种基于XML语法与格式的、用于描述和保存地理信息(如点、线、图像、多边形和模型等)的编码规范,可以被 Google Earth 和 Google Maps 识别并显示。
Google Earth 和 Google Maps 处理 KML 文件的方式与网页浏览器处理 HTML 和 XML 文件的方式类似。
像 HTML 一样,KML 使用包含名称、属性的标签(tag)来确定显示方式。
因此,您可将 Google Earth 和 Google Maps 视为 KML文件浏览器。
2008年4月微软的OOXML成为国际标准后,Google 公司宣布放弃对KML的控制权,由开放地理信息联盟(OGC)接管KML语言,并将“Google Earth”及“Google Maps”中使用的KML语言变成为一个国际标准。
3.在GoogleEarth中打开110KV电力线路KML文件在Google Earth中打开110KV电力线路KML文件,可以看到电力线路相关坐标点在地图中的叠加显示效果,并且可以在左侧图层面板中查看KML文件中所包含的图层,如下图所示。
打开110KV电力线路文件在GoogleEarth中,如果要将电力线路数据叠加在卫星影像并保存为图片,保存的图片大小有限,因此可以通过在水经注软件中叠加导出无大小限制的图片。
中篇:第三章 Google地图开发技术——KML
![中篇:第三章 Google地图开发技术——KML](https://img.taocdn.com/s3/m/6b8c29d24028915f804dc2c2.png)
• 4)路径 • 在 Google 地球中可以创建多种不同类型的 路径,并且可轻松地利用你的数据充分发 挥创造力。在 KML 中,路径是用 <LineString> 元素创建的。 • 5)多边形 • 你可以使用多边形来创建简单的建筑物及 其他形状。
• 三、高级 KML 文档 • 本部分介绍了某些必须用文本编辑器编写 的 KML 元素,如几何图形的共享样式、地 标的突出显示图标和屏幕叠加层。
• 许多应用程序都可显示 KML,包括 Google 地球、Google 地图、谷歌手机地图、 NASA WorldWind、ESRI ArcGIS Explorer、 Adobe PhotoShop、AutoCAD 和 Yahoo! Pipe。
• 二、基本 KML 文档 • 最简单的 KML 文档类型就是可直接在 Google 地球中编写的文档,也就是说您无 需在文本编辑器中编辑或创建任何 KML。 Placemark、GroundOverlay、Path 和 Polygon 都可以直接在 Google 地球中编写。
• KML,是 Keyhole 标记语言(Keyhole Markup Language)的缩写,是一种采用 XML 语法与格式的语言,用于描述和保存 地理信息(如点、线、图像、多边形和模 型等),可以被 Google Earth 和 Google Maps 识别并显示 • 因而,可以使用 KML 来与其他 Google Earth 或 Google Maps 用户分享地标与信 息
• Geodatabase是ArcInfo 8引入的一个全新 的空间数据模型,是建立在DBMS之上的统 一的、智能化的空间数据库。 • Geodatabase要素类虽然将空间对象划分 为7类,即点、线、多边形、注记、维度、 多点和Multipatches,但可以归为KML的5 种基本空间对象模型:点、线、面、复合 体和对象属性。
KML--基础入门
![KML--基础入门](https://img.taocdn.com/s3/m/12e2975277232f60ddcca18b.png)
KML向导KML是一种在Earth Browser(比如Google Earth,Google Maps,Google Maps for mobile)用于显示地理数据的文件格式。
KML用使用一种可以嵌套元素和标记的结构并且基于XML标准。
所有的这些标签都是大小写敏感的并且必须精确的出现在KML2.2Reference中.这个参考手册指出哪些标记是可选的。
在一个给定的元素中,标记必须按照Reference显示的顺序出现。
如果你是一个KML新手,可以阅读这篇文档并且使用这些例子来开始学习KML文件基本结构。
第一部分描述了使用Google Earth软件来创建的特性。
这些特征包括placemarks,descripttions,ground overlays,paths和polygons。
第二部分描述了使用一个text editor来创建的特性。
当一个文件存储使用kml或者kmz扩展名,google earth浏览器知道怎样来显示它。
目录基本的KML 文档PlacemarksDescriptive HTML in PlacemarksGround OverlaysPathsPolygons高级的KML文档对于Geometry的styles对于高亮的icons的styles对于屏幕的覆盖图层网络连接KML MIME Types一、基本KML文档KML最简单的文档是那些可以直接在Google Earth发布的。
也就是说,你不必在一个text editor中编辑或创建任何KML,像这些Placemarks,Descriptive HTML in Placemarks,Ground Overlays,Paths,Polygons元素可以直接在Google Earth中创建。
1.1 Placemarks一个Placemark是google earth中最普遍的特征。
他标记真地球上表面的位置,使用一个黄色的图钉作为图标。
利用中线信息制作数据范围kml文件的制作及技巧
![利用中线信息制作数据范围kml文件的制作及技巧](https://img.taocdn.com/s3/m/b90085893169a4517623a307.png)
使用软件:1)Smart Mapping2)Global Mapper3)Google Earth制作流程及技巧A.识别中线数据类型、坐标系统及文件格式1)中线数据类型有点、线两种。
点类型的数据需要执行B步骤生成相应的线类型数据,线类型数据从C步骤开始操作。
2)常见坐标系统有WGS84、Xian80、Beijing54,常见的投影方式有高斯3度、高斯6度、经纬度、UTM、横轴墨卡托。
3)常见的文件格式有txt文件、dat文件、kml/kmz文件、dwg/dxf等。
提示:通常txt和dat文件存放的是中线点数据,而kml/kmz和dwg/dxf则可能会包含线数据或者点数据或者两者都包含。
B.制作中线数据根据数据的坐标系和投影方式的不同,操作方法不同,甚至有多种制作方法。
1)经纬度投影方式经纬度投影的通常都是WGS84坐标系统,这种类型的点数据可以通过Global Mapper直接生成线数据。
a)打开Global Mapper,点击Open Your Own Data Files,在如图1所示弹出对话框中选择要进行操作的点文件。
图 1 Global Mapper中打开文件b)设置参数。
弹出图2所示对话框:○1选中图中红色框框住的选项;○2绿色框选中的位置需根据自己数据情况选择,如东北高格式的数据如图勾选,北东高格式的数据选择。
然后点击对话框右上角的OK按钮。
图 2 Global Mapper中ASCII文件导入选项设置c)弹出图3所示对话框,提示选择数据的坐标系统,点击OK。
图 3 Global Mapper中未知坐标系提示框d)弹出选择坐标系统的对话框,如图4所示,默认设置,点击OK。
图 4 Global Mapper中选择坐标投影对话框e)此时Global Mapper自动按照文件中点的顺序和关系自动生成线要素,如图5所示。
图 5 完成点数据导入2)非经纬度投影方式平面投影的文件有两种可供选择的制作方法:a)可以通过Smart Mapping中展控制点的方式生成中线文件保存为dwg或dxf格式。
解析KML文件,获取Coordinates标签中的经纬度坐标值
![解析KML文件,获取Coordinates标签中的经纬度坐标值](https://img.taocdn.com/s3/m/9f39340aec630b1c59eef8c75fbfc77da26997a8.png)
解析KML文件,获取Coordinates标签中的经纬度坐标值<textarea name="code" class="java" cols="50" rows="15">package mapServlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import unit.GPolyline2;import unit.KmlParseForCoordinate;/*** KML 标签coordinates解析Servlet* @author libin**/public class KmlParseForCoordinate_servelt extends HttpServlet {private String filePath = "E://eclipseworkspace//lw_tracing//WebRoot//kml//test.kml";/*** 缺省串行版本标识*/private static final long serialVersionUID = 1L;@SuppressWarnings("unchecked")@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ArrayList coorArr = new ArrayList();StringBuffer result = new StringBuffer();String coorPolyline = "";String levels = "";//编码级别response.setContentType("text/xml;charset=UTF-8");// String coordinates = KmlParseForCoordinate.getCoordinates(filePath);//用于单条线处理coorArr = KmlParseForCoordinate.getCoordinatesForArr(filePath);//用于多条线路处理for(int index = 0; index < coorArr.size(); index++){//得到每一条线路内容String coordinates = coorArr.get(index).toString();StringBuffer linePolyStbuf = new StringBuffer();//解析每一条线路int coorLength = coordinates.split(",").length;String[] coorArray = coordinates.split(",");for(int i = 0; i <= coorLength-1;i++){if(i==0){linePolyStbuf.append(coorArray[i+1]);linePolyStbuf.append(",");}if(i==1){linePolyStbuf.append(coorArray[i-1]);linePolyStbuf.append(";");}if((i!=0) && (i%2==0) && (i!=coorLength-1)){linePolyStbuf.append(coorArray[i+1]);linePolyStbuf.append(",");}if((i!=1) && (i%2==1)){linePolyStbuf.append(coorArray[i-1]);linePolyStbuf.append(";");}}coorPolyline = GPolyline2.createEncodings(linePolyStbuf.toString());levels = GPolyline2.encodeLevel(linePolyStbuf.toString());//设置每一个线路的编码折线和编码级别String resultPoly = coorPolyline+"#"+levels;//放入结果集中result= result.append(resultPoly);//每一条线路用%分隔if(index < coorArr.size()-1){result = result.append("%");}}PrintWriter out = response.getWriter();//out.println(coorPolyline+"#"+levels);out.println(result.toString());}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the POST method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}} import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;/*** 解析KML文件* 获取Coordinates标签中的经纬度坐标值* 用于解析* <Placemark><styleUrl>#khStyle1042</styleUrl><LineString><coordinates>118.789748,30.93991700000001,118.776237,30.93783,</coordinates></LineString></Placemark>此类格式的文件* @author libin**/public class KmlParseForCoordinate {//存储xml元素信息的容器private static List<Leaf> elemList = new ArrayList<Leaf>();/*** 载入一个文件* @param fileName* @return*/private static Document loadFile(String fileName){Document document = null;try{SAXReader reader = new SAXReader();FileInputStream in = new FileInputStream(new File(fileName));InputStreamReader inReader=new InputStreamReader (in,"UTF-8");BufferedReader bufReader=new BufferedReader(inReader);document = reader.read(bufReader);}catch(Exception ex){ex.printStackTrace();}return document;}/*** 递归遍历方法** @param element*/@SuppressWarnings("unchecked")private static void getElementList(Element element) {List elements = element.elements();if (elements.size() == 0) {//没有子元素String xpath = element.getName();String value = element.getTextTrim();elemList.add(new Leaf(xpath, value));} else {//有子元素for (Iterator it = elements.iterator(); it.hasNext();) {Element elem = (Element) it.next();getElementList(elem);}}}/*** 解析kml文件中的coordinates的标签,得到经纬度连接字符串* @param elemList KML元素容器* @return*/private static String getListStringForCoordinate(List<Leaf> elemList){StringBuffer sb = new StringBuffer();String keyName = "";for(Iterator<Leaf> it = elemList.iterator(); it.hasNext();){Leaf leaf = it.next();if("coordinates".equals(leaf.getXpath())){keyName = leaf.getValue();if(!"".equals(keyName)){sb.append(keyName);}}}return sb.toString();}/*** 获得kml文件中的<coordinates>标签内容,并且每一个<coordinates>标签内容是一个单独的对象,存于ArrayList对象中* @param elemList* @return*/private static ArrayList<StringBuffer> getListStringForCoordinateArr(List<Leaf> elemList){ArrayList<StringBuffer> coorArr = new ArrayList<StringBuffer>();for(Iterator<Leaf> it = elemList.iterator(); it.hasNext();){Leaf leaf = it.next();if("coordinates".equals(leaf.getXpath())){StringBuffer sb = new StringBuffer();String keyName = "";keyName = leaf.getValue();if(!"".equals(keyName)){sb.append(keyName);}coorArr.add(sb);}}return coorArr;}/*** 解析指定的KML文件,得到经纬度字符串* 此方法最好用于一条线路的解析* @param file* @return*/public synchronized static String getCoordinates(String file){ //首先清空列表elemList.clear();Document document = loadFile(file);Element root = document.getRootElement();getElementList(root);return getListStringForCoordinate(elemList);}/*** 解析KML文件,每一个<coordinates>标签内容是一个单独的对象,存于ArrayList对象中* 这个方法最好用于多条线的解析* @param file* @return*/public synchronized static ArrayList<?> getCoordinatesForArr(String file){//首先清空列表elemList.clear();Document document = loadFile(file);Element root = document.getRootElement();getElementList(root);return getListStringForCoordinateArr(elemList);}public static void main(String[] args){String filePath = "E://eclipseworkspace//lw_tracing//WebRoot//kml//test.kml";// System.out.println(getCoordinates(filePath));StringBuffer result = new StringBuffer();String coorPolyline = "";String levels = "";//编码级别ArrayList<?> coorArrayList = new ArrayList<Object>();coorArrayList = getCoordinatesForArr(filePath);System.out.println("ArrayList size :" + coorArrayList.size());for(int index = 0; index < coorArrayList.size(); index++){//得到每一个标签内容String coordinates = coorArrayList.get(index).toString();StringBuffer linePolyStbuf = new StringBuffer();//解析每一个标签值int coorLength = coordinates.split(",").length;String[] coorArray = coordinates.split(",");for(int i = 0; i <= coorLength-1;i++){if(i==0){linePolyStbuf.append(coorArray[i+1]);linePolyStbuf.append(",");}if(i==1){linePolyStbuf.append(coorArray[i-1]);linePolyStbuf.append(";");}if((i!=0) && (i%2==0) && (i!=coorLength-1)){linePolyStbuf.append(coorArray[i+1]);linePolyStbuf.append(",");}if((i!=1) && (i%2==1)){linePolyStbuf.append(coorArray[i-1]);linePolyStbuf.append(";");}}coorPolyline = GPolyline2.createEncodings(linePolyStbuf.toString());levels = GPolyline2.encodeLevel(linePolyStbuf.toString());//设置每一个线路的编码折线和编码级别String resultPoly = coorPolyline+"#"+levels;//放入结果集中result= result.append(resultPoly);//每一条线路用%分隔if(index < coorArrayList.size()-1){result = result.append("%");}}} }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="/kml/2.2" xmlns:gx="/kml/ext/2.2" xmlns:kml="/kml/2.2" xmlns:atom="/2005/Atom"> <Document>
<name>火车.kml</name>
<StyleMap id="msn_ylw-pushpin2">
<Pair>
<key>normal</key>
<styleUrl>#sn_ylw-pushpin</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#sh_ylw-pushpin0</styleUrl>
</Pair>
</StyleMap>
<Style id="sn_ylw-pushpin">
<IconStyle>
<scale>1.1</scale>
<Icon>
<href>/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
</IconStyle>
<PolyStyle>
<fill>0</fill>
</PolyStyle>
</Style>
<Style id="sh_ylw-pushpin0">
<IconStyle>
<scale>1.3</scale>
<Icon>
<href>/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
</IconStyle>
<PolyStyle>
<fill>0</fill>
</PolyStyle>
</Style>
<Placemark>
<name>火车</name>
<open>1</open>
<styleUrl>#msn_ylw-pushpin2</styleUrl>
<Polygon>
<tessellate>1</tessellate>
<outerBoundaryIs>
<LinearRing>
<coordinates>
113.2250003549929,34.25000131184333,0
113.2249995024937,34.20832637548581,0 113.2874970411239,34.20833220494778,0 113.2875034721759,34.25000613214228,0 113.2250003549929,34.25000131184333,0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>。