轨迹行 发表于 2014-11-26 20:16:51

用Mobile Atlas Creator自制OruxMaps离线地图

本帖最后由 轨迹行 于 2014-12-19 15:04 编辑

      重要声明:自制地图只限于个人使用,严禁用于商业目的!户外有风险,离线地图和导航软件不能保证绝对安全,请风险自担!
      在北郊住了三年,感觉北郊就是骑行的天堂,出门就是经典骑行路线,什么小河啊、白邑啊,回想起来,其实骑的最多的就是小河、白邑,只要有时间,每星期的小河骑行已成常态,很少探路,就很少用OruxMaps。然而现在又搬到西边住,对西边的骑行路线不熟,就用谷歌地球规划路线,用OruxMaps导航,几次探路之后发现,西边的骑行路线也很丰富,不仅如此,整个昆明市区周边都有很好的骑行路线,OruxMaps在线预存离线地图比较麻烦,每次都要预存,于是终于下定决心,必须把OruxMaps离线地图搞定!
      OruxMaps是目前最好用的户外运动导航软件,OruxMaps有两种使用地图方式,一是在线地图,二是离线地图,在线地图预览多少区域就预存多少区域,然后离线可以使用预存区域的地图,开始觉得这种方法非常方便,但是,随着规划越来的越多的骑行路线,每次都要预存,就觉得繁琐了;离线地图是在电脑上用专用软件制作某个区域的地图,复制到手机里,供OruxMaps离线使用的地图,这才是真正意义的离线地图。
      经过搜索,发现用一款名为“Mobile Atlas Creator”的软件可以制作离线地图,仔细看了一些教程,发现Mobile Atlas Creator制作离线地图简单的要命,难是难在地图源方面,在某些商业地图商的强烈反对之下,Mobile Atlas Creator从1.9版本之后就不提供一些地图源,其中就包括谷歌地球,那就自己定义地图源。大家搜索《如何添加Mobile Atlas Creator的自定义地图源》,很多地方都有,这篇文章对自定义地图源讲解的比较清楚,千万不要被那些代码吓住,其实很简单。其中有一段话:“只是需要把其中x,y,z的具体的值,替换为{$x}, {$y}, {$z}这样的引用。同时把原url中mt3替换为了mt{$serverpart},并在接下来的<serverParts>....</serverParts>配置中写入“0 1 2 3”。 在下载开始时,MOBAC会将{$x}, {$y}, {$z}替换为真实的x,y,z, 将{$serverpart}替换为0 1 2 3中随机的一个”。这些东西不好理解,可以把地址复制到Word里,把字体设为七号,把需要替换的部分改为红色字体,一目了然。第一行是地图图片实际地址,第二行是替换地图图片图源文件需要的地址;第三行是道路地名图片实际地址,第四行是替换道路地名图片图源文件需要的地址。

      把Word里替换好的地址复制到TXT文本编辑器里,注意地址之间有空格的要去掉空格,编辑的时候仔细点,很容易成功。自定义了谷歌地球单层图源文件,用Mobile Atlas Creator测试,嘿嘿!成功了,又仔仔细细自定义了带道路地名的谷歌地球多层图源,哈哈!也成功了,迫不及待地把棋盘山一小段山路的离线地图做出来,用OruxMaps显示,加载了这段山路的手绘轨迹一看,轨迹和实际地图偏移300多米,瞎折腾了半天,搞到的是一个加偏地图。

      上网到处找纠偏的方法,貌似有程序可以把离线地图的加偏去掉,但是,我一直没有搞成功,OruxMaps也可以校正地图,据说比较麻烦,也没有尝试,直到在一个户外网站下载了一个没有加偏的地图源,总算把没有加偏的离线地图制作成功。
      Mobile Atlas Creator制作离线地图非常简单,大家可以上网搜索《如何制作OruxMaps上使用的离线地图?》这篇文章已经把Mobile Atlas Creator制作离线地图需要的软件以及步骤讲解的清清楚楚。我也简单讲解一下制作离线地图步骤:
      我用的是MobileAtlasCreator1.9.11.4,还有个MobileAtlasCreator_v1.9.16也可以用。首先在这里下载mapsources20141104文件,解压后把里面的全部文件复制到\MobileAtlasCreator1.9.11.4MP\mapsources文件夹里,

      点MobileAtlasCreator左下部分的设置,在设置对话框里把页面设置附加区块的“√”全部去掉。





      按下图步骤一步一步的操作。

      当选择制作制作离线地图太大时,点开始下载地图册按钮,在弹出的下载地图对话框中勾选忽略下载错误并自动继续。

      缩放比例选8、10、12、14、16,不是固定值,要根据不同地图源小区域制作离线地图,复制到手机里实际观察,再做最后决定。根据我的经验,只要比例尺为200米的时候可以清晰显示山上小路,足够对付一般的骑行和徒步导航。格式选JPEG-品质系数50是最小文件格式,

      图块格式为PNG清晰度最高,文件最大,我分别用手机测试了PNG、JPEG-品质系数100、JPEG-品质系数85、直到JPEG-品质系数50,清晰度并没有明显下降,然而文件大小成倍的缩小,需要清晰度更高离线地图的车友和驴友,就需要在缩放比例和图块格式设置方面多做比较。
