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 指示的版本。


proj入门
https://hanke-janson.github.io//blog/2025/05/13/proj入门/
作者
雾月山河
发布于
2025年5月13日
许可协议