我已使用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")
}
答案 0 :(得分:0)
如果您想在评论中标记某人,则需要使用@
符号,例如@SymbolixAU
,然后他们会收到通知。
此外,如果没有可复制的示例,很难在代码中找到错误。
要尝试提供帮助,下面是一个有效的示例,该示例从sf
创建data.frame
对象,然后找到凸包,然后将.shp文件保存到目录中。如果您需要特定的帮助,则需要提供一些数据供其他人使用。
此示例仅使用sf
个对象,而不使用sp
library(sf)
library(sfheaders)
## An example data.frame
df <- data.frame(
id = c( rep(1, 15), rep(2, 11))
, x = rnorm(26)
, y = rnorm(26)
)
sf <- sfheaders::sf_multipoint(obj = df, multipoint_id = "id", x = "x", y = "y")
sf <- sf::st_set_crs( sf, 32614 )
sf
# Simple feature collection with 2 features and 1 field
# geometry type: MULTIPOINT
# dimension: XY
# bbox: xmin: 1 ymin: 1 xmax: 26 ymax: 26
# z_range: zmin: NA zmax: NA
# m_range: mmin: NA mmax: NA
# epsg (SRID): 32614
# proj4string: +proj=utm +zone=14 +datum=WGS84 +units=m +no_defs
# id geometry
# 1 1 MULTIPOINT (1 26, 2 25, 3 2...
# 2 2 MULTIPOINT (16 11, 17 10, 1...
sf_hull <- sf::st_convex_hull( sf )
sf_hull
sf::st_write( obj = sf_hull, dsn = "~/Desktop/my_hull_dir/my_hull.shp")