r - 数据框中每个参与者之间的地理空间距离矩阵?
问题描述
晚上好,我正在尝试计算数据框中每一行到其他行的距离。我的数据如下所示:
gps <- data.frame(company = c("Jonas","Felix","Maria","Anna"),
longitude = c(42.33606636507468, 37.66663067079797,
35.68203407502485, 49.424044748467686),
latitude = c(-87.83678044061604, -122.39787657270155,
139.6860258167475, 8.674680432095006))
输出应该类似于一个 4*4 矩阵,列出每个人之间的距离,如下所示(当然,这些数字是组成的):
result <- matrix(1:12, nrow = 4, ncol = 4)
result <- cbind(c(0,1,5,6),c(1,0,3,7),c(5,3,0,7),c(6,7,7,0))
到目前为止,我已经尝试使用 geosphere 包:
gps_mat <- distm(gps[,c('longitude','latitude')], gps[,c('longitude','latitude')], fun=distVincentyEllipsoid)
但是,我收到错误“.pointsToMatrix(x) 中的错误:纬度 < -90”,并且不确定如何继续。我已经尝试按照其他一些问题中的建议减少我的 gps 坐标的数字,但仍然得到相同的错误。
任何帮助将不胜感激。
解决方案
我找到了 sf-package 并认为这有效:
library(sf)
gps_sf <- st_as_sf(gps,
agr = NA_agr_,
coords = c("longitude", "latitude"),
remove = TRUE,
na.fail = TRUE,
sf_column_name = NULL
)
gps_matrix <- st_distance(gps_sf)
如果对我的 geosphere-approach 产生的错误有更优雅的方式或解释,我很想听听。
推荐阅读
- wso2 - 使用发送调解器调用端点后,我收到以下错误响应
- html - 如何使用 tinymce 发布自定义 html 标签
- reactjs - 将 React 函数组件转换为 React 类组件
- java - 创建了新实例,但找不到符号错误仍然存在
- asciidoctor - highlight.js 不会突出显示来自 JavaScript 事件的标记加载
- swift - 单击快速导航栏中的后退按钮时如何打开确认窗口以向前移动?
- html - 两列布局中图像旁边的文本
- python - Python OpenCV cv2.threshold 在图像(jpg)中找不到水平直线/行
- apache-spark - 如何在 HDP (Hothonworks) 上运行 Spark 3.0.0?
- amazon-product-api - 如何将亚马逊会员链接归因于亚马逊产品 API?