1、Google Earth 在铁路选线中的应用研究摘要:Google Earth 由 Google 公司开发的一款三维可视化地球软件,具有成本低,数据开放和可视化等特点,可以满足铁路选线设计中可研阶段的要求,本文对 Google Earth 的数据进行了分析,通过与实测数据的对比计算 Google Earth 数据的中误差,编写程序实现了 Google Earth 的地形数据的提取,具有一定的实用价值。 关键词:Google Earth;选线;可研阶段 中图分类号: F293 文献标识码: A 1 引言 Google Earth 是一个结合了卫星影像、航天摄影和地图数据而形成的三维交互式的地球虚
2、拟软件,它正在改变着地理信息数据和科研人员的交互方式。随着新的互联网科技及地理信息系统的迅速发展,传统的选线技术手段已经不能满足铁路勘察设计一体化发展的要求,而 Google Earth 具有较新的免费并且全面的地理信息数据,开放式的接口以及标准化的数据文件,将其作为选线设计的数据源和平台,具有很高的研究价值。 2 GE 的二次开发 GE 拥有两种扩展接口KML 文件形式和组件 COM API 形式,随着GE 的应用逐渐广泛,它们也满足了用户们的不同需求。基于 KML 的开发主要是编写 KML 文件生成地理要素,实现数据的动态更新;开发人员可以使用支持 COM 的可视化编程语言工具如 Delp
3、hi、Visual Basic、C#进行开发,主要是用来查询和控制 GE,包括获取当前视口、控制 3D 视角、提取各类信息、使用图层数据库、得到句柄、利用 KML 文件、三维选线、实现动画效果等以构建自己的程序,高级用户甚至可以使用 Python 来调用 GE 的 COM 接口1。 2.1 Google Earth COM API 二次开发 Google Earth COM API 类库主要提供了 11 个类库,包括相机、视窗、时间、查询和控制等属性。应用于选线设计时,通过最主要的接口IApplicationGE 可以让其他程序访问控制 GE,如 GE 的开关、地图窗口的获取、操作主窗口句柄,
4、还包括地图视角相机对象的获取、转换坐标等复杂操作2。 调用 GE API 类库,首先需要在电脑中安装合适版本的 Google Earth,在 visual C+中添加新的工程,建立类向导,选择 Add Class,然后找到 Google Earth 的安装路径,添加开始主程序,即实现了 GE 类库的调用,如图 2.1 所示。 图 2.1 引用 GE COM API 类库 2.2 实现 Google Earth 坐标数据提取 在设计提取坐标的程序是,主要用到三种坐标系:屏幕坐标系、GE客户端坐标系、工作区坐标系。Window 窗体的坐标系是基于设备坐标,在 Windows 窗体中绘制时的基本度量
5、单位是设备单位(通常为像素) ,也是像素坐标,如图 2.2 所示,Windows 窗体应用程序用屏幕坐标指定窗口在屏幕上的位置,屏幕的左上角是原点,屏幕上的点与通过 x 和 y 表达的坐标(x,y)一一对应,x 坐标向右递增,y 坐标往下递增。 图 2.2 Google Earth 屏幕坐标系示意图 利用 MouseHook.MouseDown 获取的鼠标点击左键的坐标值为屏幕坐标,首先要实现的是,应用 Control 类中的函数 PointToClient 和 PointToScreen 可完成至关重要的屏幕坐标向客户端坐标的坐标转换,其中 PointToClient 可将指定屏幕点的位置计
6、算成工作区坐标,该函数语法为: public Point PointToClient ( Point p );参数 p 表示要转换的屏幕坐标 Point,该函数返回的 Point 表示转换后的 Point(以工作区坐标表示) 。调用函数获取当前工作区的宽度和高度,再依据两种坐标系之间的数学关系(如下)完成屏幕坐标到 GE 客户端坐标的转换。 width = this.FindForm().Width; hight = this.FindForm().Height; x = (X - width / 2) / width*2; y = (Y - hight / 2) / hight*2; 其中
7、width 为当前工作区的宽度;hight 为当前工作区高度;x、y为 GE 客户端坐标;X、Y 为工作区的坐标。 最后通过调用 IApplication 类的函数GetPointOnTerrainFromScreenCoords(),将屏幕坐标点转化为地理坐标形式。 在获取高程数据的过程中,为防止 GE 客户端无响应,不要进行其他操作;为了保证获取地面线的精度,利用 SetCameraParams()函数时,在设定 speed 的值(0-5)时,不要取的太大,一般取为 2,在进行程序设计中,读取点是做一个循环,应在每个读取高程操作过程中间设置合理的时间间隔来保证读取的精度和效率,这个时间间隔
8、其实就是主进程休眠所耗用的时间。 3 Google Earth 的数据精度分析 将 Google Earth 应用于选线设计时,必须对其数据精度进行分析比较,确定其误差范围,根据相关规范的规定,有选择性的应用于选线的不同阶段3。 Google Earth 的数据主要来自于 SRTM,数据由美国太空总署(NASA)和国防部国家测绘局(NIMA)联合测量,按精度可以分为 SRTM1和 SRTM3,分别对应的分辨率精度为 30 米和 90 米数据,影像数据部分主要来自于美国快鸟(Quick Bird)公司,Quick Bird 黑白波段分辨率高达 0.61 米彩色的分辨率为 2.44 米,最新一代的
9、 Quick Bird 卫星可分别提供分辨率 0.5 米的全色图像和 2 米的多光谱图像,GE 上的全球地貌影像的有效分辨率至少为 100 米,通常为 30 米。 为了验证 GE 的高程精度,必须将其与实际测得数据进行统计分析。以兰州和平镇为例,使用 RTK 随机选取 100 个观测点测得其高程数据,测点分布位置如图 3.3 所示 点号 误差 1 -2.11 2 3.28 3 6.13 4 -3.32 5 -4.11 6 2.56 7 7.54 8 -3.26 9 -1.9 100 7.891 图 3.3 和平镇观测点分布图表 3.1 各测点误差表 Google Earth 与 RTK 采用的
10、不是同一个坐标系统,经过转换,实测高程与 GE 高程的误差值如表 3-1。设 100 个测量误差分别为E1,E2E100,则测量中误差的计算公式为: ,计算结果=8.782。由地形图航空摄影测量数字化测图规范可知,对于 1:50000 地形图高程中误差规定为 14m,故 Google Earth 能够满足铁路选线设计预可行性研究和可行性研究阶段中部分设计工作的需要4。4 结论 本文以铁路选线设计为背景目标,对 Google Earth 主要进行了以下两个方面的研究: 分析了 Google Earth 的软件特点,数据来源,进行了数据精度对比,验证了 Google Earth 课用于铁路选线预可
11、研和可研阶段的可行性; 通过 Google Earth 提供的二次开发接口,在 Visual C+平台上,实现了对其地理信息数据的提取,为实现数字化选线提供了基础。 参考文献 1 唐东跃, 熊助国, 王金丽. Google Earth 及其应用展望J. 地理空间信息, 2008(04):110-113. 2 江宽, 龚小鹏等编著. GOOGLE API 开发详解:GOOGLE MAPS 与GOOGLE EARTH 双剑合璧M. 2008. 3 王一波, 邵伟伟, 罗新宇. Google Earth 数据精度分析及在铁路选线设计中的应用J. 铁道勘察, 2010(05):68-71. 4 国家测绘局测绘标准化研究所国家测绘局测绘标准化研究所. 1:5 000 1:10 000 地形图航空摄影测量外业规范S. (CN-GB).