在R中保存一个shapefile

13

我希望在操作后保存一个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")

在匹配(driver, drvs$name)时发生错误:参数“driver”缺失,没有默认值

我不知道如何获取驱动程序。有解决方案吗?


2
你需要传递驱动程序参数吗?driver="ESRI Shapefile"文档中有一些例子可以参考?writeOGR。http://www.inside-r.org/packages/cran/rgdal/docs/writeOGR - chinsoon12
1个回答

17

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

  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

  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接