ESRI的Shapefile文件向Google Earth中KML文件的格式转换.docx
- 文档编号:12031155
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:23
- 大小:1.42MB
ESRI的Shapefile文件向Google Earth中KML文件的格式转换.docx
《ESRI的Shapefile文件向Google Earth中KML文件的格式转换.docx》由会员分享,可在线阅读,更多相关《ESRI的Shapefile文件向Google Earth中KML文件的格式转换.docx(23页珍藏版)》请在冰豆网上搜索。
ESRI的Shapefile文件向GoogleEarth中KML文件的格式转换
ESRI的Shapefile文件向GoogleEarth中KML文件的格式转换
【摘要】:
21世纪,是科学技术与信息技术高速发展的时期,地理信息技术也不例外。
为了促进GIS技术与产业的发展,促进地理信息系统的开发,实现海量地理数据的共享和存储,我们有必要从实际应用出发,研究地理信息系统开发过程中出现的各种数据结构、数据格式以及它们之间的转换。
本文以ESRI的Shapefile文件和GoogleEarth中KML文件为例,利用ArcGIS软件中的二次开发功能,以VBA语言为依托,将Shapefile文件转换为GoogleEarth中KML文件,并给出最终的转换结果和程序代码。
【关键词】:
KML文件Shapefile文件ArcGIS地理信息系统GoogleEarth
1.引言
Shapefile文件是美国环境系统研究所(ESRI)所研制的GIS文件系统格式文件,是工业标准的矢量数据文件。
Shapefile将空间特征表中的非拓扑几何对象和属性信息存储在数据集中,特征表中的几何对象存为以坐标点集表示的图形文件—SHP文件,Shapefile文件并不含拓扑(Topological)数据结构。
一个Shape文件包括三个文件:
一个主文件(*.shp),一个索引文件(*.shx),和一个dBASE(*.dbf)表。
主文件是一个直接存取,变长度记录的文件,其中每个记录描述构成一个地理特征(Feature)的所有vertices坐标值。
在索引文件中,每条记录包含对应主文件记录距离主文件头开始的偏移量,dBASE表包含SHP文件中每一个Feature的特征属性,表中几何记录和属性数据之间的一一对应关系是基于记录数目的ID。
在dBASE文件中的属性记录必须和主文件中的记录顺序是相同的。
图形数据和属性数据通过索引号建立一一对应的关系。
Shapefile中坐标文件(.shp)由固定长度的文件头和接着的变长度空间数据记录组成。
文件头由100字节的说明信息组成,主要说明文件的长度、Shape类型、整个Shape图层的范围等等,这些信息构成了空间数据的元数据。
在导入空间数据时首先要读入文件头获取Shape文件的基本信息,并以此信息为基础建立相应的元数据表。
而变长度空间数据记录是由固定长度的记录头和变长度记录内容组成,其记录结构基本类似,每条记录都由记录头和记录内容组成(空间坐标对)。
记录头的内容包括记录号(RecordNumber)和坐标记录长度(ContentLength)两个记录项,Shapefile文件中的记录号都是从1开始的,坐标记录长度是按16位字来衡量的。
记录内容包括目标的几何类型(ShapeType)和具体的坐标记录(X,Y),记录内容因要素几何类型的不同,其具体的内容和格式都有所不同。
属性文件(.dbf)用于记录属性信息。
它是一个标准的DBF文件,也是由头文件和实体信息两部分构成。
其中文件头部分的长度是不定长的,它主要对DBF文件作了一些总体说明,其中最主要的是对这个DBF文件的记录项的信息进行了详细的描述,比如对每个记录项的名称,数据类型,长度等信息都有具体的说明。
属性文件的实体信息部分就是一条条属性记录,每条记录都是由若干个记录项构成,因此只要依次循环读取每条记录就可以了。
索引文件(.shx)主要包含坐标文件的索引信息,文件中每个记录包含对应的坐标文件记录距离坐标文件的文件头的偏移量。
通过索引文件可以很方便地在坐标文件中定位到指定目标的坐标信息。
索引文件也是由文件头和实体信息两部分构成的,其中文件头部分是一个长度固定(100bytes)的记录段,其内容与坐标文件的文件头基本一致。
它的实体信息以记录为基本单位,每一条记录包括偏移量(Offset)和记录段长度(ContentLength)两个记录项。
KML全称是KeyholeMarkupLanguage(KML),是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在GoogleEarth客户端之中显示(图2),(KML以前的版本能够被GoogleEarth读取并保存为KML2.0)KML2.0提供以下功能:
(1)指定一个地点的图标和标注来区分每一个地点
(2)为每一个视图指定明确的视角来创建不同的特写镜头
(3)使用指定到屏幕或地理位置的图片标注
(4)为特定种类的标注定义显示样式
(5)为标注指定基于简单HTML语法的描述,支持超级链接和图片的显示
(6)使用目录(folders)对标注进行树形的分类管理(为了便于理解和符合习惯,将"folder"翻译为"目录",实际上是代表一组地理标注,请谅解)
(7)基于时间戳记的标注可以用来进行动态的播放
(8)从本地或远程的网络地址动态的加载KML文件
图1
图2
2.课题研究的背景
2.1国内外研究现状
由于编辑XML文件并不复杂,只要懂编程就可以进行一些简单的KML文件编程。
尽管如此,在网上还是很难找到关于KML文件编程的详细教程,一般都是一些基础性的说明文档,以GOOGLE官方说明文档居多。
GE虽然很有名,但对普通用户来说,只要能使用GE软件进行一些基本的操作就够了,一般不涉及编程。
而会编程的人员却不一定懂得GIS的开发,或是从事其它方面的软件开发,或是出于对软件知识产权的保护而不公开相关的开发代码和研究资料。
所以就国内来说,本科生从事相关研究还是很少见的。
2.2GE地标点的编程研究还未结束
随着Internet应用的普及,社会经济的发展,GIS的应用越来越广范。
而GE正处于起步阶段,但发展很迅速,且KML文件已成为地理信息系统行业标准。
从网上搜索来看,GE编程的资料还是偏少的。
一般以其它文件格式转化为KML文件格式较常见,而KML格式转换为其它格式的资料几乎搜索不到。
2.3课题的研究意义
(1)GE地标点文件的转换可以加快地理信息系统软件的开发和应用,使GIS软件开发模块化,GE地标点文件的编程转换可作为GIS软件的一个模块来运行。
而KML文件已成为一种通用的数据格式,GE所产生的地标点数据是非常大的,如果能够转换,可以实现数据共享,促进地理信息系统的开发。
(2)研究此课题可更加深入的学习GIS相关的知识,为更深入的编程打下基础。
(3)做为大学学习的总结,提高自己的学习能力,实现自我价值
3.GE地标点文件概述
GE地标点文件是一种KML文件格式的文件。
KML,是Keyhole标记语言(KeyholeMarkupLanguage)的缩写,是一种采用XML语法与格式的语言,用于描述和保存地理信息(如点、线、图像、多边形和模型等),可以被GoogleEarth和GoogleMaps识别并显示。
KML是XML的一种派生语言,所以KML和XML语言的语言格式差不多。
下面分别对XML文件和KML文件的格式做一简单的介绍。
3.1XML文件格式简介
XML是可扩展标记语言,它与HTML一样,都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)。
XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据。
XML文件格式如下:
xmlversion="1.0"encoding="GB2312"standalone="yes"?
>
XML-stylesheettype="text/xsl"href="yxfqust.xsl"?
>
--以下是一个学生名单-->
<学生名单>
<学生>
<学号>0507079054〈学号〉 <姓名>朱明姓名>
<班级>
05地理班级>
学生>
<学生>
学生名单>
其中,文件头:
xmlversion="1.0"encoding="GB2312"standalone="yes"?
>是XML文件的标记,“GB2312”是指文件的编码类型,除此外还有UTF8,ANSI,UNICODE等文件格式。
而<*>里面的则是XML树里的节点。
和XML格式相似,KML格式也有类似的结构。
KML的格式如下:
xmlversion="1.0"encoding="UTF-8"?
>
x=" ……,省略部分代码 ……,省略部分代码 ,标签 注意: “,”后面为注释部分. 其中 xmlversion="1.0"encoding="UTF-8"? >是其文件头,其中的编码是UTF8格式。 中间 如果只有三个数据,则是个点文件,如果包含多个数据则是一个线或是轨迹和多边形,〈〉里面的都是KML的元素或标签。 3.2KML文件格式介绍 基本格式的KML文件是指可以直接由GoogleEarth创建的KML文件,它包括地点标记、叠层、路线和多边形,下面分别介绍。 3.2.1文件格式 (1)地点标记(Placemarks) 上一节我们给出了一个地点标记(Placemarks)的示例。 地点标记是GoogleEarth中最常用的地理特征,它使用一个黄色的图钉在地球表面标记一个位置。 一个简单的地点标记的KML代码如下所示: xmlversion="1.0"encoding="UTF-8"? > attheheightoftheunderlyingterrain. 它包括以下几个部分: XML头: xmlversion="1.0"encoding="UTF-8"? > KML命名空间定义: 地点标记对象,包括: 名称(name): 用于对地点标记进行注记。 描述(description): 对地点标记进行描述,“气球(ballon)”中的显示内容。 点(Point): 指定地点标记的位置。 (2)使用HTML描述地点标记 有两种方式来使用HTML描述地点标记,一种是直接在 另一种是使用CDATA元素在 xmlversion="1.0"encoding="UTF-8"? > [CDATA] easiertowritewhenyoucanavoidusingentity references. ]]> 当然,还有一种使用转义字符来表示特殊符号的方式,这就不需要CDATA元素,如下所示: xmlversion="1.0"encoding="UTF-8"? > <h1>Entityreferencesarehardtotype! </h1> <p><fontcolor="green">Textis <i>morereadable</i> and<b>easiertowrite</b> whenyoucanavoidusingentityreferences.</font></p> (3)叠层 叠层是覆盖在地球表面的图像。 一个简单的叠层KML代码如下所示: xmlversion="1.0"encoding="UTF-8"? > 在 指定图片的URL; 指定图片的位置和范围。 GoogleEarth支持JPEG,BMP,GIF,TIFF,TGA和PNG等格式的图像。 (4)路线 在KML里面,路线由 如下所示: xmlversion="1.0"encoding="UTF-8"? > -112.2550785337791,36.07954952145647,2357-112.2549277039738,36.08117083492122,2357-112.2552505069063,36.08260761307279,2357-112.2564540158376,36.08395660588506,2357-112.2580238976449,36.08511401044813,2357-112.2595218489022,36.08584355239394,2357-112.2608216347552,36.08612634548589,2357-112.262073428656,36.08626019085147,2357-112.2633204928495,36.08621519860091,2357-112.2644963846444,36.08627897945274,2357-112.2656969554589,36.08649599090644,2357 (5)多边形 多边形由 xmlversion="1.0"encoding="UTF-8"? > -77.05788457660967,38.87253259892824,100-77.05465973756702,38.87291016281703,100-77.05315536854791,38.87053267794386,100-77.05552622493516,38.868757801256,100-77.05844056290393,38.86996206506943,100-77.05788457660967,38.87253259892824,100 -77.05668055019126,38.87154239798456,100-77.05542625960818,38.87167890344077,100-77.05485125901024,38.87076535397792,100-77.05577677433152,38.87008686581446,100-77.05691162017543,38.87054446963351,100-77.05668055019126,38.87154239798456,100 3.2.2语法规则 和任何程序语言与脚本语言一样,KML有一些必须遵循的语法规则。 文档结构一个KML文档应该完全遵循KML格式,文档也和基本的XML语法规则差不多,有以下几点要CDATATagsareuseful!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ESRI的Shapefile文件向Google Earth中KML文件的格式转换 ESRI Shapefile 文件 Google Earth KML 格式 转换