proj入门
Proj
官网
简介
PROJ 是一个通用的坐标转换软件,它将地理空间坐标从一个坐标系转换为另一个坐标系。这包括地图投影和大地坐标变换。
PROJ 包含命令行应用程序,可以方便地从文本文件或直接从用户输入转换坐标。除了命令行实用程序之外,PROJ 还提供了相关的 API。API 允许开发人员在自己的软件中使用 PROJ 的功能,而不必自己实现类似的功能。
PROJ 最初是一个纯粹制图应用程序,允许用户使用许多不同的制图投影将大地坐标转换为投影坐标。多年来,随着需求的日益增加,对数据转移的支持也逐渐进入 PROJ。今天,PROJ 支持 100 多种不同的地图投影,可以用于除最晦涩的大地测量技术之外的所有基准面之间坐标转换。
基本工具的使用
PROJ 包中包含以下命令行实用程序:
proj
: 用于大地坐标的制图投影。用于同一参考椭球下,不同投影平面坐标系的转换。cs2cs
:用于从一个 CRS 转换为另一个 CRS。支持 proj 的功能,支持可自定义坐标系对的转换;支持不同参考椭球的转换。geod
:用于测地线(大圆)计算。cct
:用于通用坐标转换和转换。提供 4D 坐标框架变换,比如 ITRF93 到 ITRF2000。gie
:地理空间完整性调查环境。提供回归测试功能 。projinfo
: 用于大地对象和坐标操作查询。projsync
: 用于同步 PROJ 数据和转换支持数据。
常用操作
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
例子:
正变换:
1
echo 17.7562015132 45.3935192042 133.12 2017.8 | cct +proj=cart +ellps=GRS80
逆变换:
1
echo 4272922.1553 1368283.0597 4518261.3501 2017.8000 | cct +proj=cart +inv +ellps=GRS80
PROJ 字符串示例定义(以 CGCS2000 100 度 4 分 带为例)
1+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
proj4j
https://github.com/locationtech/proj4j
将 Proj4J 与 Maven 结合使用
!重要的! 从
1.2.2
版本开始,proj4-core
不包含 EPSG 许可文件。为了使 proj4j 正常运行,考虑proj4-epsg
依赖使用是有意义的。要在 Maven 项目中包含 Proj4J,请添加如下依赖块:
1
2
3
4
5
6
7
8
<properties>
<proj4j.version>{latest version}</proj4j.version>
</properties>
<dependency>
<groupId>org.locationtech.proj4j</groupId>
<artifactId>proj4j</artifactId>
<version>${proj4j.version}</version>
</dependency>其中
{latest version}
指的是上面徽章指示的版本。Proj4j EPSG
Proj4J-EPSG
模块分发了一部分 EPSG 数据集。要包含
Proj4J-EPSG
在 Maven 项目中,请添加如下依赖块:
1
2
3
4
5
6
7
8
<properties>
<proj4j.version>{latest version}</proj4j.version>
</properties>
<dependency>
<groupId>org.locationtech.proj4j</groupId>
<artifactId>proj4j-epsg</artifactId>
<version>${proj4j.version}</version>
</dependency>其中
{latest version}
指的是 maven 指示的版本。