霸气侧漏 发表于 2013-3-10 16:50:07

Global Mapper与Google地图与OZI与偏移等那些事儿

说起Global mapper,很多人会谈起用它做等高线图,这个的确是很强大的,喜欢GM里面的三维视图,观察三维地形,很有趣。。。不过这个网上教程超多,这里就不再多说了。。。如下同样,网上可以找到详细教程的,我就不多废话。
要强调的是借助GM做OZI之类所谓“栅格”地图的技术,在这方面GM也十分强大,用Global Mapper做地图,可以做到:不用操心偏移、图块拼接校准之类的问题,做出来的地图十分精确。当然了,我这种说法也不是绝对的,比如您有一张自己扫描的或下载的,不包含地理信息的普通图片,手工校准是必须的。
不用校准的条件,简单说:导入GM的地图数据自含地理信息(或者说是“已校准的”),或者通过GM获取数据。前者也不是本文重点,网上教程丰富,主要是谈谈后者。
Google 地图数据下载
很多自制地图者喜欢用卫星地图做数据源,尤其是Google的。Global Mapper本身提供的数据源下载里面也有卫星地图,不过,数据太古旧了,N年之前的(不过嘛,山地野外之类的变化不大的地方,也能用)。GM 的13.2版本提供一些功能上的升级,可以下载Google地图数据了,具体方法是在下载界面使用“添加新源(add new sources)”,选择Google map tiles或者OSM,然后在之后的选项卡中输入形式如下的URL:http://khm0.google.com/kh/v=116&src=app&x=%x&y=%y&z=%z&s=Galileo,这个是获取卫星地图图块的URL;http://mt0.google.com/vt/lyrs=h@186000000&hl=zh-CN&src=app&x=%x&y=%y&z=%z&s=Galileo,这个是获取混合型地图图块的URL,然后选择PNG格式或是JPG格式,其他的不用动。最后出现一个选项卡,是用来给这个新地图源命名的,很简单。之后,选择这个数据源,就可以下载Google地图了。
不过,需要注意几点,Google图块的URL中的具体参数未必跟上面一样,比如上面我用红蓝颜色标示的部分,为了平衡数据访问数量,一般的地图图块服务都会使用多个服务器(http://khm0.google.com至 http://khm3.google.com;http://mt0.google.com 至 http://mt3.google.com )。对此,我们在GM设置里没有办法,只能使用一个固定的数字(0到3),造成GM只对这个服务器发请求,据说这样下载时间一长就会被“暂封IP”。蓝色部分,一段时间内虽然不固定,但是不变大概也没什么问题,因为Google的具体技术细节不得而知,所以也没法多说。至少,其他的Google地图下载工具也都是这么处理的,大同小异,比GM强仅在于可以对上述那些“多个服务器”发请求,而不是只盯着一个。。。
此处附送一个下载OpenCycleMap数据的URL,可以下载还算像样的等高线地图(添加新源里选OSM,抄入如下URL,选PNG格式,貌似可以把放大级别调到最大):http://b.tile.opencyclemap.org/cycle/,红字部分:a或b或c,只能选一个,顺便抱怨一句:实现这个向多个服务器发请求的技术很容易,GM是忽略了?正则表达式形式的URL我也试过了,目前无效。。。
要是想研究一下这些获取图块的URL,最简单的方法是在Chrome浏览器里,Google地图页面上单击右键,再点“审查元素”,之后在浏览器下方弹出的页面元素分析界面中选“resources“,出现一个资源列表,其中就有这些图块的URL,点击这些URL,已下载的图块就在右边一栏中显示出来。
P.S.,GM的数据下载功能确实不完美,但是可以“黑”,有能使其更完善的方法,可以让GM获取一切可以“破解”的数据源。虽然不复杂,但是需要程序员级别的技术,不多说,感兴趣的私下交流。。。
关于偏移
谈到Google地图,就会扯到偏移,但是,要搞清楚偏移的性质:比如从浏览器直接检索一个经纬度坐标(注意此时请求的内容是坐标),这个请求发到服务器,如果服务器做一个“偏移”,其效果正如篡改了你输入的这个坐标。其实:一个坐标点,在给定放大级别上对应哪个图块,以及图块上的哪个点,这都是固定的,从经纬度可以计算给定放大级别上的图块地址,然后直接用图块地址做请求(注意此时请求的内容是图块地址),则获得精确的地图,除非地图图块本身有问题。不管是网上各路高手设计的地图下载工具还是GM,都是后面这种模式,所以,偏移不是问题,当然,往更糟里想,Google如果连图块地址也做隐藏或偏移,那咱就真没招了。。。
Global Mapper与OZI
从Global Mapper输出,导入OZIExplorer的方法,这个也是网上提问多,回答较少的一个问题,所以也在这里凑凑热闹,方法不止一种,捡简单的说,从GM导出GeoTiff格式文件,OZIExplorer那边:文件>导入地图(import map)>Single DRG Map。这样地图数据就完美输入OZI,不用校准,检查一下投影是否一致就行了。
一个在航迹的基础上准备航迹的套路:
1. 先打开航迹,路点之类的,GPX,Kml,Kmz都行,
2. 然后直接下载数据,显示出来的地图,已经按照航迹路点范围自动调好了大小,按自己的需要再做出调整,然后把投影、经纬度网格、比例尺之类的按需要编辑。
3. 输出GeoTiff,该下载的下载,该绘图的绘图,这些事儿GM自动处理,让人不爽的是图如果太大,耗时就非常恼人,而且GM这部分程序编的有点弱,会给人一种死机的感觉。。。
4. 从OZIExplorer里导入Single DRG Map,按提示操作,导入后的东西几乎就是成品了,不用再校准,之后就是OZIExplorer里的一套活儿了,比如别忘了用image to ozf把地图转换成OZF2之类的。。。
页: [1]
查看完整版本: Global Mapper与Google地图与OZI与偏移等那些事儿