You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用osrmTable的distance与source参数?R中坐标报错求助

解决osrmTable报错:"src" should contain coordinates

问题原因

osrm::osrmTable对输入数据的坐标列有严格要求:默认识别列名为lon/lat或x/y的数值型坐标列,若你的randompoints_df列名不符合、坐标列类型不对,或者数据存在缺失,就会触发该错误。

解决方案

1. 检查并修正坐标列名

先查看randompoints_df的列结构,确认坐标列名称:

str(randompoints_df)

如果经度/纬度列名不是lon/lat,重命名为标准列名:

randompoints_df <- randompoints_df %>%
  dplyr::rename(lon = 你的经度列名, lat = 你的纬度列名) # 替换为实际列名

2. 确保坐标列是数值型

若坐标列为字符型,转换为数值类型:

randompoints_df$lon <- as.numeric(randompoints_df$lon)
randompoints_df$lat <- as.numeric(randompoints_df$lat)

3. 推荐:转换为sf空间对象(更稳定)

使用sf包将数据框转为空间对象,明确指定坐标列,避免列名识别问题:

library(sf)
# 转换源数据为sf对象(替换括号内的列名为实际经度/纬度列名)
randompoints_sf <- st_as_sf(randompoints_df, coords = c("你的经度列名", "你的纬度列名"), crs = 4326)
# 转换目标数据为sf对象
bus_stops_sf <- st_as_sf(bus_stops_df, coords = c("stop_lon", "stop_lat"), crs = 4326)

# 重新运行osrmTable
distancetable <- osrm::osrmTable(src = randompoints_sf, dst = bus_stops_sf)

4. 排查缺失值

确保坐标数据没有缺失:

randompoints_df <- na.omit(randompoints_df)

内容的提问来源于stack exchange,提问作者Jjnjoroge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:45:30