美文网首页GMT
利用GMT叠加经纬度坐标和UTM网格坐标

利用GMT叠加经纬度坐标和UTM网格坐标

作者: cugliming | 来源:发表于2020-03-17 10:23 被阅读0次

问题

利用GMT绘制小区域图件时,经纬度不利于表达图内部要素的相对方位,但是可以很直观的表达图所处的绝对位置。UTM平面坐标则可以直接表达图内的位置关系。那么如何才能让经纬度和UTM同时显示在一个图件中?达到以下这样的效果,如图示:

  • 上、右轴显示经纬度标注
  • 左、下轴显示UTM投影平面坐标


    目标图样

思路

这张图的本质是要用投影平面坐标系作为绘图边框,而非常规GMT的经纬度坐标。投影类型应该选用UTM投影的-Ju,但是该投影并不支持标注平面坐标。并且经实验后发现,使用该投影后边框有两种不同形式:

  • 边框为带弧度的地理坐标系
    -R后接常规的经纬度区域范围,如-R103/104/33/34时,那么边框就是地理坐标系下的带一定弧度的边框。
  • 边框为横平竖直的平面坐标系
    -R后如果用网格数据指范围,且网格数据格式为UTM时,如-Rutm.grd,那么边框就是横平竖直的平面坐标系了。

了解这些后,我们应这么处理:

  • 左、下轴
    采用线性投影-Jx,让左、下轴显示UTM平面坐标。
  • 右、上轴
    右、上轴采用-Ju投影,并和-Jx保持相同的比例尺。问题在于边框,这里图示一下上述的地理坐标系边框和平面坐标系边框的区别:
    • -R103/104/33/34
      会导致右、上轴的为经纬度边框,这样和左、下轴的平面坐标边框是不匹配的。见代码和示意图:
gmt begin test pdf,png
gmt basemap -Jx1:500000 -Rutm.grd -Bag -BSWrt --MAP_FRAME_PEN=1p,blue --MAP_GRID_CROSS_SIZE_PRIMARY=5p
#gmt basemap -Ju48S/1:500000 -Rutm.grd -Bag -BNElb --MAP_FRAME_PEN=0.4p,red
gmt basemap -Ju48S/1:500000 -R103/104/33/34 -Bag -BNEls --MAP_FRAME_PEN=0.4p,red
gmt end
红色边框为使用-R103/104/33/34的结果,红线边框为经纬度弧形边框,和蓝线的平面坐标边框有较大差距
  • -Rutm.grd
    这样右、上轴是平面坐标系的边框,和左、下轴匹配,见代码和示意图。
gmt begin test pdf,png
gmt basemap -Jx1:500000 -Rutm.grd -Bag -BSWrt --MAP_FRAME_PEN=1p,blue --MAP_GRID_CROSS_SIZE_PRIMARY=5p
gmt basemap -Ju48S/1:500000 -Rutm.grd -Bag -BNElb --MAP_FRAME_PEN=0.4p,red
#gmt basemap -Ju48S/1:500000 -R103/104/33/34 -Ba -BNEls --MAP_FRAME_PEN=0.4p,red
gmt end
-R使用平面坐标,结果红线网格和蓝线网格完全吻合
  • 如何获取UTM格式的网格数据
    一般下载得到的数据都是基于地理坐标的,但grdproject可以对网格数据做地图变换和逆变换。代码如下:
    gmt grdproject lon-lat.grd -Gutm.grd -Ju48S/1:1 -C -F

后期绘图

如果是经纬度数据,就将其放在-Ju那行代码下面进行相关绘制。
如果是UTM坐标数据,就将其放在-Jx那行代码后面进行绘制。

相关文章

网友评论

    本文标题:利用GMT叠加经纬度坐标和UTM网格坐标

    本文链接:https://www.haomeiwen.com/subject/jwpzehtx.html