r - 使用 R 获取 GeoJSON 中多边形的邻接矩阵
问题描述
我在 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")
推荐阅读
- mysql - How to create an SQL stored procedure to insert multiple values
- javascript - 在 JavaScript 类中,您需要始终调用 super 吗?对这个说法感到困惑
- php - 在类的构造函数中为类属性分配函数?
- c - 使用全局指针变量访问静态值是否有效?
- java - JBoss suddenly throwing errors
- python - Heroku Python 套接字连接失败
- android - Android 中的 afterTextChanged(Editable s) 无法正常工作
- swift - 我可以在没有子类化的情况下覆盖 func mouseDown 吗?
- javascript - React Router withRouter 与 AWS AppSync Provider 的兼容性
- python-3.x - Python 3.7 zlib 解压后的大小小于压缩后的大小