R 如何将多多边形转换为空间多边形数据帧

R 如何将多多边形转换为空间多边形数据帧,r,spatial,R,Spatial,如何在R中从多边形转换为空间多边形 我在网上找不到任何其他资源,我试图对GEOMETRYCOLLECTION、XY和sfg类的同一个文件进行离散化,但是,这导致了在不访问单个点的情况下引用同一个多边形的连续循环。我很高兴提供任何额外的澄清,并将感谢任何见解 显示格式的multipolygon Ref_圆的一个输出示例如下所示: Ref_circles[1] [[1]] [[1]][[1]] [,1] [,2] [1,] 51.62730 4.340600 [2,] 51.6

如何在R中从多边形转换为空间多边形

我在网上找不到任何其他资源,我试图对GEOMETRYCOLLECTION、XY和sfg类的同一个文件进行离散化,但是,这导致了在不访问单个点的情况下引用同一个多边形的连续循环。我很高兴提供任何额外的澄清,并将感谢任何见解

显示格式的multipolygon Ref_圆的一个输出示例如下所示:

Ref_circles[1]
[[1]]
[[1]][[1]]
       [,1]     [,2]
[1,] 51.62730 4.340600
[2,] 51.62549 4.343550
[3,] 51.61800 4.357353
[4,] 51.61124 4.371529
[5,] 51.60523 4.386039
[6,] 51.59998 4.400845
...
[311,] 51.63570 4.322473
[312,] 51.62894 4.336649
[313,] 51.62730 4.340600

我向您提出的第一个问题是:为什么要将sf对象MULTIPOLYGON转换为sp对象SpatialPolygonDataFrame,因为sf取代了sp

可能有一些方法可以实现您的最终目标,而不必进行这种转换

如果你仍然想这样做,它将沿着

library(sf)
library(sp)

## using a MULTIPOLYGON data set supplied with library(sf)
nc <- sf::st_read(system.file("shape/nc.shp", package="sf"))

## convert the geometry of the `sf` object to SpatialPolygons
spd <- sf::as_Spatial(st_geometry(nc), IDs = as.character(1:nrow(nc)))

class(spd)
# [1] "SpatialPolygons"
# attr(,"package")
# [1] "sp"

## grab the data from the sf object
df <- nc
df$geometry <- NULL
df <- as.data.frame(df)

## create the SpatialPolygonsDataFrame
spd <- sp::SpatialPolygonsDataFrame(spd, data = df)

class(spd)
# [1] "SpatialPolygonsDataFrame"
# attr(,"package")
# [1] "sp"

head(spd@data)
# AREA PERIMETER CNTY_ CNTY_ID        NAME  FIPS FIPSNO CRESS_ID BIR74 SID74 NWBIR74 BIR79 SID79 NWBIR79
# 1 0.114     1.442  1825    1825        Ashe 37009  37009        5  1091     1      10  1364     0      19
# 2 0.061     1.231  1827    1827   Alleghany 37005  37005        3   487     0      10   542     3      12
# 3 0.143     1.630  1828    1828       Surry 37171  37171       86  3188     5     208  3616     6     260
# 4 0.070     2.968  1831    1831   Currituck 37053  37053       27   508     1     123   830     2     145
# 5 0.153     2.206  1832    1832 Northampton 37131  37131       66  1421     9    1066  1606     3    1197
# 6 0.097     1.670  1833    1833    Hertford 37091  37091       46  1452     7     954  1838     5    1237

我向您提出的第一个问题是:为什么要将sf对象MULTIPOLYGON转换为sp对象SpatialPolygonDataFrame,因为sf取代了sp

可能有一些方法可以实现您的最终目标,而不必进行这种转换

如果你仍然想这样做,它将沿着

library(sf)
library(sp)

## using a MULTIPOLYGON data set supplied with library(sf)
nc <- sf::st_read(system.file("shape/nc.shp", package="sf"))

## convert the geometry of the `sf` object to SpatialPolygons
spd <- sf::as_Spatial(st_geometry(nc), IDs = as.character(1:nrow(nc)))

class(spd)
# [1] "SpatialPolygons"
# attr(,"package")
# [1] "sp"

## grab the data from the sf object
df <- nc
df$geometry <- NULL
df <- as.data.frame(df)

## create the SpatialPolygonsDataFrame
spd <- sp::SpatialPolygonsDataFrame(spd, data = df)

class(spd)
# [1] "SpatialPolygonsDataFrame"
# attr(,"package")
# [1] "sp"

head(spd@data)
# AREA PERIMETER CNTY_ CNTY_ID        NAME  FIPS FIPSNO CRESS_ID BIR74 SID74 NWBIR74 BIR79 SID79 NWBIR79
# 1 0.114     1.442  1825    1825        Ashe 37009  37009        5  1091     1      10  1364     0      19
# 2 0.061     1.231  1827    1827   Alleghany 37005  37005        3   487     0      10   542     3      12
# 3 0.143     1.630  1828    1828       Surry 37171  37171       86  3188     5     208  3616     6     260
# 4 0.070     2.968  1831    1831   Currituck 37053  37053       27   508     1     123   830     2     145
# 5 0.153     2.206  1832    1832 Northampton 37131  37131       66  1421     9    1066  1606     3    1197
# 6 0.097     1.670  1833    1833    Hertford 37091  37091       46  1452     7     954  1838     5    1237

我目前正试图找到我使用st_bufferReferences_coord(dist=0.3)设置的一系列圆与使用st_voronoiHubs_coord生成的Voronoi图之间的重叠区域。由于某些原因,在使用st_intersection时没有输出区域,因此我尝试使用intersect函数,它需要sp格式。我知道这似乎是人为的,但这是一个我一直在努力解决的问题。我目前正试图找到我使用st_bufferReferences_coord,dist=0.3设置的一系列圆与使用st_voronoiHubs_coord生成的Voronoi图之间的重叠区域。由于某些原因,在使用st_intersection时没有输出区域,因此我尝试使用intersect函数,它需要sp格式。我知道这似乎是人为的,但这是我一直在努力解决的问题