转手把手教你制作Iphone户外徒步地图

时间:2024-02-25 21:23:10

转自:http://www.sosaw.com/threads-360728-1-1.html

我是一个GIS科班毕业生,户外徒步比较业余,但没事喜欢倒腾地图。最近想去香山看看红叶,借着网络上的资源和学习前辈的经验,自给做了一个Iphone上能用的户外徒步地图,和大家一起分享分享。


先来上个图:


优势
相比之前在手持机上的制图方法的优势在于:
1. DEM晕渲图叠加影像,不仅能一目了然山体情况,也能通过详细的卫星影像给自己提供地标参照。不用来回切换不同地图来看顾此失彼。
2. 用矢量等高线在Tilemill中渲染切片,可以*定义等高线样式,同时也能满足在不同比例尺显示不同细节的要求,不会出现缩小看到锯齿,放大看不清的问题。同时切片数据平滑了使用性能,不会一次要加载很大面积的等高线导致卡机。
3. 对于我这种没手持机的小驴,可以用手机看到差不多的地图。

地图结构
这个地图呢主要分了5层:
1. 谷歌卫星影像作为最底层的地图。
2. AsterGDEM2生成的晕渲图,叠加在影像之上。
3. AsterGDEM2生成的等高线。
4. 谷歌地图的地标层。
5. 徒步路线和标注层。

实现方式:
谷歌卫星影像和地标层是在线加载的,也可以离线缓存。
AsterGDEM2的晕渲图和等高线是离线的Mbtiles格式的瓦片地图。
徒步路线是通过【跟我走-自制路线分享】ios app画出来的。
最终这一切都在【地图加加】ios app中加载显示出来。

制作的步骤:
1. AsterGDEM2数据下载, GlobalMapper配准,输出矢量等高线shape数据和栅格的GeoTiff晕渲图
2. Mapbox的Tilemill配置等高线样式,加载晕渲图并切图转换为Mbtiles数据
3.【跟我走】ios app手绘香山徒步路线并导出kmz
4.【地图加加】配置谷歌影像和地标,并加载路线kmz、等高线、晕渲图。

相关数据和工具介绍:

【AsterGDEMV2】数据(我一般是在这个地址下载)
http://gdem.ersdac.jspacesystems.or.jp/search.jsp


【GlobalMapper】 一个强大的GIS地图软件,这里我们主要用来对DEM数据进行配准、渲染和导出。

Mapbox的【Tilemill】,可以按照自己需要配置样式,并渲染出MBtiles格式的地图。
https://www.mapbox.com/tilemill/


【跟我走】 ios app可以在手机上手绘徒步路线并导出kmz/gpx。
https://itunes.apple.com/cn/app/id917066259



【地图加加】Ios app可以在手机上加载在线地图和离线地图
https://itunes.apple.com/cn/app/id438868200



下面我来说说怎么一步步的做出这样的地图:
一、等高线数据配准、晕渲图渲染、矢量等高线导出。

1. DEM数据下载,我们这里选用的是AsterGDEMV2的数据。根据香山所处位置总共下载了四块数据。