小区域制作了几个离线地图用谷歌地球手绘轨迹观察,滇池路七公里转盘轨迹和路面结合非常吻合,

      棋盘山手绘轨迹和山路也非常吻合,

      最出乎预料的是,原来只需要最低比例尺200米精度的离线地图,然而可以看到比例尺80米精度的离线地图,这显然是最新版OruxMaps用放大图片的方法虚拟出来的,虽然图片精度很低了,但是,山路依然清晰可见,用来导航完全没有问题。

      想不到最新版OruxMaps对离线地图的支持是如此完美,大喜过望之后开始大范围制作离线地图,恨不得把昆明市四区八县的离线地图一次下完,以后骑行只需要规划路线,再也不用在线预存地图了。然而大范围制作离线地图却遇到一些奇怪问题,当选择区域过大,图片块超过130000左右的时候,点添加选择的区域按钮,查看具体的层就会发现,精度最高的层会多出(0)(1)或更多,这个时候点开始下载地图册按钮将弹出一个警告之类的对话框,无法下载。所以选择区域要看着图片块的数量选,选定之后看看精度最高的层多出(0)(1)………,那就要缩小范围。

      更奇怪的是,选择合适区域经过长时间下载之后,突然出现这个对话框,就注定前功尽弃,清理磁盘点继续按钮也无用。

      后来总算查明原因,Mobile Atlas Creator下载的图片暂存在
C:\Documents and Settings\Administrator\Local Settings\Temp隐藏文件夹里,下载完毕之后自动剪切到Mobile Atlas Creator默认的地图册导出路径。当出现上面这个对话框时,C盘也没有满,往往还有4G左右。我的笔记本电脑太老了,整个硬盘才60G,C盘只有20G,剩余10G左右的空间,台式机更老,是不是至少C盘要有20G以上的剩余空间才能用?我无法验证,只有继续缩小范围,把昆明西边和北边经常骑行的路线做一个离线地图,包括安宁、勤丰营、富民、阿子营、小河、双龙、昆明一半市区,这么一大片区域的离线地图才117兆,比在线预存式离线地图文件大小方面效率高10倍都不止,100公里骑行路线按路线预存比例尺200米精度的地图都有100多兆,这简直就是一个巨大的免费福利啊,需要离线地图的骑友和驴友们赶快动手吧。
      这个离线地图的实际精度是比例尺600米,可以虚拟显示到比例尺80米。

      尽管Mobile Atlas Creator制作离线地图有一定限制,想做一个四区八县的离线地图有点困难,但是可以按区域多做一些离线地图分别调用,太多的离线地图必然占用太大的手机内卡空间,可以Root手机后用外置文件夹挂载软件,把离线地图存放在外卡空间,我的手机外卡已经是32G,再也不用担心内卡不够问题。离线地图名称可以用中文显示是最方便的,但是,有的网友说用用中文有可能会出错,我就懒得研究了,大不了用汉语拼音,还有个办法是在OruxMaps的地图文件夹里再新建一个文件夹,取个中文地图名,把汉语拼音命名的离线地图复制进去,OruxMaps调用离线地图是可以显示这些中文文件夹的,打开这些文件夹加载离线地图,这样管理离线地图就比较方便。
      我用的是XP系统制作的离线地图,其它操作系统没有办法研究。Mobile Atlas Creator可以做的离线地图类型相当多,包括各种地形图、等高线图、道路地名地图等等。


最新发现请看7楼

corden 发表于 2014-11-27 09:00:29

就是喜欢这样的帖子 赞起来~!

老科 发表于 2014-11-27 10:28:42

很好的技术帖,非常不错
没完全看懂,要好好的学习一下{:soso_e113:}

骑乐无穷 发表于 2014-11-27 12:15:09

技术帖,虽然我电脑菜不会搞,但很需要,慢慢学吧。

轨迹行 发表于 2014-11-27 17:40:05

老科 发表于 2014-11-27 10:28
很好的技术帖,非常不错
没完全看懂,要好好的学习一下

非常值得学习,这可是免费的福利啊。{:6_186:}

轨迹行 发表于 2014-11-27 17:45:40

