王瑞国 (神华地质勘查有限责任公司,北京102211)
Google地球是由Google公司于2005年6月正式发布的三维虚拟地球软件[1]。Google地球对卫星影像,航拍影像进行处理整合,拼接贴合在三维地球模型的表面,对真实的地球地理信息进行展示[2]。Google地球包含海量、高精度的地理数据,并且具有高度的开放性,易于二次开发。因此Google地球既能满足一般用户足不出户既可浏览世界的需求,又能为科研工作者提供强大的地理数据平台,还可以与一些企业级用户进行合作,订制私有的Google地球应用[3]。
Google地球的卫星影像主要来自QuickBird、IKONOS、SPOTS等高清影像卫星,航拍部分主要来源于BlueSky公司、Sanborn公司。Google地球影像一般有1~3年的滞后,全球地貌影像有效分辨率至少为100m,通常分辨率为30m,视角海拔高度为15 km左右。大城市、著名风景区等热门地点,影像分辨率可以高达0.5~1m,视角高度约为350 m~500 m。大部分高清影像集中在北美和欧洲[4]。
Google地球有两种开发方式,一种是基于Google地球客户端COM API的二次开发,一种是基于KML的二次开发。基于COM的二次开发,需要安装Google地球,由第三方软件通过引用Google地球COM API类库对Google地球进行控制,如加载KML、控制视角、播放动画等。而基于KML的二次开发,可以通过创建KML文件以精确定位地点、添加图像叠加层并以全新方式展示丰富数据。可知,基于COM的二次开发主要是实现软件之间的互相调用,而基于KML的方式,可以实现很多基于地理信息的应用,如可以使用KML标记家庭住址、安排和记录行程,查看自然资源和趋势的详细绘图,探索古今地点、人物和事件等。本节主要介绍基于KML的开发方式。
KML常用于地球浏览器中,例如Google地球、Google地图等,它主要为显示地理数据提供数据支撑。KML是由开放地理空间联盟(Open Geospatial Consortium,Inc.,简称OGC)维护的国际标准[5]。
图1 KML基本框架
KML使用包含嵌套的元素和属性的结构(基于标记),并符合XML标准。如图1所示KML的基本框架。需要说明的是线框中的元素是抽象元素,用于方便的描述多个相似属性的元素,不可以直接在KML中使用。Feature抽象元素的各实元素实现地理信息的封装与管理;NetworkLink元素可对本地或网络的KML文件进行引用;Placemark元素用于描述地理对象的相关特征;Folder元素实现对地理对象的层次化管理;Document元素实现各类Feature元素、Style元素、Schema元素的封装与管理;Overlay元素实现屏幕贴图与地面贴图功能。SubStyle元素主要用于对各地理要素的显示样式的定义。Geometry抽象元素定义了几种基本的几何图形元素,提供了点、线、环、多边形、三维模型等基本几何图形;还可以通过Multi-Geometry聚合不同形态的基本几何图形形成复合的几何图形从而定义复杂的几何实体[6]。
将路点的坐标数据以路线的形式展示在Google地球上,通过实现这一应用,来对基于KML的二次开发进行实例说明。我们用Excel内置的VBA脚本语言,来实现将Excel中的路点坐标,自动生成可以在Google地球中显示成路线的KML文件。在KML中路线用<LineString>元素创建,<LineString>元素下的<coordinates>元素用于描述组成路线的各个路点的地理坐标,将Excel中整理好的路点的地理坐标按正确的格式录入到<coordinates>元素内,并将KML完整结构的代码写入文件中,最终生成可以显示路线的*.kml格式的文件,在Google地球中打开生成的文件即可直观的看到又路点连接成的路线。主要代码如下:
用数据来对开发的应用进行验证,将采集的路点坐标数据在Excel中整理好,如图2所示。点击“生成KML文件”按钮,KML文件以“路径”为文件名生成在桌面,打开生成的KML文件,即可在Google地球中看到效果,如图3所示蓝线既为生成的路线,可见此应用实现了预期效果。本例只做抛砖引玉之用,为其他开发者提供参考借鉴,基于KML的二次开发还可以实现许多其他基于地理信息的个性化应用。
图2 数据整理
图3 Google地球路线展示
Google地球可以让普通人足不出户,踏遍世界上的任何角落,并以其丰富的地理数据和易于二次开发的特性,为各个领域工作者提供了极好的地理数据平台,使用者可以充分利用Google地球与自己的工作相结合,开发出实用的相关工具。
文章对Google地球的基本特性和二次开发技术进行了简要介绍,并通过开发将路点的地理坐标以路线展示在Google地球的应用,对Google地球的开放性和二次开发的简易性进行了实例说明,为大家提供一定的参考。