PROJ坐标系转换库使用
基本工具使用
- proj:用于同一参考椭球下,不同投影平面坐标系的转换;
- cs2cs:支持proj的功能,支持可自定义坐标系对的转换;支持不同参考椭球的转换;
- geod:提供测地线计算功能;
- gie:提供回归测试功能;
- cct:提供4D坐标框架变换,比如ITRF93 到 ITRF2000;
- projinfo:地理对象和坐标操作查询;
常用操作
wkt转换PROJ字符串:projinfo -o PROJ <WKT字符串>
不同椭球框架坐标转换1:cs2cs <PROJ坐标定义字符串> +to <PROJ坐标定义字符串>
不同椭球框架坐标转换2:cs2cs <PROJ坐标定义字符串> +to +init= epsg:id
查看PROJ库支持的投影方法:cs2cs -lp
查看PROJ库支持的椭球框架:cs2cs -le
查看PROJ库支持的单位:cs2cs -lu
PROJ库逆变换选项:+inv
例子:
正变换:echo 17.7562015132 45.3935192042 133.12 2017.8 | cct +proj=cart +ellps=GRS80
逆变换:echo 4272922.1553 1368283.0597 4518261.3501 2017.8000 | cct +proj=cart +inv +ellps=GRS80
PROJ字符串示例定义(以CGCS2000 100度4分 带为例)
+proj=tmerc +a=6378137 +rf=298.257222101 +pm=greenwich +x_0=500000 +y_0=0 +lon_0=100d4’E +lat_0=0d +k_0=1.0 +units=m +type=crs +no_defs
PROJ库变换坐标说明
大地坐标:longitude, latitude, elevation above ellipsoid, Time
平面坐标(投影坐标或者地心笛卡尔积坐标):X, Y, Z, Time
例子:
17.7562015132 45.3935192042 133.12 2017.8
PROJ库Coordinate operations
- Projections:Projections map the spherical 3D space to a flat 2D space. e.g. +proj=tmerc
- Conversions:Two coordinate reference systems are based on the same datum.e.g. +proj=cart
- Transformations: Two coordinate reference systems are based on different datums. e.g. +proj=helmert
- The pipeline operator: Construct complex operations by daisy-chaining operations in a sequential pipeline.
- Computation of coordinate operations between two CRS.
关于管线操作的一个例子:
z坐标不变入栈–>独立投影坐标系–>对应参考椭球的经纬度–>对应参考椭球的空间笛卡尔积直角坐标–>helmert变换–>目标参考椭球的空间笛卡尔积直角坐标–>目标参考椭球的经纬度–>z坐标不变出栈:
echo 511043.4090 2447343.3775 1355.5670 |
cct_d +proj=pipeline
+step +proj=push +v_3
+step +proj=tmerc +a=6379337 +rf=298.257222101 +lat_0=0 +lon_0=100d5’E +pm=greenwich +k_0=1 +x_0=500000 +y_0=0 +units=m +inv
+step +proj=cart +a=6379337 +rf=298.257222101
+step +proj=helmert +convention=coordinate_frame +x=-2.5262567418394610 +y=14.1393339168280363 +z=5.6394467041827738 +rx=0.0000002411877815 +ry=-0.0000004558374787 +rz=-0.0000002064078050 +s=-190.5268222026811884
+step +proj=cart +a=6378137 +rf=298.257222101 +inv
+step +proj=pop +v_3
开发使用
常见问题解决:
- Cannot find proj.db
解决: 设置PROJ_LIB环境变量。比如,PROJ_LIB=G:/Proj/Share/