将shapefile(多边形)data.frame转换为R中的S4

问题描述 投票:0回答:1

我在弄清楚如何将我的shapefile从data.frame类转换为R中的S4时遇到了一些麻烦。我已经阅读了一些有关setClass函数的内容,但不了解其语法,或者正确的转换方式。我有三个班级(1、2和3)。我需要将它们重命名为孔,植被和地面。我需要转换此shapefile,因为我将SpatialPolygonsDataFramesuperClass函数用于分类脚本。这是我关注的tutorial。有人可以给我指出一个有关如何执行此操作的简单示例吗?

caret: 6.0-86
randomForest: *4.6-14
e1071: 1.7-2
raster: 3.0-12
sf: *0.8-0
RStoolbox: *0.2.6
R version: 3.5.2
shp <- SpatialPolygonsDataFrame(shp)
Error in SpatialPolygonsDataFrame(shp) : 
  trying to get slot "polygons" from an object (class "sf") that is not an S4 object 
structure(list(class = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), geometry = structure(list(
    structure(list(structure(c(-123.116217862721, -123.116217607334, 
    -123.116217604312, -123.116217864233, -123.116217862721, 
    44.6731080270105, 44.6731080254993, 44.6731078819384, 44.6731078789161, 
    44.6731080270105), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116092277155, -123.116092027057, 
    -123.11609202479, -123.116092296044, -123.116092277155, 44.6731077806902, 
    44.6731077776679, 44.6731075880164, 44.6731075880164, 44.6731077806902
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116012247241, -123.116012144481, 
    -123.116012145237, -123.116012203417, -123.116012199639, 
    -123.116012413469, -123.11601241498, -123.116012245729, -123.116012247241, 
    44.6730423562089, 44.6730423562089, 44.6730421952696, 44.6730421952696, 
    44.6730421386008, 44.6730421393564, 44.6730422942511, 44.6730422927399, 
    44.6730423562089), .Dim = c(9L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116233949854, -123.116233951365, 
    -123.116233699, -123.116233699, -123.116233581129, -123.116233584151, 
    -123.116233949854, 44.6731567848266, 44.6731570387027, 44.6731570356804, 
    44.6731569283875, 44.6731569314098, 44.6731567833154, 44.6731567848266
    ), .Dim = c(7L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116570359895, -123.116570362918, 
    -123.116570183089, -123.116570175533, -123.11657011962, -123.116570116597, 
    -123.116570359895, 44.6730916882686, 44.6730918696087, 44.6730918771645, 
    44.6730917683605, 44.673091763827, 44.6730916882686, 44.6730916882686
    ), .Dim = c(7L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116285577377, -123.116285574355, 
    -123.116285657469, -123.116285655958, -123.116285719427, 
    -123.11628572396, -123.116285577377, 44.6730524205838, 44.6730521651965, 
    44.67305216973, 44.673052278534, 44.6730522800452, 44.6730524220949, 
    44.6730524205838), .Dim = c(7L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116336270999, -123.116334530134, 
    -123.116336343535, -123.116338241561, -123.116336270999, 
    44.6730674566993, 44.6730622341048, 44.6730620769434, 44.6730670940192, 
    44.6730674566993), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116428041172, -123.116425744198, 
    -123.116427436705, -123.11642973368, -123.116428041172, 44.6730837168605, 
    44.6730813473501, 44.6730804285603, 44.6730826046413, 44.6730837168605
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116575917969, -123.116577828085, 
    -123.116581551601, -123.116580125059, -123.116575917969, 
    44.6730884800602, 44.6730875370917, 44.673090293461, 44.6730912606082, 
    44.6730884800602), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116663517321, -123.116664653719, 
    -123.116668328878, -123.116666781442, -123.116663517321, 
    44.6730755202886, 44.6730744806054, 44.6730758587901, 44.6730774545828, 
    44.6730755202886), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116731918802, -123.116733490416, 
    -123.116736270964, -123.116734868601, -123.116731918802, 
    44.6731688983444, 44.673168100448, 44.6731704216011, 44.6731716547137, 
    44.6731688983444), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116625508438, -123.116627104231, 
    -123.11663077939, -123.116629425384, -123.116625508438, 44.6731609919166, 
    44.6731606775937, 44.6731646912543, 44.6731653440787, 44.6731609919166
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116469072389, -123.116470535199, 
    -123.116474403788, -123.116472940978, -123.116469072389, 
    44.6731589246396, 44.673158404798, 44.6731614754901, 44.6731627690494, 
    44.6731589246396), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116322549599, -123.116316819252, 
    -123.116320083373, -123.116323951962, -123.116322549599, 
    44.6731661661537, 44.6731618139916, 44.6731603149136, 44.6731639175367, 
    44.6731661661537), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116110986163, -123.116113017172, 
    -123.116115217432, -123.116113742532, -123.116110986163, 
    44.6731484915398, 44.6731482497531, 44.6731515864107, 44.6731522150563, 
    44.6731484915398), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116025091408, -123.116025647518, 
    -123.11602633661, -123.116025466178, -123.116025091408, 44.673099880307, 
    44.6730997594136, 44.6731001583618, 44.6731004364166, 44.673099880307
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.11602799285, -123.116026832273, 
    -123.116028669853, -123.116029274319, -123.11602799285, 44.6730422625165, 
    44.6730393489857, 44.673039252271, 44.673041960283, 44.6730422625165
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116141016081, -123.116142466802, 
    -123.116142974554, -123.116141680995, -123.116141016081, 
    44.6730368948499, 44.6730368344032, 44.6730390346629, 44.6730392885391, 
    44.6730368948499), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116321775881, -123.116319865765, 
    -123.116320433964, -123.116322416616, -123.116321775881, 
    44.6730813836181, 44.6730795218598, 44.6730790020182, 44.6730808395978, 
    44.6730813836181), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116385668038, -123.11638728801, 
    -123.116388472765, -123.116387239652, -123.116385668038, 
    44.6731356405723, 44.6731338150821, 44.6731347580505, 44.6731362450392, 
    44.6731356405723), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116530848913, -123.116528527759, 
    -123.116530075195, -123.116531840238, -123.116530848913, 
    44.6730954797875, 44.6730931707238, 44.6730927838649, 44.6730951291967, 
    44.6730954797875), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116504518332, -123.116505376675, 
    -123.11650766156, -123.116506682324, -123.116504518332, 44.6730272233786, 
    44.673026026534, 44.6730269815918, 44.6730282509724, 44.6730272233786
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.11661304433, -123.1166152325, 
    -123.116616816203, -123.116613926851, -123.11661304433, 44.6730421053551, 
    44.6730359397921, 44.6730362541149, 44.6730423471419, 44.6730421053551
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116775271172, -123.116776903233, 
    -123.116776999948, -123.116775392065, -123.116775271172, 
    44.6730782887472, 44.6730781074072, 44.6730789657502, 44.6730792800731, 
    44.6730782887472), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg")), structure(list(structure(c(-123.116539033395, -123.116539831292, 
    -123.116541729318, -123.11654114903, -123.116539033395, 44.6731478266262, 
    44.6731475243927, 44.6731485519865, 44.6731494465976, 44.6731478266262
    ), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg")), 
    structure(list(structure(c(-123.116419379161, -123.116420001762, 
    -123.116421942101, -123.116421313455, -123.116419379161, 
    44.6731141336379, 44.6731133478308, 44.6731149617576, 44.6731155843586, 
    44.6731141336379), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
    "sfg"))), n_empty = 0L, crs = structure(list(epsg = 4326L, 
    proj4string = "+proj=longlat +datum=WGS84 +no_defs"), class = "crs"), class = c("sfc_POLYGON", 
"sfc"), precision = 0, bbox = structure(c(xmin = -123.116776999948, 
ymin = 44.673026026534, xmax = -123.116012144481, ymax = 44.6731716547137
), class = "bbox"))), row.names = c(NA, -26L), class = c("sf", 
"data.frame"), sf_column = "geometry", agr = structure(c(class = NA_integer_), class = "factor", .Label = c("constant", 
"aggregate", "identity")))
r classification shapefile s4
1个回答
0
投票

使用上面的dput(data),并附加了sf_0.8-1sp_1.4-1,尽管我认为您只需要具有sf,因为它的功能是as_Spatial进行提升:

© www.soinside.com 2019 - 2024. All rights reserved.