在 R 中,保存一个 shapefile

Vas*_*sco 9 r shapefile

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

首先,我阅读了我的对象

map<-readOGR("C:/MAPS","33SEE250GC_SIR") 
Run Code Online (Sandbox Code Playgroud)

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

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

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

ids<- unique(test$id)
map2<-  map[map$CD_GEOCODI %in% ids ,]
Run Code Online (Sandbox Code Playgroud)

当我绘制map2时,一切正常。但是,当我尝试保存此 shapefile 时,出现了错误

writeOGR(map2, dsn = "C:/MAPS" , layer = "nameofmynewmap")
Run Code Online (Sandbox Code Playgroud)

匹配错误(驱动程序,drvs$name):缺少参数“驱动程序”,没有默认值

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

Cyr*_*ian 13

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

  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

  
Run Code Online (Sandbox Code Playgroud)