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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 02:33:25