You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R Terra包转换栅格与矢量图层的坐标参考系统(CRS)

在R terra包中指定转换类型进行CRS转换

1. 先查看可用的转换参数

要明确源CRS和目标CRS之间的可选转换方法,直接用terra::gdalsrsinfo()查询:

# 查询目标CRS(比如WGS84,EPSG:4326)的转换细节
gdalsrsinfo("EPSG:4326", options = c("-o", "PROJ"))

# 直接查询两个CRS间的转换选项,比如源为UTM10N(EPSG:32610)、目标为WGS84
gdalsrsinfo("EPSG:4326", options = c("-o", "PROJ", "-s", "EPSG:32610"))

输出内容会包含PROJ格式的转换参数,比如+towgs84(基准面转换参数)或+nadgrids(栅格转换文件),这些就是QGIS里可选转换方法对应的底层参数。

2. 用project()指定转换方式

自动匹配默认转换(简单省事)

如果两个CRS有官方推荐的转换规则,直接传入EPSG代码即可,terra会自动应用最优转换:

library(terra)
# 读取栅格/矢量数据
r <- rast("你的栅格文件.tif")
v <- vect("你的矢量文件.shp")

# 转换到目标CRS(比如WGS84)
r_proj <- project(r, "EPSG:4326")
v_proj <- project(v, "EPSG:4326")

手动指定转换参数(对应QGIS自定义转换选项)

如果需要使用特定的转换方法,把包含转换参数的PROJ字符串传给project()的第二个参数即可:
比如从NAD83转换到WGS84时,指定特定的+towgs84基准面转换参数:

# 带自定义转换参数的PROJ字符串
dst_proj <- "+proj=longlat +datum=WGS84 +towgs84=-10,-150,-30,0,0,0,0 +no_defs"

# 执行转换
r_proj_custom <- project(r, dst_proj)
v_proj_custom <- project(v, dst_proj)

复杂转换用PROJ管道(适用于PROJ 6.0以上版本)

面对多步骤的复杂转换,可以用PROJ管道语法定义完整转换流程:

# 示例:从NAD83 UTM10N(EPSG:26910)转换到WGS84,指定分步转换规则
proj_pipeline <- "+proj=pipeline +step +proj=utm +zone=10 +ellps=GRS80 +step +proj=unitconvert +xy_in=metre +xy_out=degree +step +proj=datumshift +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"

r_proj_pipeline <- project(r, proj_pipeline)

3. 验证转换结果

转换完成后可以检查CRS信息和坐标值,确保符合预期:

# 查看转换后的CRS详情
crs(r_proj_custom)

# 对比转换后的坐标数值
head(values(r_proj_custom))
head(coordinates(v_proj_custom))

内容的提问来源于stack exchange,提问作者Andres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:13:14