我使用以下代码创建了SpatialPointsDataFrame
:
SpatialPointsDataFrame(coords = xy, data = data4xy,
proj4string = CRS("+proj=utm +zone=9 ellps=WGS84"))
其中data4xy
是包含2列的数据框,date
是与每个GPS点关联的时间戳,id
是被跟踪动物的ID。
从这个SpatialPointsDataFrame
,我想为每个被跟踪的动物使用writeOGR()
导出shapefile(基本上按id
分组)。我将如何实现这一目标?
答案 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")
})