使用 R 在 GeoJSON 中获取多边形的邻接矩阵

Get Adjacency matrix for Polygons in GeoJSON using R

我在 GeoJSON 文件中有一组多边形。他们是波士顿的街区。我想生成一个 CSV 格式的邻接矩阵,其中如果 i 区与 j 区相邻(即它们正在接触),则元素 j,j 为 1。

我在互联网上找到了一个 R 代码并用于我的数据集 (Uber Movement Dataset),如下所示:

library(rgeos)
library(rgdal)
polys <- readOGR("D:/boston_taz.json")
adj <- gTouches(polys, byid = TRUE)

并出现以下错误:

> library(rgeos)
> library(rgdal)
> polys <- readOGR("D:/boston_taz.json")
OGR data source with driver: GeoJSON 
Source: "D:\boston_taz.json", layer: "boston_taz"
with 2728 features
It has 7 fields
> adj <- gTouches(polys, byid = TRUE)
Error in RGEOSBinPredFunc(spgeom1, spgeom2, byid, "rgeos_touches") : 
  rgeos_binpredfunc: comparison failed

由于我是 R 的新手,问题是什么?如何将生成的矩阵导出为 .csv 格式?

我使用零宽度缓冲区清理了 R 中的拓扑问题,我的问题就解决了。

library(rgeos)
library(rgdal)
polys <- readOGR("D:/boston_taz.json")
polys2  <- gBuffer(polys , byid=TRUE, width=0)

adj <- gTouches(polys2, byid = TRUE, returnDense=TRUE, checkValidity=TRUE)
write.csv(adj ,"adj.csv")