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

如何将GeoJSON文件读取转换为R中的sf对象?

解决GeoJSON转sf对象的问题

1. 先正确获取GeoJSON文件内容

你提供的SharePoint链接是共享预览链接,无法被R直接读取。可以通过以下两种方式获取文件内容:

  • 本地下载:打开链接手动下载GeoJSON文件到本地,记录好文件路径。
  • 代码获取:用httr包将共享链接转为直接下载链接并获取内容:
    library(httr)
    url <- "https://vustaff-my.sharepoint.com/:u:/g/personal/e5028514_vu_edu_au/ERKzUBrFobBKrNe7ga-3arMB63ZuyD4eDbAtPQ5fzy2BbQ?e=m87Af9"
    download_url <- sub("\\?e=.*", "&download=1", url)
    response <- GET(download_url)
    geojson_content <- content(response, "text")
    

2. 读取为sf对象

使用sf包的st_read函数,这是最稳定的方式:

  • 如果是本地文件:
    library(sf)
    sf_obj <- st_read("你的本地文件路径/文件名.geojson")
    
  • 如果是通过代码获取的内容:
    sf_obj <- st_read(textConnection(geojson_content))
    

之前st_read报错是因为你没提供有效的文件路径/内容,确保dsn参数不为空即可。

3. 提取sf几何对象

获取sf对象后,直接用st_geometry()提取几何部分:

geom_col <- st_geometry(sf_obj)

额外排查方案

如果geojsonsf报错"Invalid JSON",可以先验证GeoJSON格式是否合法:

library(jsonlite)
# 检查JSON有效性
is_valid <- validate(geojson_content)
if (!is_valid) {
  cat("JSON格式错误位置:", validate(geojson_content, error = TRUE))
}

另外,geojsonR的设计目标就是将GeoJSON解析为列表结构,不适合直接转sf,无需继续使用它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:02:19