骑乐无穷 发表于 2014-11-27 12:15
技术帖,虽然我电脑菜不会搞,但很需要,慢慢学吧。

老井师:慢慢来,一点也不难,软件装齐之后,制作一个离线地图和发一个帖子的难易程度差不多。确实有用,网上可以下载全国3-10层的离线地图,自己需要哪里的就做哪里的离线地图。

轨迹行 发表于 2014-12-3 18:37:58

本帖最后由 轨迹行 于 2014-12-19 15:02 编辑

12月3日增加内容:
      地图源文件只下载三次,说明还是有骑友关注并尝试自制离线地图,最近只要有时间就研究地图。简单说,在设置对话框地图大小页面,把最大宽度和高度设置为128000,图片块可以增加到440000左右,比默认值65536的图片块增加了三倍左右,这就意味制作离线地图范围也增加了三倍左右。为了制作更大范围离线地图,已经把电脑C盘调整为40G。但是依然发现磁盘空间不足的现象,已经查明原因,是C盘还是FAT32格式,单个文件不能超过4G的原因,把C盘整成NTFS格式应该可以了,做个昆明市四区八县的离线地图应该不难,我只有重装系统,Mobile Atlas Creator还可以导入GPS文件做沿路的离线地图,等有时间在此发帖了。

12月14日增加内容:
      一不做二不休!为了研究透彻自制离线地图,把电脑硬盘升级到320G,把C盘调整为200G,重装系统,这样总该够了吧。
      实际上设置→地图大小→最大宽度和高度设置为1048575才是最大下载图片数,图片块可以增加到26000000以上,但是,Mobile Atlas Creator限制最大允许下载图片数是500000,即便如此,做个昆明市四区八县离线地图根本不是问题。还有设置→网络,同时运行的下载链接数设置为6,下载速度可能会快一些。

      以昆明市为中心,定义了最大的下载区域,最大图片数999598,反正是超过1000000就不能下载了,这个离线地图区域左上角接近丽江、右上角接近贵州六盘水、左下角接近普洱市、右下角在麻栗坡附近,这个离线地图范围大大超过昆明市四区八县的范围。

      下载和创建地图的时间687分钟,已经超过十个小时,下载这个离线地图的时候,不知道同时运行的下载链接数可以设置为6,还是用默认值2,

      印象中创建地图文件的时间都超过一小时,C:\Documents and Settings\Administrator\Local Settings\Temp文件夹里的临时文件超过60G,

      离线地图文件超过5G,

      满心希望地把这个离线地图用数据线复制到手机里,连续两次无法复制进手机,想了半天,哎!还是老问题啊,手机的TF卡,都是FAT32格式的,最大文件不能超过4G,折腾了几天时间,做出一个不伦不类的离线地图。上网搜索得知,把TF卡格式化成NTFS格式就可以支持4G以上文件,可是手机不支持NTFS,后来发现可以格式成exFAT格式,但我的电脑无此功能,只好作罢。
      那就再现实一点,做一个昆明市行政区域的离线地图最现实,而且文件大小肯定不会超过4G,上网搜索才知道,昆明四区八县是区划调整前的说法。目前昆明共辖6个区、7个县、代管安宁一市,另管辖3个国家级开发区。其中区市包含盘龙区、五华区、西山区、官渡区、呈贡新区、东川区、安宁市,高新技术产业开发区、经济技术开发区、滇池旅游度假开发区。7个县为晋宁县、富民县、嵩明县、寻甸回族彝族自治县、宜良县、石林彝族自治县、禄劝彝族苗族自治县七个县。
      地理太差了,上网下载了一个全国边界.kml的文件,用谷歌地球观察,昆明市的行政区域范围,觉得有些地方很奇怪,最奇怪的地方是,阳宗海一半是昆明,一半是玉溪?

      下载查看了昆明市行政区划图一看,还真是如此。

      根据全国边界.kml的文件,在谷歌地球里手绘昆明昆明市行政区域的轨迹文件,导出后用zGPSconv转换为gpx文件,再用Mobile Atlas Creator导入,

      按多边形选取离线地图下载区域是最理想的,就是太费时间了,没有撤销功能,一旦出错,只有重头再来。

      按多边形选取昆明行政区域离线地图,下载之后,地图文件仅仅848兆,还不到1G,缩放比例分别是10、12、14、16层,上面已经介绍过,这个精度的离线地图是比例尺600米,可以虚拟显示到比例尺80米,足够对付一般的山路骑行和徒步导航。
