gpt4 book ai didi

r - 将空间线转换为空间多边形

转载 作者:行者123 更新时间:2023-12-02 20:36:02 25 4
gpt4 key购买 nike

有没有一种简单的方法可以在 R 中将空间线转换为空间多边形对象?

可重现的示例

我在这里整理了一个可重用的数据集,该数据集是通过 overpass 包从 OpenStreetMaps 下载的。这提取了英格兰南部的几个机场的位置:

devtools::install_github("hrbrmstr/overpass")
library(overpass)
library(raster)
library(sp)

# Write Query
query_airport <- '
(node["aeroway"="aerodrome"](50.8, -1.6,51.1, -1.1);
way["aeroway"="aerodrome"](50.8, -1.6,51.1, -1.1);
relation["aeroway"="aerodrome"](50.8, -1.6,51.1, -1.1);
);
out body;
>;
out skel qt;
'
# Run query
shp_airports <- overpass::overpass_query(query_airport, quiet = TRUE)
crs(shp_airports) <- CRS("+init=epsg:4326") # Add coordinates
shp_airports <- shp_airports[,1]


# Plot Results
plot(shp_airports, axes = T)

enter image description here

但是,数据属于“SpatialLinesDataFrame”类。如果您想要进行任何形式的空间连接或交叉,这确实会把事情搞砸,因为它只承认区域的边缘。

潜在客户

我正在探索在 maptools 包中使用 SpatialLines2PolySet ,但在我的探索过程中,我只产生了错误代码,所以我认为不会有任何值得在问题中包含这些的内容。这里有一些关于这些功能的指导:https://rdrr.io/rforge/maptools/man/SpatialLines2PolySet.html

注释

我在网络上进行了搜索,以找到类似的问题,并且很难找到任何直接与此相关的问题。很多似乎引用转换 SpatialPoints -> SpatialLineDataFrames ,但没有引用 SpatialLineDataFrames -> SpatialPolygonDataFrames 。这个问题类似,但缺乏任何答案(或可重现的数据集):Close a spatial line into a polygon using a shapefile

此外,这似乎很困难,因为在 ArcGIS 中使用“Feature to Polygon”工具可以轻松完成此操作,这似乎很奇怪。该函数不需要指定额外的参数,并且可以完美运行。

最佳答案

解决该问题的一种方法是使用库sf。查询后

library(sp)
library(raster)
library(sf)
sf_airports <- st_as_sf(shp_airports)
sf_airports_polygons <- st_polygonize(sf_airports)
shp_airports <- as(sf_airports_polygons, "Spatial") # If you want sp
class(shp_airports)

关于r - 将空间线转换为空间多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47147242/

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