【发布时间】:2020-04-03 21:48:47
【问题描述】:
我使用gConvexHull() 创建了归类为SP polygon 的主范围多边形。为了输出为.shp 文件,我将其转换为SpatialPolygonsDataFrame,其新类为"sf" "data.frame"。
但是当我尝试使用writeOGR() 输出它时,它会出现错误消息:
Error in writeOGR(obj = HRDF, dsn = "C:/Users/RKirton/Documents/Data files", :
inherits(obj, "Spatial") is not TRUE
我也尝试了st_write() 并收到了这个新的错误消息:
Error in CPL_write_ogr(obj, dsn, layer, driver, as.character(dataset_options), :
argument dsn, layer or driver not of length 1.
我对 R 还很陌生,不确定如何解决这些错误消息。
这是我的代码:
for(i in 1:length(unique(mydata$ID))) {
hunt <- mydata[which(mydata$Season2 == "Hunt" & mydata$ID ==
unique(mydata$ID)[i]), ]
hunt_spdf <- SpatialPointsDataFrame(coords = cbind(hunt$X, hunt$Y), data =
hunt, proj4string = CRS("+init=epsg:32614"))
HR = gConvexHull(hunt_spdf, byid = FALSE)
plot(hunt_spdf)
plot(HR, add = TRUE)
HRDF = SpatialPolygonsDataFrame(HR, data = data.frame(IDs="Deer_HHR"))
HRDF = st_as_sf(HR)
HRDF
HRDF$NEWCOL = "ID"
HRDF
st_write(obj = HRDF, dsn="C:/Users/RKirton/Documents/Data files",
layer=paste0('DeerHHR_', hunt$ID), driver="ESRI Shapefile")
}
【问题讨论】:
-
欢迎来到 SO。我也经常发现处理空间数据文件/格式也很困难。当您尝试将
writeOGR()与原始sp polygon对象一起使用时会发生什么? -
您是如何将其转换为
SpatialPolygonsDataFrame的?因为它不应该有sf类。听起来您已将其转换为 Simple Feature 对象 (sf),因此您可以使用sf::st_write()将其输出为 .shp 文件。 -
嗨 Nate,当我尝试将 writeORG 与原始 sp 多边形一起使用时,它给出了一个错误,并说它不是一个 sf 对象...在谷歌搜索时我发现要使用 writeOGR,你需要它要么是一个 sp 多边形数据框,要么你需要它是一个 sf 对象。
-
嗨 SymbolixAU,我会试试这个!我使用 st_as_sf 对其进行了转换,这是我的主管告诉我要做的,以使其成为 sf 对象,以便我可以用 st_write 将其写出来……很有可能我只是在某处交叉了线。我会在我的问题中发布我所做的!
标签: r gis polygon sf convex-hull