张荐铭,左小清,陈云波

(1.昆明理工大学 国土资源工程学院,云南 昆明650000;2.云南省昆明市规划编制与信息中心,云南 昆明650500)

Google Earth是一个优秀的地图平台,数据资源极其丰富,不仅能够提供优异的地图传输功能,而且还提供免费的API,用户只需加上业务代码,即可构架一个满足基本业务需求的行业地理信息系统[1-2]。Google Earth打破了传统空间信息技术的思维定式,改变了人们了解和认识世界的方式[3]。它给地理信息产业最大的启发,是其存储于在线数据库中的海量高分辨率遥感图像,且能够保存并转换成其他常规格式的地图文件,给很多领域提供帮助。

近年来,由于新能源的推广使用,以天然气为主要驱动力的新能源汽车已普遍开来,且年递增率都在10%以上[4],在城市里的覆盖率逐步增加。城市中,为这些车辆提供能源的主要场所就是天然气加气站。所以,能够宏观、高效、安全地管理天然气加气站,对于城市规划发展、车辆使用者、出租车公司、公交车公司都具有颇为重要的意义。将Google Earth引入到天然气加气站管理的领域中,利用其提供的免费遥感影像,将加气站信息叠加到遥感地图上进行宏观分析,为天然气加气站的管理提供一个切实可行的新方法。

1 系统设计

采用Visual Studio 2010C#.NET 4.0为开发平台,基于Google Earth开发组件,设计出一套实用性强、功能完善的天然气加气站管理系统。

1.1 系统结构

利用C#开发语言,结合Google Earth开发组件,将Google Earth客户端嵌入到程序中,调用Google Earth网络数据库中不同分辨率的影像地图、显示比例、功能部件等内容,实现在系统客户端对Google Earth的基本操作。同时,系统与专门存储加气站信息的外部数据库相连接,让用户采用GIS的方法管理加气站,并能在Google Earth上浏览、管理、利用、修改天然气加气站的相关信息。

1.2 系统组成及功能

系统主要由基本功能模块、站点信息管理功能模块、GIS功能模块、其他功能模块组成,其中,站点信息管理功能模块和GIS功能模块是系统中最重要的两个部分。站点信息管理功能模块包括站点信息的浏览、添加、修改、删除、筛选等操作,这些操作可基于Google Earth,也可以单独完成。GIS功能模块包括图层管理、距离量算、缓冲区分析等内容,主要发挥协助加气站建设规划决策的作用。系统的成功研发将会为用户提供一种天然气加气站信息的管理方式,让使用者能够用GIS的方法查询并管理某一地域内的天然气加气站信息(包括站点属性信息,可利用的文本、图片和视频文件等),并对这些信息做出合适的操作。除此之外,系统还附带一些可用于辅助决策的功能选项,保证系统的完整性和稳定性,如图1所示。

图1 系统功能模块

2 关键技术

2.1 GE客户端载入

系统使用Visual Studio 2010C#为开发语言,引用 Google Earth1.0Type Library(GE主程序),将Google Earth视图窗体句柄传递给主窗体内的geWebBrowser对象容器(geWebBrowser为客户端中Google Earth的承载容器,对象类别为 Web-Browser),使Google Earth在系统运行初期就嵌入到程序中,并初始化界面。以下是通过C#语言载入GE窗体的关键代码:

2.2 天然气加气站数据(地标文件)的存储与显示

在GE中,地图上所要处理的实体对象通常称为地标,分为点、线、面、链接等多种类型,是用户在Google Earth上操作的基本单位。KML全称keyhole Markup Language,是一种由Google公司基于XML(可扩展标记语言)语法和文件格式开发的数据文件,可用来描述和保存各种地理数据,如点(Point)、线 (Linestring)、环 (LineRing)、多边形(Polygon)、模型(Model)等[5]。通过 KML文件,在基于GE的虚拟环境中可以实现地图浏览、路线查询、商业和服务机构的空间和属性查询等功能[6-8]。

在本系统中,每个加气站站点就是一个地标,所有站点的基本信息都被存储在同一个数据库中。地标文件的数据信息(网络连接、文字、图片、模型以及其他多媒体资料)首先存储在外部数据库中,在需要时被提取并利用KML语言制作成一个专门的图层,再添加到内嵌于系统的Google Earth中。

2.3 空间分析

空间分析能力是GIS系统中一项十分重要的任务和最具特色的功能,是基于地理目标的位置和形态特征的空间数据分析技术[9],可根据应用系统需求进行添加。对于加气站站点的管理,以空间分析的角度而言,站点间距以及加气站的影响范围是系统最需要的数据。因此,系统需要加入距离量算和缓冲区分析两种分析功能。

任何基于GE开发的系统,在功能的实现时基本都是利用了其中的某些属性和方法,例如可以用IsInitialized判断是否初始化成功,利用IsOnline判断某点是否在连线上等等[10]。同样,利用组件提供的getLatitude()和getLongitude()函数,可以在Google Earth上获取任意两个目标点point1和point2并提取出二者的经纬度(Google Earth中所获取的经纬度数据均是WGS84坐标下的经纬度),从而直接绘制一条分别以point1和point2为起点和终点的直线,并利用point1.Distance(point2)函数计算出直线距离。

比起距离量算来说,缓冲区分析的实现稍显复杂。Google Earth开发组件并未提供一个直接以一定半径绘制缓冲区的方法,而是提供了一个可以构造环形元素的createLinearRing()函数,并且所构造的环形是由起点坐标与终点坐标相同的一系列的坐标对所组成的直线段连接起来的折线环。在构造折线环时,只需指定需要在环线上获取坐标点的数目,系统会在收到指令后自动取得这些点位,并一一相连,最后利用setOuterBoundary()函数绘制边界形成闭合的填充环形。实验证明,当在利用createLinearRing()函数构造的环形边上取得足够多的点时,所绘制的图形非常接近圆,且这种近似度能够满足用户的使用要求。