用同样方法制作一个云南省的离线地图,还是用多边形选取的方法制作。当然不能用16层作为精度最高的层,图片数太多,无法下载,实际缩放比例分别是5、7、9、11、13、15层。

      制作成功两个比较大区域的离线地图,再次制作离线地图,就应该考虑计算一下文件大小问题,
      5.3G的离线地图是998964个图片
      998964÷5.3≈188483
       则1G≈188483个图片
       848兆的昆明离线地图76569个图片
       76569÷0.848≈90293
       则1G≈90293个图片
       怎么两个离线地图1G文件图片数差不多相差两倍?这是因为矩形定义的下载区域可以直接显示图片数,多边形定义的下载区域不显示图片数,只有用鼠标指向当前地图册区块里的各个层会显示数量,然后加起来,缩放比例是5、7、9、11、13、15层的图片数分别是4、14、117、1432、20910、325199,总数是347676,而这些数字总是和矩形定义下载区域相差一倍。
       注意看:即使矩形定义的下载区域超过500000,无法进行地图册下载对话框显示的图片数和缩放比例显示的图片数相差一倍。

       按1G≈90293个图片计算,
       347676÷90293≈3.85(G)
       则:云南省的离线地图3.85G左右,实际下载制作的云南省离线地图3.95G,好险啊,再大一点就无法装进TF卡。Jpg是图片有损压缩格式,无论怎么压缩,鲜艳的图片占用空间大些、灰色也就是色彩越少的图片占用空间越小,计算大小和实际值有点误差纯属正常。
      多边形方式成功制作了昆明、云南的离线地图,更是觉得5.3G的那个离线地图不伦不类,但是,没有白做,至少积累了经验,也得出了Mobile Atlas Creator制作离线地图的极限和电脑的最低要求,
       即:不管用什么精度的层,Mobile Atlas Creator最多就是下载50万张图片,地图文件最大5G以上,电脑C盘至少大于80G,大于100G更好,现在的主流电脑,早已超过这个要求。

12月19日更新内容:
      这是16层精度自制昆明市行政区域离线地图显示的山路效果,

      这是15层精度自制云南省离线地图显示的山路效果,作为山路骑行导航,还是勉勉强强够用,

      但是,作为全云南省的公路骑行,完全没有问题,15层精度自制云南省离线地图的显示精度是比例尺2公里,

      可以虚拟显示比例尺200米。

      这是网上下载的全国3-10层离线卫星地图,

      这个离线地图的实际显示精度是40公里比例尺,

      可以虚拟显示比例尺5公里的精度。这个精度肯定是比较低了,但是,作为全国骑行,还是有一定的使用价值,至少比没有要好。

      由于这个离线地图只有1G,用多边形定义全国离线地图下载区域自制一个全国离线地图,精度可能还可以提高,我也很想自制一个全国离线地图,但由于我没有骑行全国的打算,就不想自制全国离线地图了。
      已经下载exFAT补丁,可以把TF卡格式化成exFAT格式,用了一个8G的TF卡做实验,老的两台手机不能识别,新手机可以识别,这就意味着大于4G的离线地图也可以使用。
      用UltraEdit文件编辑软件可以编辑xml文件,直接把汉语拼音的离线地图名更换为中文名,离线地图的使用更加方便。

      提起离线地图,几乎所有人都会想到,自制离线地图不就是为了省流量嘛,的确如此,说自制离线地图不是为了省流量,那是假话,但是,经过实际使用离线地图,看到Oruxmaps对离线地图的完美支持,不是在线地图可以比拟的,离线地图和在线地图的精度是一样的,但Oruxmaps可以用放大图片的方法虚拟更高精度的离线地图,无形中提高了好几倍的地图精度,甚至还可以任意旋转地图,我还不用说,到了没有手机信号的深山老林,有再多的流量也等于零。这样看来,自制离线地图是为了省流量,完全是一个不值一提的次要原因。
      为了自制离线地图,我走了很多弯路,经过这段时间断断续续的对离线地图的研究,最终做出了适合自己使用的离线地图,非常值得。仔细看过这个帖子的朋友,肯定可以少走弯路,最好不走弯路,我也非常高兴把我的自制离线地图的方法分享给大家。
      作为一名户外运动爱好者,不管是骑车还是徒步、登山,导航软件和离线地图是必修课程,几百元的安卓手机都可以玩转离线地图,导航软件和离线地图,可以为我们的户外运动带来更多的乐趣和相对的安全。

Luck88 发表于 2014-12-5 14:51:38

楼主研究的透彻,支持楼主!

轨迹行 发表于 2014-12-13 12:45:12

Luck88 发表于 2014-12-5 14:51
楼主研究的透彻,支持楼主!

多谢支持!有时间继续完善这个帖子。

zwdnet 发表于 2015-2-16 17:46:11

多谢楼主的技术贴,正在按您的方法下载地图,支持楼主!
页: [1] 2
查看完整版本: 用Mobile Atlas Creator自制OruxMaps离线地图