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

GIS Shapefile转spatstat中PPP遇问题:tess命令运行超时

问题解答

操作问题分析

你之前的操作存在两个关键问题:

  1. 使用了maptools::readShapeSpatial这种已被弃用的旧函数,导入和转换效率低,且对复杂多边形的兼容性差;
  2. 错误使用了tess()函数:如果你的目标只是创建PPP所需的研究区范围,根本不需要创建镶嵌对象(tess)——镶嵌是用于划分区域单元(比如分区分析)的工具,而多多边形组成的研究区直接用复合owin对象即可,强行创建tess会因多边形数量多、顶点复杂导致运算卡死。

正确获取owin研究区并创建PPP的流程

1. 替换工具包,高效导入Shapefile

spatstat 3.0+版本推荐配合sf包处理空间数据(替代旧的sp、maptools),步骤如下:

  • 安装并加载必要包:
install.packages(c("sf", "spatstat.geom"))
library(sf)
library(spatstat.geom)
  • 导入多多边形Shapefile:
UMshape1 <- st_read("F:/GIS/export_shape/Clipped_urban_matrix.shp")

2. 直接转换为复合owin研究区

无需拆分多边形为列表,直接将sf对象转换为包含所有多边形的复合owin:

study_area_owin <- as.owin(UMshape1)

这个对象就是你创建PPP需要的研究区窗口。

3. 创建PPP点模式数据集

假设你有点数据的x、y坐标,或者已导入sf格式的点数据:

  • 若用坐标创建:
# 替换x_coords、y_coords为你的点坐标向量
points_ppp <- ppp(x = x_coords, y = y_coords, window = study_area_owin)
  • 若从sf点对象转换:
# sf_points是你的sf格式点数据
points_ppp <- as.ppp(sf_points)
# 自动关联研究区窗口(若sf点数据的CRS和研究区一致)
points_ppp <- points_ppp[study_area_owin]

若确实需要创建镶嵌对象(tess)的优化方案

如果你的研究需要用每个多边形作为一个镶嵌单元,先优化多边形减少运算压力:

  1. 简化多边形顶点(根据数据精度调整dTolerance,单位和数据CRS一致):
UMshape_simplified <- st_simplify(UMshape1, dTolerance = 10)
  1. 转换为owin列表后创建镶嵌:
UM_windows_list <- as.list(as.owin(UMshape_simplified))
teUM1 <- tess(tiles = UM_windows_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:00:56