簡體   English   中英

將空間線轉換為空間多邊形

[英]Convert Spatial Lines to Spatial Polygons

是否有一種簡單的方法可以在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)

在此處輸入圖片說明

但是,數據屬於“ SpatialLinesDataFrame”類。 如果您想進行任何形式的空間連接或相交,這確實使事情搞砸了,因為它只承認該區域的邊緣。

潛在的潛在客戶

我正在探索在maptools包中使用SpatialLines2PolySet ,但是在我探索的時候,我只產生了錯誤代碼,所以我認為在問題中包括這些沒有什么價值。 這里有關於這些功能的一些指導: https : //rdrr.io/rforge/maptools/man/SpatialLines2PolySet.html

筆記

我已經在網上和SO上進行搜索,以查找類似的問題,並且一直在尋找直接與此相關的任何問題。 似乎有很多參考提到轉換SpatialPoints-> SpatialLineDataFrames,而不是轉換SpatialLineDataFrames-> SpatialPolygonDataFrames。 這個問題類似,但是沒有任何答案(或可重復的數據集): 使用shapefile將空間線封閉到多邊形中

另外,這很難做到,這很奇怪,因為在ArcGIS中使用“ 要素轉多邊形 ”工具可以很容易地做到這一點。 此函數不需要指定其他參數,並且可以完美運行。

解決該問題的一種方法是使用庫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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM