导出SpatialPointsDataFrame

时间:2016-08-09 18:52:33

标签: r sp

我使用以下代码创建了SpatialPointsDataFrame

SpatialPointsDataFrame(coords = xy, data = data4xy,
                       proj4string = CRS("+proj=utm +zone=9 ellps=WGS84"))  

其中data4xy是包含2列的数据框,date是与每个GPS点关联的时间戳,id是被跟踪动物的ID。

从这个SpatialPointsDataFrame,我想为每个被跟踪的动物使用writeOGR()导出shapefile(基本上按id分组)。我将如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

只需在subset循环或* apply语句中使用for,例如:

library("sp")
library("rgdal")

data("meuse")  # example data
coordinates(meuse) <- ~x+y
proj4string(meuse) <- CRS("+init=epsg:28992")

# separate by `soil`
table(meuse$soil)
#  1  2  3 
# 97 46 12 

id_list <- levels(meuse$soil)  # `levels()` for factors, otherwise `unique()`

# subset SpatialPointsDataFrame and write shapefiles
lapply(id_list,
       function(x) { 
         writeOGR(obj=subset(meuse, soil==x), dsn=".",
                  layer=sprintf("meuse_%s", x),
                  driver="ESRI Shapefile")
       })