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

R语言栅格化SpatialPolygonsDataFrame后如何获取正确单元格维度

问题原因
  • 单位不匹配:你的矢量使用WGS84经纬度坐标系,单位为十进制度,你设置res=100意味着每个栅格的宽高为100度,而你的研究区经度跨度仅约0.4度、纬度跨度仅约0.65度,远小于100度,因此只能生成1行1列的栅格。错误的分辨率设置还会导致生成的栅格范围远大于原始矢量范围,出现你看到的extent异常的问题。
  • 多余的CRS删除操作:你手动执行crs(p) <- NULL会破坏矢量的坐标参考系信息,进一步干扰栅格参数计算。
解决方法

如果你需要的res=100是指100米分辨率,需要先将矢量转换为以米为单位的平面投影(如对应区域的UTM投影),再执行栅格化操作,代码如下:

# 加载依赖包
library(raster)
library(rgdal)

# 读取矢量数据,不要删除CRS
p <- shapefile('MadaGranary')

# 转换为对应区域的UTM投影(你的研究区对应UTM 47N,EPSG:32647)
p_utm <- spTransform(p, CRS("+init=epsg:32647"))

# 基于投影后的矢量范围创建栅格,res=100对应100米分辨率
r.raster <- raster(extent(p_utm), res = 100, crs = crs(p_utm))

# 执行栅格化
p.r <- rasterize(p_utm, r.raster, field = "id")

# 打印查看维度
print(p.r)

如果你确实需要使用经纬度坐标系生成栅格,可按实际需求设置对应十进制度单位的分辨率,例如100米对应的经纬度分辨率约为0.00089度,可设置res=0.00089,无需转换投影。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:03