在 R 中,保存一个 shapefile

in R, save a shapefile

我想在操作后保存一个 shapefile。

首先,我读了我的对象

map<-readOGR("C:/MAPS","33SEE250GC_SIR") 

在此之后,我将我的 shapefile 子集化:

test <- fortify(map, region="CD_GEOCODI")
test<- subset(test, -43.41<long & long < -43.1 & - 23.05<lat & lat< -22.79)

我得到了这个子集对应的id

ids<- unique(test$id)
map2<-  map[map$CD_GEOCODI %in% ids ,]

我画map2的时候就可以了。但是,当我尝试保存此 shapefile 时,出现了错误

writeOGR(map2, dsn = "C:/MAPS" , layer = "nameofmynewmap")

Error in match(driver, drvs$name) : argument "driver" is missing, with no default

我不知道如何获取驱动器。一些解决方案?

问题是您的 map2 对象不再是 shapefile,因此您无法将其另存为 shapefile。 fortify 命令将形状文件 (map@data) 的数据槽转换为 data.frame 对象以用于映射目的。 ggplot2 无法处理 class sp 的对象(空间多边形,即形状文件)。我假设您想保存此 'reduced' 或 'subsetted' 数据。您需要做的是:

  library(rgdal)
  library(dplyr)

  map <- readOGR("C:/MAPS","33SEE250GC_SIR") 
  map <- subset(world, LON>-43.41 | LON < -43.1 & LAT>- 23.05 | LAT< -22.79)

  writeOGR(map, ".", "filename", 
           driver = "ESRI Shapefile") #also you were missing the driver argument