PROJ.4学习――地图投影(坐标系投影)
前言
PROJ是由大量的基础投影库构成。这里主要讨论学习PROJ库的相关参数。
这里大部分是讲如何将3D坐标系投影到2D平面上。投影时,涉及到基准线,单位,比例英子,偏移量,轴转换等。
很多实际操作中却涉及到3D坐标系转换为其他3D坐标系(下一篇更新)。
参数列表
下面是可以应用于大多数坐标系定义的PROJ参数列表。此表不尝试描述特定于特定投影类型的参数。
参数 | 描述 |
E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\bin\proj\SHARE\proj_def.dat 标红处是我安装MapServer是自带安装Proj的路径 | |
units
可以使用+units关键字指定水平单位,该关键字具有单位的符号名称(如:+units=us-ft)。另外换算单位米可以用+to_meter关键字(如:美国一英尺为0.304800609601219米)。
下面来了解一下 +to_meter 关键字的使用
从两个命令比较,第二个增加了 +to_meter=0.5
第二个参数范围是第一个的两倍
但是投影出来的位置却是同一个
因为第二个在投影转换是,将1米转换为了0.5倍,即范围缩小了一半
所以得到的结果是一样的
同样,垂直单位可以使用 +vunits 关键字。如果没有指定垂直单位,则垂直单位将默认与水平坐标相同。
注意:proj根本不处理垂直单元,因此+vto_meter参数将被忽略。
可以通过应用+k_0参数来缩放输出单元。返回的坐标(经纬度、米、千米等,按照定义的 +units 输出)按使用+k_0参数分配的值进行缩放。
几乎所有的坐标系都允许存在一个假的东偏移 (+x_0)和一个假的北偏移 (+y_0)。请注意,这些值总是以米表示,即使坐标系是其他一些单位。有些坐标系(如UTM)具有隐式的假东向和北向值。
我把Wrap翻译为覆盖或边界,也不知道准确与否。
默认情况下,PROJ将输出经度覆盖/边界值在-180到180之间。可以使用+over开关禁用在pj_inv()中较低级别执行的默认覆盖/边界。这对于等距圆柱投影特别有用,在等距圆柱投影中,X值经过-20000000(大致)后继续经过-180,而不是覆盖/边界到+180。
可以使用+lon_wrap选项在pj_transform()中提供一种进行经度边界设置的替代方法。此选项的参数是一个中心经度。所以+lon_wrap=180表示在0到360范围内的经度。注意+over不会禁用+lon_wrap。
本初子午线Prime Meridian
本初子午线的定义是基于格林尼治的本初子午线与当前坐标系统本初子午线之间的偏移量定义的(格林尼治的本初子午线是基准,设置 +pm=经度偏移量 表示当前坐标系统的本初子午线;或者是一个符号名称)。
如:EPSG:27500,它的本初子午线就是基于格林尼治的本初子午线加上西偏2.337208333333333构成
# ATF (Paris) / Nord de Guerre <27500> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +units=m +no_defs <>
# NGO 1948 (Oslo) / NGO zone V <27395> +proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <>
当前子午线声明只被pj_transform() API利用,而不被pj_inv()和pj_fwd()利用。因此用户工具cs2cs遵守本初子午线参数,但是proj程序忽略它.
在cmd中输入:cs2cs -lm 查询支持的本初子午线
比如,使用的例子。在格林尼治基于lat/long坐标的位置long=0, lat=0被转换为以马德里为本初子午线的lat/long坐标。
轴方向切换
从PROJ 4.8.0开始,+axis参数可用于控制坐标系的轴向。默认的方向是“向东,向北,向上”,但是方向可以翻转,或者使用+axis开关中的轴的组合来翻转轴。值分别是:
- "e" - Easting
- "w" - Westing
- "n" - Northing
- "s" - Southing
- "u" - Up
- "d" - Down
其组合格式如下:
- +axis=enu
- +axis=wnu