网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 论文模板 > 毕业论文写作 > 正文

基于GoogleEarth的WebGIS实现

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

以下是网学网为您推荐的毕业论文写作-基于Google Earth的WebGIS实现,希望本篇文章对您学习有所帮助。

转载请注明来源:毕业论文  需要其他论文可去论文范文查找。免费毕业论文下载基于Google Earth的WebGIS实现

 摘要:多源空间数据的互操作是Web GIS发展中的一个瓶颈问题,而Xml作为开放格式为异构系统之间共享数据提供了可能。本文以开发基于Google Earth的WebGIS为例,利用Google Earth现有的网络构架结合刚刚发布的开源版本MapGuide,将空间数据以Xml格式叠加到Google Earth中显示,取得较好的三维效果,实现了数据的互操作和功能的互操作。
 关键词:Web GIS   多源数据融和   Google Earth   MapGuide   Xml   .NET

Abstract: Interoperation of various data is an emerging barrier for Web GIS. As an open format, Xml provides possibility to share data between different GIS systems. This article takes the development of Web GIS as an example based on Google Earth. It uses the framework of Google Earth, and parses the vector data in Xml format read from MapGuide Server, and finally it displays well in Google Earth Viewer.
Key Words: Web GIS,Data Sources Merge,Google Earth,MapGuide,Xml,.NET

1. 前言
 Web GIS经过几年的发展无论是从理论、技术、产品以及应用上都取得了很大的进步。无疑,Web GIS的发展有力地促进了GIS的社会化,也推动了地理空间数据的广泛应用。
 然而,由于目前的Web GIS产品是在不同的环境中独立开发的,有着自己的文化背景、领域背景和技术背景,形成了自己的数据模型和功能组织结构,虽然这些产品在功能和问题描述能力方面大同小异,但实际操作上差别很大,加之内部空间数据组织互相保密,形成了不同系统间的壁垒。对于这种系统如果用户想在一个Web GIS系统中浏览或整合其他系统的数据是很难的,甚至是不可能的。
 这种封闭、独立的系统由于对空间数据的处理保持着一种完全封闭的状态,导致了系统间无法共享数据和处理方法。一方面,为一种系统所产生的地理空间数据不能被另一个系统所使用,另一方面,一个系统的服务功能也不能为另一个系统所使用。这种状况的产生严重阻碍了Web GIS的进一步发展。
 扩展标记语言(eXtened Markup Language,简称XML)作为数据交换和网络计算的基础,提供了异构系统之间共享数据的可能,通过利用XML来进行地理空间数据的表达,可以实现地理空间数据表达的开放性。
 KML( Keyhole Markup Language)是由Google推出的一种基于XML语法的文件格式,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示。KML为数据互操作提供了接口,只要符合KML文件格式,即可被Google Earth Viewer识别并显示。  
 本论文即在数据互操作方面做了尝试。在Google Earth Viewer中通过http协议访问IIS服务器,IIS服务器向MapGuide 服务器发出请求,并将MapGuide返回的数据以XML格式返回给Google Earth Viewer,最终在Google Earth Viewer显示出矢量与栅格叠加的效果,实现基本的数据互操作。
2. 新一代MapGuide介绍
 2.1. MapGuide概述与特点
 MapGuide是Autodesk公司推出的在网络上发布空间数据的新一代Web GIS平台,为了促进开源Web GIS的发展,Autodesk公司推出了开源版的MapGuide,同时还有商业版MapGuide,开源版本与商业版本相比,软件构架与功能相同,只是开源版本仅支持的数据格式较少,目前支持shp、sdf、ArcSDE、MySQL、ODBC、RASTER、WMSWFS,要支持其他格式的数据或者数据库则需要购买MapGuide 商业版或者由用户自行开发数据处理组件。
 MapGuide具有如下特点:
