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

如何用terra包创建匹配多边形分辨率的栅格并完成矢栅转换?

将多边形Shapefile转换为匹配分辨率的栅格(terra包)

核心思路

要创建与多边形尺寸匹配的栅格对象,关键是让栅格的像素分辨率接近多边形的实际边长,同时保证栅格范围完全覆盖所有多边形。

步骤1:确定匹配的分辨率

从你的数据属性(MER_LU_X/MER_RU_X等)来看,原始多边形应为规则分幅的平面投影数据,当前已转为WGS84经纬度。可通过两种方式确定分辨率:

方式A:自动计算平均分辨率

基于所有多边形的地理面积,推导近似经纬度分辨率:

# 计算每个多边形的地理面积(WGS84下自动采用 geodesic 算法)
poly_areas <- expanse(TKshape)
# 将平均面积的平方根转换为经纬度单位(1度≈111000米)
avg_res <- sqrt(mean(poly_areas)) / 111000

方式B:手动指定已知分辨率

如果明确多边形的物理尺寸(比如TK_25代表25km×25km分幅),直接转换为经纬度分辨率:

# 纬度方向分辨率:25km 换算为度
res_lat <- 25000 / 111000
# 经度方向分辨率:结合平均纬度修正(经度1度的长度随纬度变化)
mean_lat <- mean(TKshape$HOCHWERT)/100000 # 从属性提取近似纬度值
res_lon <- 25000 / (111000 * cos(rad(mean_lat)))

步骤2:创建匹配的栅格对象

用rast()函数基于多边形的空间范围和计算好的分辨率生成栅格:

# 方式A:使用自动计算的平均分辨率
r <- rast(TKshape, res = avg_res)

# 方式B:使用手动指定的分辨率
r <- rast(TKshape, res = c(res_lon, res_lat))
  • rast(TKshape)会自动继承多边形的CRS(WGS84)和空间范围
  • res参数控制像素分辨率,顺序为经度(x)、纬度(y)

步骤3:执行栅格化

用rasterize()完成多边形到栅格的转换:

# 将多边形的NAME属性值栅格化
rr <- rasterize(TKshape, r, field = "NAME")

验证结果

查看生成的栅格信息,确认分辨率和范围符合预期:

rr

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:00:20