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

无法使用project函数将SpatVector重投影至EPSG:3035的问题排查

问题解决方法

你遇到的Error: [project] input crs is not valid错误,核心原因是创建的occurrence SpatVector未指定原始坐标系——terra必须明确输入数据的坐标参考系,才能完成投影转换。你的坐标是经纬度格式(5.x,58.x),对应WGS84坐标系(EPSG:4326),只需补充指定这个CRS即可解决问题。

方法一:创建SpatVector时直接指定CRS

library(terra)

# 创建带原始坐标系的SpatVector
occurrence <- terra::vect(
  cbind(c(5.73582, 5.673900, 5.770425),
        c(58.79926, 58.73660, 58.70576)),
  crs = "EPSG:4326"  # 指定原始坐标系为WGS84
)

# 重投影到EPSG:3035
proj_occ <- terra::project(occurrence, "EPSG:3035")

方法二:创建后补设CRS

如果已经生成了无CRS的SpatVector,可通过crs()函数补设:

occurrence <- terra::vect(cbind(c(5.73582, 5.673900, 5.770425),
                               c(58.79926, 58.73660, 58.70576)))
# 补充设置原始坐标系
terra::crs(occurrence) <- "EPSG:4326"

# 执行投影转换
proj_occ <- terra::project(occurrence, "EPSG:3035")

后续:统计土地覆盖单元格的记录数

投影完成后,可使用rasterize()函数统计每个Corine图层单元格内的记录数量:

# 假设你的Corine土地覆盖图层为corine_raster
cell_counts <- terra::rasterize(proj_occ, corine_raster, field = 1, fun = length, background = 0)
  • field = 1:用常量字段作为计数依据
  • fun = length:统计单元格内的点数量
  • background = 0:无记录的单元格赋值为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:20:03