【发布时间】:2021-03-31 20:08:29
【问题描述】:
我有两组坐标数据(纬度和经度)。第一组表示城市内餐厅的位置。第二组坐标代表城市中的公园。对于每家餐厅,我想计算 160 米内的公园数量。
根据另一篇文章,我尝试使用简单功能 (sf) 包执行此操作,但没有得到我想要的输出。
样本数据:
餐厅:
45.59841 -122.3275
45.59932 -122.3343
45.59932 -122.3343
45.59820 -122.3343
45.59820 -122.3343
45.59814 -122.3340
45.59814 -122.3340
45.60016 -122.3341
45.60016 -122.3341
45.60020 -122.3343
公园:
45.61221 -122.3426
45.61065 -122.3402
45.60868 -122.3384
45.60624 -122.3361
45.61082 -122.3388
45.60983 -122.3379
45.60910 -122.3372
45.60829 -122.3365
45.60653 -122.3349
45.60503 -122.3335
使用 sf,我尝试执行以下操作:
将坐标转换为地理空间数据
library(tidyverse)
library(sf)
park_points <- st_as_sf(ride_coords, coords = c(x = "Latitude", y = "Longitude"), crs = 4326)
rest_points <- st_as_sf(can_coords, coords = c(x = "lat", "lon"), crs = 4326)
然后我尝试在每个餐厅周围创建一个 160m 的缓冲区,之后我希望尝试计算每个餐厅缓冲区中的公园数量。
buffer_160 <- park_points %>% st_transform(26910) %>% st_buffer(dist = 160) %>% st_transform(2926)
然后我收到以下错误:
"UseMethod("st_transform") 中的错误:没有适用于 'st_transform' 的方法应用于“data.frame”类的对象
无论如何,目标是在每个餐厅周围创建缓冲区,然后计算每个缓冲区内的公园数量(我知道会有重叠,所以我也必须弄清楚如何处理)
我对 R 空间工具非常陌生。感谢您的帮助!
【问题讨论】:
-
请检查您是否打算写 park_points 而不是 park_coords
-
@HubertL 没错。感谢您指出错误。已编辑。
标签: r buffer coordinates geospatial sf