如何使用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
相关产品推荐
相关产品推荐