跨平台支持。新一代的MapGuide支持Window和Linux操作系统。
支持多种浏览器。MapGuide提供两种Viewer, DWF Viewer和AJAX Viewer。DWF Viewer使用ActiveX控件,只支持IE浏览器。AJAX Viewer支持Fire fox, Opera浏览器。
支持多种数据格式。MapGuide使用FDO(Feature Data Object)存取数据,MapGuide提供多种数据的FDO,如sdf、shp、Oracle、SqlServer、WFS、WMS等多种数据源。
提供内容丰富的API,简化二次开发。MapGuide 提供.NET、PHP、JSP三种语言的API,可以对地图数据按照要求进行相应修改,显示,用户可以根据不同条件选用相应的开发语言。
集成多种GIS功能。MapGuide API可以进行属性查询和空间查询,MapGuide API包含一系列坐标系的函数,可以 方便地完成坐标转换等功能。
 2.2. MapGuide 框架结构
 MapGuide采用典型的网络三层结构,支持Windows和Linux操作系统,支持多种浏览器,用户可选择安装DWF Viewer Active控件或使用支持java script的浏览器进行浏览。 MapGuide由以下四部分组成:
MapGuide Server
 用于与空间数据直接交互,并处理MapGuide Web Extension发出的请求,MapGuide Server支持Windows和Linux平台。
MapGuide Web Extension
 也称为Web Server,是网络结构的中间层,用于转发IIS (Internet Information Service) 的请求,并向MapGuide服务器发出相应的请求。MapGuide Web Extension支持IIS和Apache (Windows平台) 或Apache (Windows 和Linux平台),它提供一系列完整的API,可以用这些API进行定制开发。MapGuide Web Extension支持三种语言的开发,分别是PHP、ASP和JSP。
MapGuide Studio
 是一个用于地图管理的工具,为了用户方便, Studio内部集成了浏览器,用户可以用Studio进行所见即所得的便捷管理,MapGuide Studio只能安装在Windows平台。
MapGuide Viewer
 用于在浏览器中对地图进行浏览,编辑等,它提供两种Viewer, DWF Viewer和AJAX Viewer,由于DWF Viewer是Active控件,所以它只支持Microsoft IE(Internet Explorer),AJAX Viewer支持Fire fox, Opera (Mac) 等浏览器。
 图1描述了MapGuide的框架结构,Studio和Viewer是MapGuide的客户端程序,从这些客户端发出请求,通过HTTP协议发送到Web Externsion, Web Externsion的Agent组件对请求进行处理并发送相应请求到MapGuide Server。当服务器 (Server) 接收到一个请求时,它按照请求的内容,存取或者修改仓库(Repository)中的数据,并将相应的结果返回给Web Extension,然后由Web Extension返回给客户端Viewer。
  MapGuide Studio和Viewer使用DWF Viewer或AJAX Viewer,Viewer完成对地图进行显示、修改、分析等功能。

图1 MapGuide框架结构

 2.3. MapGuide API简介
 MapGuide API包含两类,Web Tier API和Viewer API。Web Tier API是一系列服务端API,功能强大,基本上覆盖了GIS系统需要的所有函数。Viewer API是客户端API,在Web页面脚本中执行,与Web Tier API相比,功能简单,完成一些客户端常用的功能,如放大缩小、平移、选中、打印,简单数字化等功能,进一步的复杂功能需要调用Web Tier API,进行服务端和客户端交互开发。
 Web Tier API是服务端API,在.NET、PHP、JSP中被调用,Web Tier API包含资源服务、坐标系统、几何对象等类库函数。
 Viewer API是客户端API,在Web页面的脚本中执行,所以Viwer API是一类用来控制Viewer的java script函数,由于MapGuide提供对两类浏览器(IE和FireFox)的支持,Viewer API实际上是这两类浏览器的统一接口,这一类函数提供对地图的一些通用功能。如果用户只需要支持IE,可调用DWF Viewer的java script函数,与统一接口相比,这些函数提供了更强的功能。很多函数会产生服务端的请求,如刷新数据或者通知服务器Viewer状态变化,这些请求自动产生,无须人工干预。
 应用MapGuide API可以方便地进行二次开发。可以根据需求进行相应的二次开发,studio提供了Commands接口,支持java script函数调用和页面调用,用户可以应用这些接口调用Viewer API或者Web Tier API进行简单开发,定制一些简单的功能。另外,用户可直接应用Web Tier API和Veiwer API开发独立的Web程序,根据需求开发完成较为复杂的功能。
 本论文即在.NET环境下服务端调用Web Tier API开发一个独立的Web程序。