2. 解压后,通过globalmapper打开这四个块的数据,然后导出为DEM格式,由于我们只需要香山部分的数据,所以在导出时,在Drawbox中选取 香山这一块即可。(这部分和之前很多前辈介绍的方法相同,我就不详细说了,可以参考http://blog.163.com/djy_zxh/blog /static/34269441201210213549637/)


3. 再次打开刚才导出的香山这块的DEM,下面我们需要对这一块做几件事情:

    a. 配准(因为我们最终会在火星坐标系地图上显示,所以我们需要将DEM偏移到火星坐标系上)
   点击图层控制,右键选择DEM图层,并点击右键,选择:Rectify(配准),选择后会弹出如下窗口:


具体的配准过程可以参考前辈的文章http://www.doyouhike.net/forum/comm_nav/1014375,0,0,0.html


    b. 生成等高线

      方法与前辈们的方法相同,参考:

      http://blog.163.com/djy_zxh/blog/static/34269441201210213549637/

     

c. 设置投影(这里不同的是我们不需要改成UTM50的投影,还是使用平面经纬度投影,单位为度)
  点击设置按钮

在弹出的设置窗口,选择投影,这里投影我们还是保留原有的平面经纬度投影,只是把单位改成dgree


d. 添加格网(这里由于单位变了,所以设置格网宽度例如500m,就会改成0.005度)
        继续在设置窗口中选择“General”一般。 选择Current Projection,在custom中输入0.005


  完成后格网如下效果:


e. 导出,与以往不同的是,这里我们将等高线和晕渲图分开导出。等高线导出为矢量shape格式,晕渲图导出为栅格图。
    导出等高线,从菜单上点击 文件(files)→导出矢量数据格式(Export Vector Format...)然后显示如下界面

    在下拉菜单中选择Shapefile


点击下一步后,在shapefile导出设置中勾选导出线,并输入导出路径和文件名,点击OK即导出完毕。


导出的shape文件如下,这里面包含了等高线和格网的矢量线数据


紧接着再导出栅格晕渲图,首先请确认两点:立体光照效果关闭,等高线不显示。




导出栅格格式GeoTIFF地图,点击文件-导出栅格图像(Export Raster/Image format...),格式选择GeoTiff
   在导出设置中我们可以选择更高的采样精度,这里我选择为0.00005度,值越小生成的GeoTiff文件会越大,但也会越清楚


导出完成后,会生成一个tiff文件:

二 TileMill等高线样式配置和晕渲图渲染切片,生成MBtiles

使用TileMill的目的,是需要使用TileMill把我们第一步制作的等高线与晕渲图输出成MBtiles的地图。这样能导入到手机上。同时由于晕渲图会设置半透明和影像叠加显示,所以等高线和晕渲图会分离开来制作两个MBtiles。



打开TileMill 在Projects里面选择新建一个项目:


在项目列表中找到刚才新建的项目,例如本例我们项目名叫“xiangshan_hike2”。点击进入项目后会出现左侧是地图,右侧是样式表的页面如下


击左下方的图层,选择Add Layer 添加图层,我们现在开始导入刚才的晕渲图和等高线。


导入晕渲图shader.tif文件,设置如下

同样的方式导入等高线Shp数据


查看导入数据,点击图层,选择导入的数据,如shader点击一下放大镜会将地图居中显示


配置项目设置,点击整个应用窗口右上角的设置按钮:




开始配置Style并导出Mbtiles,我们先导出晕渲图,在图层控制选项中关掉等高线和背景countries的显示

删除Map的背景色样式,并保存


这个时候在地图上就只能看到晕渲图了。并且背景是网格白色

导出为MBtiles





完成导出后文件会生成在 我的文档\mapbox\export\*.mbtiles 的位置。



接着我们配置等高线样式,为了看显示效果,我们打开晕渲图和背景,并把如下样式拷贝到样式表中,然后点击Save(也可以自己定义)



#countries {
  polygon-fill: rgb(82,133,78);
}

#shader {
  raster-opacity:0.35;
}

#contourline ::gridline{
  line-width:0.5;
  line-color:#ccc;
  line-opacity:0.5;
  [LAYER=\'Contour Line, Minor\']{
    line-width:0.5;
    line-color:rgb(204,204,26);
    line-opacity:1;
    }
  [LAYER=\'Contour Line, Intermediate\']{
    line-width:1;
    line-color:rgb(204,204,26);
    line-opacity:1;
    }
  [LAYER=\'Contour Line, Minor\']{
    line-width:1;
    line-color:rgb(204,204,26);
    line-opacity:1;
    }
  text-name:[ELEVATION];
  text-face-name:\'Arial Regular\';
  text-size:12;
  text-fill:rgb(204,204,26);
  text-placement:line;
  }



保存后效果如图:




接下来开始导出等高线,导出之前先关掉背景层和晕渲图,只保留等高线层。





然后选择右上角的Export以同样的方法导出等高线mbtiles文件。



三、跟我走 IOS APP 手绘徒步路线,并导出KMZ。



之所以用跟我走画,我是觉得比在GoogleEarth上面画起来方便,尤其是在地图参照比较好的情况下。直接用手画很快。



在手机上打开跟我走,在画布上找到我们这次徒步的起点,闵庄路南的入口,然后开始沿着路划线。



这个APP操作起来很简单就不细说了。



手指在屏幕上滑动划线



长按添加一个标点




完成后导出



四  地图加加把地图加载进来显示。

地图加加要做几点:

1. 配置谷歌地标,多服务器配置:0,1,2,3   URL规则是

http://mt{$serverpart}.google.cn/vt/imgtp=png32&lyrs=h@279019843&hl=zh-CN&gl=CN&src=app&expIds=201527&rlbl=1&x={$x}&y={$y}&z={$z}&s=Galileo&scale={$scale}

   
2. 配置谷歌影像,多服务器配置:0,1,2,3 URL规则是

http://mt{$serverpart}.google.cn/vt/lyrs=s@159&hl=zh-CN&gl=CN&src=app&expIds=201527&rlbl=1&x={$x}&y={$y}&z={$z}&s=Galileo&scale={$scale}

  
3. 导入MBtiles文件

在Itunes或者Itools上,手机连接电脑后,将之前生成的两个mbtiles导入进来。并把跟我走app画的kmz路线导入进来。



4. 图层配置

设置晕渲图不透明度35%,叠加图层顺序如下图:






最终效果: