我想使用都柏林机场周围 110 NM(海里)绘制一个圆sf
包裹。
(稍后我将通过st_intersect
带有来自 ADS-B 的飞行位置报告。)
我为 NM 定义了一个新单位,如下所示:
library(units)
library(tidyverse)
library(sf)
NM <- make_unit("NM")
install_conversion_constant("NM", "km", 1.852)
然后定义都柏林机场坐标:
# DUB/EIDW location, see
# https://skyvector.com/airport/EIDW/Dublin-Airport
# Coordinates:
# N53°25.28' / W6°16.20' (Degrees Decimal Minutes (DDM) format)
# (-6.27, 53.421333) (lon/lat Decimal Degrees (DD))
# Elevation: 242.0 feet (MSL)
dub_lon <- -6.27
dub_lat <- 53.421333
dub_elv <- set_units(242.0, ft)
dub <- st_point( x = c(dub_lon, dub_lat, dub_elv), dim = "XYZ")
dub <- dub %>% st_sfc(crs = 4326)
因此定义了机场周围圆的半径(以米为单位):
r110 <- set_units(110, NM) %>% set_units(km)
现在当我尝试时st_buffer
事情不工作:
> r110 <- set_units(110, NM) %>% set_units(km)
Error: cannot convert km into °
In addition: Warning message:
In st_buffer.sfc(dub, dist = r110) :
st_buffer does not correctly buffer longitude/latitude data, dist needs to be in decimal degrees.
如果我尝试传递一个数值(203.72
,这些是公里)作为距离至少我只得到一个警告:
> dub110 <- st_buffer(dub, dist = 203.72)
Warning message:
In st_buffer.sfc(dub, dist = 203.72) :
st_buffer does not correctly buffer longitude/latitude data, dist needs to be in decimal degrees.
但绘制它显示出一个太大的圆圈
library(mapview)
mapview(dub110)
单位是什么dist
我应该进入st_buffer
?
我阅读了文档,但并没有真正找到该怎么做......
任何提示/帮助真的很感激!