元旦闲来无事,随便的翻了翻硬盘,发现一个很久以前的东西,就是这个在Google Earth上显示等高线的工具,就按照步骤操作了一遍。由于不想在笔记本上处理,所以直接远程到服务器上处理的,按部就班全部完成,但效果没有怎么看到,可能是网络速度慢远程桌面的刷新实在无法忍受,上班后去公司看看吧。
OK,废话说多了,其实就是一个很早的一支鱼刺网友制作的工具和发的文章:利用SRTM数据,在Google Earth上显示等高线,(最终效果图请点击这里),不过说明的操作过程有点问题,Google找到这篇原始文章看完才得以整个过程走通。不过在找KML format的过程中发现也有类似的文章:使用 PHP 和 MySQL 创建 KML,不过我还没有实验,但有了点想法,并且处理了些数据,近600万条记录的数据,不管是SQL SERVER还是ACCESS都是500M左右,我的天,我怎么把它放到网上去啊。后来准备放MYSQL,因为国外的DH主机的MYSQL好像是不限制大小,所以。不过,MSSQL到MYSQL的转换是痛苦的,这个会在后一篇讲到。下面我们就按照一支鱼刺的原文,附加上我的备注,开始这一过程吧。还希望大家多多交流。
原文如下,个人备注在括号中出现,最终重新整理的工具压缩包请点击此链接:https://files.cnblogs.com/Tangf/GoogleEarthViewSTRMline.rar
================================
利用SRTM数据,在Google Earth上显示等高线
关键字:SRTM Goolge Earth KML 等高线 GlobalMapper脚本
0.文件说明
KML2ContourMDB.exe,生成Global Mapper脚本,把KML转为MDB数据库
DB/,文件夹,存放数据库模板和ASP文件
Contour.mdb ,数据库文件
Contour.asp,ASP文件
inc_Color.asp,等高线颜色配置。(-50米-8500米)
1.原料
先从http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp网站上下载SRTM数据。在世界地图上,先选取你要下载的区域,然后下载GeoTIF数据,下载来的文件是ZIP压缩文件,请先解压,解压来的文件名如Z_58_8.TIF,请不要修改文件名。
(备注:下载的时候选择TIF格式而不是选择ASC格式,我原来就下载了STRM数据,但结果打开后发现是ASC数据,只好重新下载TIF数据,我下载了59_5这个格子来做的实验,下载完的数据是ZIP的,需要解压缩。如果下载中国覆盖范围附近STRM大概就在4GB样子。)
2.工具
1.如果电脑上还没有安装Global Mapper v9,请先安装,可以在下面的网址下载:
http://down1.3ddown.com/5z1gKhPK/Down/2007/09B/Global.Mapper.v9.00.zip
http://down1.3ddown.com/5z1gKhPK/Crack/2007/09B/Global.Mapper.v9.00-Crack.zip
(破解文件,安装完第一个文件后,把这个压缩文件中的global_mapper9.exe复制到安装文件夹中即可)
2.下载我制作的工具。
3.安装IIS5/6。
3.开始转换
1.把TIF转为KML.
运行KML2ContourMDB.exe,点击[GeoTIFF转KML]按钮,然后在弹出的新窗口中,分别执行以下操作:[添加文件]->选择解压后的tif文件->[转换]->在下面的文本框中生成Global Mapper脚本->[运行]
(备注:添加TIF文件的时候,你先要把TIF文件strm_59_5.tif文件名中的strm改成Z,即文件名为Z_59_5.tif,否则会提示”tm”错误什么的)
点击运行之后,CPU开始100%,过一会后,内存也开始上升,最好先设置虚拟内存在1000M以上。
生成的Global Mapper脚本的功能为生成等高线,精度为50米,然后再保存为KML文件。如果整块转换,需要的时间太长(有多长?P41.8A超2.83,内存512M,虚拟内存1G,硬盘灯红了2个多小时后,提示转换失败,抓狂),所以把每块再分成5个小块转换,原来一块有5x5度,现在变成5x(1度x5)。虽然这样处理,但每块处理起来,还是需要30分钟左右(要有耐心,或者电脑平时不用时再处理)。转换后每个TIF转出来的KML大概在100M-300M左右,所以如果处理的文件较多,注意硬盘的剩余空间。
经过漫长的等待之后,CPU的终于降到2-3%,进程管理器中的global_mapper9.exe进程也消失了,说明转换已经完成,在刚才存放TIF的文件夹中,已经生成多个KML文件(每个TIF生成5个KML)。
2.KML转为MDB,这样才方便我们搜索。
运行KML2ContourMDB.exe,执行如下操作:
[添加文件]->选择KML文件->[开始导入]->等待完成...如图3
图3状态:(4)已处理过的文件,(5)进度条,当前文件进度;标题栏数字,当前线条数/总线条数。
导入也需要10多分钟(每个TIF),导入到数据库后,按每个KML各导入到一个表中,每个TIF生成一个MDB文件。分文件是为了方便管理,一个TIF导入后,生成的MDB文件就有100-300M左右,导入10个就得几G,文件太大,难管理。分表是为了优化,根据请求的经纬度自动计算MDB文件名和表名。
(转换完成后,在最终的发布后不能显示,提示数据库没有链接,结果发现是数据库命名不同导致的链接错误,最终的Contour_59_05.mdb文件名需要改成Contour_59_5.mdb,因为ASP文件在读的时候就是如此。另外在转换过程中,进度条最终定格在99%即表示完成,而非在100%。)
4.发布
1.把DB文件夹下所有的文件复制到你的网站文件夹或IIS虚拟文件夹中。
2.在GE中,添加一个Netlink,网址指向你的刚发布的网址,如http://localhost/Contour/Contour.asp
(通过帖子的浏览,据说添加netlink的时候的网址最后要加一个问号,即添加的网址应该为http://localhost/Contour/Contour.asp?,而不是上面的网址,另外我也修改了asp文件中的一个文件名错误,这一点也是帖子的作者告知的。发布的时候请务必保证路径和Contour.asp文件中的ASP路径完全一致)
5.完成
6.存在问题
1.等高线颜色,从-50-8500米,蓝色到红色渐变,在局部看起来不明显,所以最好能取得最高的等高线和最低的等高线,然后重新计算等高线的颜色。等有空再处理,如果其他的朋友完成这个功能,记得发份Email给我。
2.导入KML时,占用大量的资源,因为使用的是MSXML控制,而KML的节点太多,所以显得很慢和占用内存很大。考虑使用SAX。
3.再一次提醒,处理这个要有耐心。数据量这么多,我也没有办法。
7.版权
自由使用,自由传播,自由修改代码(记得保留原作者,嘿嘿)。
更新:我的效果图
RoverTang@罗孚传说
E-mail:65985498[at]qq.com
微博/微信:rovertang