3. Google Earth KML研究
 3.1. KML概览
 KML全称是Keyhole Markup Language,是一种基于XML语法的文件格式,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示。KML被Google Earth viewer处理并显示的过程和HTML网页被浏览器处理差不多,类似于HTML,KML 也使用一种基于标签 (名称和属性) 的语法格式来描述地里标注信息,因此,Google Earth viewer是一个KML文件浏览器。
 Google Earth 支持多种地物的表示,能够形象表达GIS信息。所有地物都以KML格式表示。KML控制在Google Earth 3D Viewer和地点框中的元素。可以根据需要,用多种方式编辑KML。
 3.2. KML主要对象
 KML定义了几个主要标签,如地物标记 (place mark) 、几何图形 (geometry) 、图像叠加层 (image overlays) 、样式 (style) 和网络链接 (Network link) 等。
地物标记
 地物标记是一种表示地点的直接方式,在Google Earth中,一个地物标记存在于地物框列表项中,非常普遍的是,它通过一个图标与地点关联起来,当然,地物标记也可以包含路径,多边形,或者3D图形。地物标记可以使用以下属性和特性:
几何形状Geometric shapes – 地块由很多几何图块描述,所以地物标记可以包含点,线,多边形,或者这些地块的任意集合。
位置和海拔Location and altitude – 对于一个地物标记的每一个几何图块,可以定义几何图块坐标和海拔,任意突出物以及与地面的关系。例如,可以定义一个位于地形之上长达2KM路径的地物标记,并将该路径突出,从侧面看,效果像围栏一样。
默认图标Default icon – 当标注包含点信息时,可以使用Google Earth列表中的图标作为地物标记的默认标示。
显示外表Appearance – 最后,可以使用许多通用的KML元素控制地物的显示样式。比如,可以设置名称,描述,默认“相机”视图,以及默认的可视性,而且还可以定义地物标签的颜色和大小。
几何图形
 Google Earth支持多种二维的几何图形,包括:
点 – 点可以用图标或标签表示。地物标记的点在不同的海拔加以注释。
线– 包括线条,连续线,但是不包含道路线。如点一样,也支持不同的海拔高度表示。
多边形- 它可以表示为平面或三维,并且样式有填充,或者不同样式的边界。如同线一样,支持在不同的海拔高度表示。
 控制几何图形的显示主要通过以下方法:
定义坐标- 坐标值必须以如下格式输入:经度、纬度、海拔。KML使用<coordinates>描述图形。注意:地理坐标的格式顺序为:经度,纬度,海拔,请勿错排。
创建三维图形– 点、线、面可以突出地面,将点放置在特定的海拔,然后使用<extrude>标签。利用点、线、面可以非常容易地创建形象的数据。比如地物标记,可以利用<extrude>创建一条从地面延伸出来的垂直线,这条线的样式颜色因地物类型不同而不同。
分类为集合-使用<MultiGeometry>标签将多边形和线分为若干集合。这个功能在创建三维图形的时候尤其有用,例如,一旦定义了一种集合,可以非常容易地切换它的可视性。
 图像叠加层
 KML使用图像丰富可视化表达手段。比如表示在建的GIF图片,或者作为图例的图片。KML有两种图像叠加层:
