gpt4 book ai didi

r - 如何从多面转换为空间多边形数据框

转载 作者:行者123 更新时间:2023-12-02 15:02:46 24 4
gpt4 key购买 nike

如何在 R 中将 MULTIPOLYGON 转换为 SpatialPolygonsDataFrame

我在网上找不到任何其他资源,我试图离散化属于 GEOMETRYCOLLECTIONXYsfg 类的同一个文件,但是,这导致了在不访问各个点的情况下引用同一多边形的连续循环。我很乐意提供任何额外的说明,并将感谢任何见解。

用于显示格式的多面体 Ref_circles 的输出示例之一如下:

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

可能有一些方法可以在 sf 库中实现您的最终目标,而无需进行此转换。

如果你还想这样做,那就是

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

关于r - 如何从多面转换为空间多边形数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48511524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com