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

如何用R语言Terra包提取栅格文件的EPSG代码?

使用Terra包处理栅格与Shapefile的投影匹配问题

1. 加载包并读取文件

首先加载Terra包,然后读取你的栅格和Shapefile文件:

library(terra)

# 替换为你的实际文件路径
raster_obj <- rast("栅格文件路径.tif")
shp_obj <- vect("Shapefile路径.shp")

2. 提取EPSG代码

Terra的crs()函数返回SpatCRS对象,直接通过$epsg即可提取对应的EPSG代码:

# 获取栅格的EPSG代码
raster_epsg <- crs(raster_obj)$epsg

# 获取Shapefile的EPSG代码
shp_epsg <- crs(shp_obj)$epsg

注:如果返回NA,说明该投影没有对应的标准EPSG代码,这种情况直接对比完整投影更可靠。

3. 对比投影并重投影

推荐用compareCRS()直接判断两个对象的投影是否一致(比单独对比EPSG更稳妥,覆盖无EPSG代码的场景):

# 判断投影是否不匹配
if (!compareCRS(shp_obj, raster_obj)) {
  # 将Shapefile重投影为栅格的投影
  shp_reprojected <- project(shp_obj, crs(raster_obj))
}

如果只想通过EPSG代码判断(仅适用于有明确EPSG的场景):

if (!is.na(raster_epsg) && !is.na(shp_epsg) && raster_epsg != shp_epsg) {
  shp_reprojected <- project(shp_obj, crs(raster_obj))
}

4. 保存重投影后的文件

如果需要保存结果,使用writeVector():

# 替换为目标保存路径,overwrite=TRUE允许覆盖已有文件
writeVector(shp_reprojected, "重投影后的Shapefile.shp", overwrite=TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:57:17