地面叠加层Ground Overlays – 查看 <GroundOverlay>标签. 地面叠加层是附加到地面的图像,使用地面叠加层可以表示富含信息的点,如定相计划或者天气地图。此外ia,地面叠加层使用<LatLonBo>标签定义东南西北,通过刷新参数,KML可以加载动态的图片,比如天气预报地图,或者依据三维Viewer的不同而显示不同的图像。
屏幕叠加层Screen Overlays – 查看标签 <ScreenOverlay>. 屏幕叠加层是与相机视图无关而附加到屏幕上的图像。比如图例,或者版权信息,如地面叠加层一样,KML可以定义多种屏幕叠加层并且关联到一个文件夹。可以用绝对坐标定义屏幕叠加层或者通过百分比的形式定义。
 样式
 KML样式用来定义几何图形、图标、标签等的显示外观。它包含颜色、大小、透明性,类似于HTML和CSS,KML样式可以在元素内定义或者通过引用ID以便被其他更多元素引用。像HTML一样,设计样式的类库,以便在需要的时候引用能够大大提高效率,而本地的样式只用来表示简单的只出现一次的物体。
 样式可以应用在以下元素:
图标Icons
标签Labels
线Lines
多边形 Polygons—突出的线也作为多边形处理
描述球Description Balloon
 网络链接
 使用网络链接可以在多用户环境中通过一个指向文件的链接快速共享KML文件。KML网络链接类似于包含属性数据并放置在服务器上的文件夹(不管是局域网或者互联网),在网络链接中非常容易地共享动态数据。
4. 程序实现关键部分与设计流程
 采用Google Earth作为栅格数据来源,可以充分利用Google Earth提供的高清晰全球三维影像数据。另外,考虑到Autodesk公司提供开源版本的MapGuide,选取了MapGuide为地图数据发布平台,将MapGuide管理发布的矢量数据叠加到Google Earth的Viewer中显示。本次实验采用的数据是杭州中心城区的Shp格式的数据,作为多数据源融合的尝试,shp文件到KML文件的转换是程序实现的关键部分。
 4.1. Shp文件到KML文件转换
 本论文采用杭州中心城区的shp文件数据,所以需要将shp文件数据到处为KML文件,完成两种数据格式的转换。
 地图是由简单对象和复杂对象组成:简单对象按照几何的性质分为点、线、面三种,复杂对象由简单对象或简单对象和复杂对象相互组合而成。所以实际上地图实体都是地图复杂对象,最终都是由地图简单对象组成。shp格式作为一种常见的地理空间数据,对其结构分析如下:
 在shp文件中支持的二维空间的类型主要有点,多点,多线和多面。
 点Point: Point就是由一对坐标值X,Y指定其位置的几何对象。
 多点MultiPoint:  MultiPoint是一个由点构成的集合。
 多线PolyLine:  PolyLine是一个有顺序的顶点集合,它包含一个或者多个part。一个part是由两个或者两个以上的点顺序连结而成的。Part之间可能相互连接也可能不相互连接,part之间可能相交也可能不相交。
 多面Polygon: Polygon包含一个或者多个环。一个环是由是个或者四个以上的点顺序连结形成的一个闭合的,不自相交的回路。
 如对于标注层(annotation layer)中的断桥残雪景点,其在shp文件中:
 X=120.146179199219,  Y=30.2604675292969,0
 Text= Lingering Snow on the Broken Bridge
 转换为KML后,如下(样式是为了达到较好显示效果自行添加):
 
 而对于一个多边形,其转换后的KML为:
 
  
 可以看到在标签<coordinates>中包含了很多坐标,依次按照经度、纬度、海拔输出,由于在测试用的shp数据文件中没有海拔,这里统一置为0。
 4.2. 程序框架设计
 程序实现选取了MapGuide为地图数据发布平台,将MapGuide管理发布的矢量数据叠加到Google Earth的Viewer中显示,因为只要连上Internet即可访问Google Earth 服务器,所以只需要安装Google Earth Viewer即可。MapGuide部分,需要安装MapGuide Server,MapGuide Web Extension,如果用IE浏览,还需要装DWF控件。另外,需要安装IIS(Internet Information Service)Server作为Mapguide和Google Earth Viewer的中介。具体架构如图2:

 4.3. 数据流程设计
 程序数据流程涉及读取数据、处理数据和输出数据,具体流程如图3:
 Google Earth 客户端打开包含已定义Network link的KML(或KMZ)文件。
 Google Earth客户端解析KML文件,提取Network link内容,并向Network link包含的网址发送请求。
 Google Earth Viewer向Google Earth服务器发送数据请求。
 Google Earth服务器返回影像数据给客户端。
 Google Earth客户端向IIS服务器发出请求。
 IIS服务器解析客户端请求,并相应地向MapGuide WebServer发送请求。
 MapGuide WebServer接受请求,解析请求,然后向MapGuide Server发送请求。MapGuide Server接受请求,查询相应的文件或者数据库,将查询到的数据返回给MapGuide WebServer,然后WebServer向IIS服务器发送数据。
 IIS 服务器以xml格式将数据返回给客户端GoogleEarth Viewer。
 Google Earth客户端获取数据,解析并显示在客户端。

