资源介绍
http://www.doyouhike.net/forum/comm_nav/325548,0,0,1.html
求助 如何使用 Google Earth 做一条线路图 放进GPS
以前看见有一个帖子,上面写着有一位仁兄在偷 Google Earth 的高程数据,做等高线地图,于是在 Baidu 这样搜索 “Google Earth site:www.doyouhike.net”,搜索磨房里面所有有关“Google Earth”的帖子,那个帖子没有找到,却发现了本帖子。由于自己有时候带队,还有就是喜欢琢磨 GPS,就自己生成 KML 格式的轨迹。在“Google Earth”里面找到自己要去的地方,通过别人的资料,看看看看大致的路线,然后取一些坐标点。取点的时候,把鼠标放在“Google Earth”上,然后按“Print Screen/SysRq”键来截屏,之后,粘贴在画图里面,之后,就录入这个点的经纬度,海拔一般情况下的价值不大,就省略了。之后,把这些点导入 WPS的电子表格,利用公式把“114,31,00.18”格式的经纬度转换为“114.516716”格式,就着就手工生成 KML文件了,最后,利用 gpsbabel-1.3.6 转换成我的 GPS 识别的格式。想省钱,就在 TAOBAO 买了一个二手杂牌的 GPS,Lowrance Hunt C,不支持中文,于是采用了英文菜单,地名只好采用拼音了。这样做起来实在累,一般生成一条比较短的轨迹,花两个小时是很正常的事情。前一阵子,在学习《WINDOWS 程序设计》,于是就想参照上面的例程写一个小程序,让它自动生成我需要的轨迹。
《WINDOWS 程序设计》的第八章的 WHATCLR 程序,它运行时候,就可以以点的方式改变其它程序的颜色,既然要改变这些点,就要知道它们相对于屏幕左上角的坐标。既然是这样,那利用相似三角形的原理,我在 “Google Earth”这样描点,知道起点和终点的坐标后,就很容易地生成一条所需要的 KML 格式的轨迹了。之后,把它导入“Google Earth”以检验这条轨迹,不合乎自己要求就重描一条,几分钟就搞定了。看来,“懒人推动社会进步”,这句话非常有道理。
其中一个问题就是,需要用按键或者鼠标来控制程序描点的开始和结束,于是参考了第六章的 KEYVIEW1 和 第七章的 BLOKOUT1,最后决定使用“a”(小写字母)座位控制键!本来想以鼠标右键来控制的,后来没有搞定,就放弃了。
最后碰到的一个令人头疼的问题就是保存文件,开始想参考第十一章的 POPPAD 程序,看来没有把这个程序吃透,就放弃了。准备使用《WINDOWS 核心编程》上面的文本框来输出生成的经纬度文件,当我安装号运行程序库并配置好,忽然发现它是 C++ 的程序,晕死了。期间还尝试过使用 C++ 的文件指针 FP,后来发现不支持!就放弃了,时间不允许我先去吃透 C++ 再来完成这个程序。后来,发现《WINDOWS 程序设计》的例程,包含的头文件是这种:#include ,而 C++ 格式包含的头文件是:#include ,通常没有“.h”,感觉《WINDOWS 程序设计》应该还支持 Turbo C 2.0 格式下的文件读写,于是找到谭浩强同志的《C 语言程序设计》,看看它怎么弄的。之后,在 VC++ 6.0下测试了一把,通过,于是程序就基本完工了。
程序的使用,把附件的压缩包解压缩的你的硬盘的任意一个角落,在 C 盘的根目录下生成一个文本文件“START.txt”,不知道怎么生成就问你的电脑启蒙老师了。压缩包里面有一个 START.txt,可以直接修改了!然后运行 WHATCLR.exe,按一下小写字母“a”,C 盘的根目录下就生成了 startstop.kml,(可能需要刷新一下),将其导入“Google Earth”,就会发现2个点,“start”和“stop”,点 WHATCLR.exe 让它在最前面,之后把鼠标放在 “start” 处,“start” 会变大,再按一下小写字母“a”,按住鼠标左键沿着路径拖动就开始生成轨迹,当鼠标拖到 “stop”点的时候,“stop”变大,松开鼠标,同时按一下小写字母“a”完成轨迹的生成。注意,生成轨迹的时候,必须让 WHATCLR.exe 始终处在各个窗口的最前面,也就是它获得焦点!这时,在 C 盘的根目录就会发现2个 KML 文件:“GPSDATA.KML”和“GPSDATA2.KML”,把“GPSDATA.KML”导入到“Google Earth”,看是否合乎你的要求,不合要求就重来一遍,直到合乎你的要求为止。用 gpsbabel-1.3.6 把转换为你的 GPS 所支持的格式即可。
注意:由于是习作,KML 文件保存的位置默认为 C 盘,如果想存储在其它地方,可以自行修改程序。
压缩包里附有源代码。如果想知道程序为什么这么写,请问 Bill·Gates 或者是 Charles·Petzold。如果想知道 KML 文件怎么生成,请联系 Google 或者 zGPSconv.exe 的作者,我是参照 zGPSconv.exe 生成的 KML 文件来生成 KML 文件的。