在R中如何将spatstat的tess对象转为sf格式并保存为Shapefile
如何将spatstat生成的六边形格网计数结果转换为sf格式并导出为Shapefile?
我用spatstat包在指定区域创建了六边形格网(hextess),并统计了每个六边形内的点数。现在需要把生成的QC_empresastur_hex(对应tess对象hexagonos的计数结果)转换为sf格式,以便保存为Shapefile用于GIS工具。现有代码如下:
library(spatstat) hexagonos <- hextess(win_natales, 1000) QC_empresastur_hex <- quadratcount(empresastur_ppp, tess = hexagonos) plot(empresastur_ppp, main = "Conteo de empresas por hexágonos", cols = "orange") plot(QC_empresastur_hex, add = TRUE, cex = 1)
解决方案
1. 加载依赖包
除已有的spatstat外,需要sf包处理矢量数据;若转换时提示依赖缺失,需额外安装spatstat.utils:
library(spatstat) library(sf) # 若转换失败,执行以下两行 # install.packages("spatstat.utils") # library(spatstat.utils)
2. 转换格网为sf格式并绑定计数数据
tess类型的hexagonos是六边形格网的几何载体,QC_empresastur_hex是对应格网的计数结果,需将二者结合为带属性的sf对象:
# 将六边形格网转换为sf多边形对象 hex_sf <- as(hexagonos, "sf") # 把每个六边形的企业计数添加为属性列 hex_sf$empresas_count <- as.vector(QC_empresastur_hex)
3. 导出为Shapefile
使用sf包的st_write函数导出,delete_layer = TRUE参数可自动覆盖同名已有文件:
# 替换为你的目标文件路径 st_write(hex_sf, "empresas_por_hexagono.shp", delete_layer = TRUE)
内容的提问来源于stack exchange,提问作者Pablo Flores Oñat
相关产品推荐
相关产品推荐

