writeOGR保存多个shapefile

时间:2014-09-02 13:48:00

标签: r spatial shapefile

我想在循环中使用writeOGR将shapefile保存到文件夹中。我无法弄清楚如何使用该名称来保存实际文件。

说你有这个代码:

require(sp)
require(rgdal)

for (i in listafiles){
ffile <-read.csv(i)    #reads file
###do some stuff on the file and obtain a polygon sp_poly

sp_poly <- SpatialPolygons(list(Polygons(list(Polygon(coords)), ID=1)))
sp_poly_df <- SpatialPolygonsDataFrame(sp_poly, data=data.frame(ID=1))
##here comes the problem
writeOGR(sp_poly_df, dsn, layer, driver="ESRI Shapefile")

}

我喜欢writeOGR将每个生成的shapefile保存在一个单独的文件夹中,并带有文件名。例如,当&#39; i&#39;是#school; school17.csv&#39;,writeOGR会创建子文件夹。\ school17 \并将3个shapefile命名为:(school17.dbf | school17.shp | school17.shx)

我无法弄清dsn和图层参数的工作原理。

提前致谢,dev

1 个答案:

答案 0 :(得分:3)

只需将dsn和layer设置为您拥有的名称:

{
  ### ... we are in the loop
  dsn <- layer <- gsub(".csv","",i)
  writeOGR(sp_poly_df, dsn, layer, driver="ESRI Shapefile")
}
## E.g. 
list.files()
## [1] "a" "b" "c"
list.files(list.files()[1])
##[1] "a.dbf" "a.prj" "a.shp" "a.shx"

但请记住,每次创建'shapefile'时,小猫都会死亡。