R语言旋转多伦多地图报错:无st_geometry适用方法,求解决
解决R中旋转多伦多地图的报错问题
报错原因
st_ellide_rotate是sf包的函数,只支持sf格式的空间对象,但你用geojsonio+sp读取得到的是SpatialPolygonsDataFrame(属于sp包的旧格式),sf包的st_geometry函数无法识别这种类型,因此触发报错。
具体解决步骤
1. 安装并加载必要的包
如果还没安装sf包,先执行安装命令:
install.packages("sf") library(sf) library(geojsonio) # 若需保留原读取工具可加载
2. 将sp格式转换为sf格式
有两种方式可选:
- 方式一:转换已读取的
SpatialPolygonsDataFrame对象
假设你已读取的对象名为toronto_neighbourhoods,直接转换:toronto_sf <- st_as_sf(toronto_neighbourhoods) - 方式二:直接用sf包读取geojson,跳过sp格式
省去转换步骤,直接读取为sf对象:toronto_sf <- st_read("你的多伦多街区geojson文件路径")
3. 执行地图旋转操作
转换为sf对象后,即可正常调用st_ellide_rotate函数,示例代码:
# 旋转45度,角度可自定义,正数为顺时针、负数为逆时针 toronto_rotated <- st_ellide_rotate(toronto_sf, angle = 45) # 绘制旋转后的地图 plot(st_geometry(toronto_rotated))
额外提示
如果你的st_ellide_rotate是自定义函数,建议在函数开头加入格式转换逻辑,确保兼容sp对象:
st_ellide_rotate <- function(obj, angle) { # 先将输入对象转为sf格式 obj_sf <- st_as_sf(obj) # 后续旋转逻辑... }
内容的提问来源于stack exchange,提问作者user101089
相关产品推荐
相关产品推荐

