rgeos :: createPolygonsCommentoobj中的错误:在R中使用geojsonio的孤立孔

问题描述

我正在尝试在本地存储库中为this output创建一个.geojson文件。我正在本地下载文件,进行调整并编写input21.geojson,但是却收到消息:

Error in rgeos::createpolygonsComment(oobj) : 
rgeos_polyCreateComment: orphaned hole,cannot find containing polygon for hole at index 51

到目前为止,我的代码

library(jsonlite)
library(rgdal)
library(downloader)
library(geojsonio)
library(maptools)


u <- paste0('https://servicodados.ibge.gov.br/api/v2/malhas/21?formato=application/vnd.geo+json')

downloader::download(url = u,destfile = "/tmp/gas.GeoJSON")
gas <- readOGR(dsn = "/tmp/gas.GeoJSON")

gas$var0031 <- 21
gas$var0517 <- 0 
gas$var0514  <- as.numeric(substr(as.character(gas$var0031),1,1))
gas$var0512 <- "MA"
gas$var0513 <- "Maranhão"
gas <- gas[which(names(gas) %in% c("var0517","var0031","var0514","var0512","var0513"))]

geojsonio::geojson_write(gas,file = paste0("./data/in/sidra_malhas/input21.geojson"))

解决方法

我已经找到了一个名为cleangeo的软件包,它可以纠正与地理结构有关的一些问题,并添加相应的行可以解决该问题:

gas <- cleangeo::clgeo_Clean(gas)
slot(gas,"polygons") <- lapply(slot(gas,"polygons"),checkPolygonsHoles)

在行之前:

geojsonio::geojson_write(gas,file = paste0("./data/in/sidra_malhas/input21.geojson"))