Mic*_*per 2 gis r geospatial overpass-api
有没有一种简单的方法可以在 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)
Run Code Online (Sandbox Code Playgroud)
但是,数据属于“SpatialLinesDataFrame”类。如果您想要进行任何形式的空间连接或交叉,这确实会把事情搞砸,因为它只承认区域的边缘。
SpatialLines2PolySet我正在探索包内的使用maptools,但在我的探索过程中,我只产生了错误代码,所以我认为在问题中包含这些内容没有任何价值。这里有一些关于这些功能的指导:https ://rdrr.io/rforge/maptools/man/SpatialLines2PolySet.html
我在网上搜索过类似的问题,并努力找到任何直接与此相关的问题。很多似乎参考转换 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8627 次 |
| 最近记录: |