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

如何在R语言中读取flatgeobuf(.fgb)文件?

在R中读取FlatGeobuf(.fgb)文件并获取底层数据

leafem::addFgb仅负责将FGB文件加载到leaflet地图中可视化,无法直接提取底层空间数据。要获取并操作FGB文件的原始数据,可参考以下两种实用方法:

方法1:使用sf + flatgeobuf包

这是最主流的方案,sf包支持通过FlatGeobuf驱动直接读取文件并转为可操作的空间对象:

# 首次使用先安装依赖包
install.packages(c("sf", "flatgeobuf"))

# 加载包
library(sf)
library(flatgeobuf)

# 下载FGB文件到临时路径
temp <- tempfile(fileext = ".fgb")
download.file("https://esa-worldcover.s3.eu-central-1.amazonaws.com/esa_worldcover_grid_composites.fgb", temp)

# 读取FGB文件为sf对象(可直接查看、修改底层数据)
fgb_data <- st_read(temp, driver = "FlatGeobuf")

# 查看数据结构
str(fgb_data)
# 查看前5行属性数据
head(fgb_data, 5)

方法2:使用geobuffer包

若遇到版本兼容性问题,可尝试geobuffer包的专用读取函数:

# 安装包
install.packages("geobuffer")

library(geobuffer)

# 读取FGB文件
fgb_data <- read_flatgeobuf(temp)

# 转为sf对象(方便后续空间分析操作)
fgb_sf <- st_as_sf(fgb_data)

优化建议

针对大型FGB文件,建议通过空间过滤减少加载数据量,提升效率:

# 定义目标边界(WGS84坐标系)
bbox <- st_bbox(c(xmin = -10, ymin = 30, xmax = 10, ymax = 50), crs = st_crs(4326))
# 仅读取边界内的数据
fgb_filtered <- st_read(temp, driver = "FlatGeobuf", wkt_filter = st_as_text(st_as_sfc(bbox)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:08:10