5. 结束语
 该程序作为融合异构GIS系统数据源一次尝试,取得较好效果,该系统实现了如下功能:
矢量数据与栅格数据的叠加显示:按照论文的初衷,程序在原有栅格数据的基础上叠加了矢量数据,并取0-50米随即数,给街区图层赋了高程,在Google Earth Viewer中具有较好的三维效果。
图层管理:本程序可控制图层是否显示,以及是否显示下级图层的支点,另外,双击图层,可以定位漫游到该图层所在区域,具有较好的三维漫游效果。
平移、缩放、截图等GIS系统的通用功能
三维漫游:应用Google Earth Viewer的方向键、俯视键和缩放键,可按照使用者的意愿进行三维漫游,从空中进一步认识杭州。
查询:由于数据的原因,只是在标注层提供查询,双击任何一个标注,可显示该标注的描述(description)。
 总体来说,程序取得论文的预期效果。叠加矢量数据后的杭州中心城区增加了很多地物信息,可以方便查询。结合Google Earth Viewer强大的三维漫游功能,给使用者较强的视觉冲击和三维体验。
 当然,由于数据不完整性和时间有限等原因,该程序尚待改进。由于数据的不完整性,只显示了杭州了中心城区。而且由于拿到的测试数据陈旧,很多地名都已经改变。另外,由于街区是唯一的面状数据,为了满足三维显示的要求,用随机的方法产生了高度,虽然具有三维效果,但是与现实不符,缺乏真实感。另外,由于时间有限,未能将程序进一步改进优化,比如改进显示样式,使其更加符合视觉感受。如果有时间可以进一步研究DEM算法,利用插值等方法将等高线处理为面状显示,将出现三维的虚拟宝石山,与影像叠加将具有更真实三维效果。 
 另外,多数据源的数据互操作模式是GIS发展的趋势之一。随着GIS进一步成熟,如何更加有效得利用好现有的数据始终是关注焦点,许多公司已经提供数据转换等功能。另外,如Open GIS则制定了数据互操作模式。数据客户使用某种数据的过程就是发出数据请求,由数据服务器提供服务的过程,其最终目的是使数据客户能够读取任意数据服务器提供的空间数据。
 Google Earth 推出KML格式就是对数据互操作的回应。为了弥补矢量数据的缺乏,Google刚刚推出了免费的构建三维模型的软件Google SketchUp, Google Sketchup是一个简单的3D建模软件,可以让用户轻松制作3D虚拟环境和物体,包括房屋、货棚、地板、家具,甚至可以做出飞船来。将做好的模型上传到Google Earth服务器,即可被全球的用户访问到。可以预见Google Earth整合的矢量信息将越来越多,而其应用也必将越来越广泛,目前国外有些地区已经利用Google Earth开始电子商务等新应用。
 可以预见,Web GIS必将随着数据互操作问题的逐渐解决进入更广阔的空间。

参考文献
刘南,刘仁义 ,Web GIS原理及其应用, 科学出版社,2002.6,  1-39
邬伦,地理信息系统,电子工业出版社,2002

基于Google Earth的WebGIS实现......
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师