2.4 站点信息浏览

空间属性查询对于每个GIS平台来说,都是一个不可缺失的功能。在本系统中,每个地标代表一个站点,即一个空间实体,包括实体的空间信息、属性信息和多媒体信息。空间信息是该站点的经纬度;属性信息包括该站点所有基本情况,如站点名称、所属公司、站点规模等;多媒体信息则包括该站点文件夹下存放的各类文件,比如文本、图片、视频等。有针对地查询加气站的整体信息,就应该为系统添加一项查询站点控件属性信息的功能。

系统中设置了多个浏览信息的功能,但机理却截然不同。Google Earth设置了称为“气泡(Bal-loon)”的小部件,是Google Earth客户端默认用于显示地标信息的功能部件。所有地标的属性信息统一存储在同一个数据库中,只需指定好“气泡”出现的事件,当事件被触发后,对应加气站的信息将会从数据库内提取出来,存放在预先定义的变量中,再依次加入到“气泡”中,在“气泡”内查看。

系统中,站点的多媒体信息的查询响应事件是在geWebBrowser.Kmlevent()事件中设置的,而多媒体文件则存放在各个加气站文件夹下。当响应事件被触发时,系统自动检索对应文件夹下所有文件,并按不同文件格式进行分类(系统以图片文件、视频文件、文档文件的常用文件形式为分类依据,将所有文件分为三类),在系统主界面浏览深层次内容。

3 实际应用

实现系统最初的设计目标后,并取得昆明市市区内所有加气站站点信息,验证系统的可行性与功能完善性。图2~图5为系统运行时截图。

图2 系统工作界面

图3 以麻园加气站为例的站点信息浏览

图4 量距

图5 以麻园加气站为例的缓冲区分析

图2是系统加入昆明市加气站站点信息后的工作界面。系统顶部是主要功能栏,包括图层管理、点选属性查询、报表统计、搜索站点、添加站点、筛选站点等;左侧是一个TabControl控件,Page1中用树形列表呈现了所有加气站,并区分类别,Page2则是对站点信息的添加、删除、修改;右侧为Google Earth的承载容器,也就是本系统的地图显示区,可对地图进行平移、放大、缩小等操作,另外也是加气站站点信息的浏览区域;底部为状态栏,包括当前加载进度、版本型号、站点类别等。

图3显示的是以麻园加气站为例的点选多媒体查询功能。在地图显示区正中显示的文档即为上文所提到的“气泡”,显示站点的基本信息;左侧为分类管理框,查看站点的多媒体文件。

图4显示的是测量麻园加气站与金瓦加气站之间的直线距离。图5显示的是以麻园加气站为中心点,2 000m为半径形成的缓冲区。通过这两个功能,可知道加气站之间的相互距离,以及加气站一定程度的覆盖范围,为以后天然气加气站的规划提供辅助信息。

4 结束语

Google Earth与其他地理信息平台相比,最大的优势在于其所提供的免费卫星影像,且针对不同地区采用不同分辨率,让用户节省用于购买基础地图的巨额费用,也是本系统选择Google Earth api进行研发的关键因素。借助于本系统,用户只需保持网络的畅通,根据实地测绘人员所提供的数据,即可轻松自如地远程、宏观地浏览天然气加气站信息,管理相关数据,及时做出规划决策。如若知道加气站站点的具体位置,甚至不用任何外业工作,即可完成某些加气站的管理工作,节省人力物力。

Google Earth api被应用到森林消防、土地管理、旅游景点管理、城市规划等方面的案例已有不少,但与其他GIS二次开发平台相比,被利用到大型项目的机会并不多,或者仅仅作为一个辅助部件存在,这主要是因为GE开发组件自身GIS功能的限制。基于Google Earth api所开发的程序大部分为小型系统,功能受限。若想要得到更加普遍的利用,Google Earth必须要增强自身的GIS分析能力,如提高免费版Google Earth卫星影像的更新频率,增强Google Earth自身附带的空间分析功能,支持多种传统GIS数据格式等等。

[1]马谦.智慧地图:Google Earth\Maps KML核心开发技术揭晓[M].北京:电子工业出版社,2010:292.

[2]马立广,曹彦荣.Google Earth COM API及KML技术在旅游管理信息系统开发中的应用[J].地球信息科学学报,2010,12(6):828-834.

[3]苗放,叶成名,刘瑞,等.新一代数字地球平台与“数字中国”技术体系构架探讨[J].测绘科学,2007,32(6):157-158.

[4]孟欣.谈我国天然气汽车的发展[J].汽车工业研究,2010(8):10-12.

[5]漆明生,徐家清.基于KML的地理数据表示[J].四川林勘设计,2008(1):77-80.

[6]于冰,徐柱,刘国祥.Google Earth支持下校园真实感三维建模方法及应用[J].测绘工程,2010,19(1):61-64.

[7]林泉.Google Earth影像在地理国情普查中的补充使用[J].测绘与空间地理信息,2014,37(6):95-96.

[8]王增军,韦江玲,王宁娜.Google Earth遥感影像在海籍调查与测量中的应用研究——以北部湾沿海为例[J].测绘与空间地理信息,2014,37(8):122-124.

[9]黎雯,周廷刚,张伟.GIS空间分析与模糊综合评判在银行ATM 网点选址中的应用[J].测绘科学,2008,33(1):229-231.

[10]Google Earth COM API Documentation[EB/OL].http://earth.google.com/comapi/,2005-06-30/2008-11-1.