无法使用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
相关产品推荐
相关产品推荐

