Leaflet报错:无法从XY,GEOMETRYCOLLECTION,sfg类对象获取多边形数据
解决R语言leaflet加载Shapefile时的空几何报错问题
在使用R的leaflet包加载第三方提供的Shapefile时,若遇到加载失败但无明确指向的报错,大概率是Shapefile中存在**空几何(GEOMETRYCOLLECTION EMPTY)**导致的——这类问题通常不容易直接排查到。
报错复现
以下代码可模拟该问题场景:
library(leaflet) library(sf) # 创建包含空几何的sf对象 empty_geom <- st_sfc(st_geometrycollection()) problem_sf <- st_sf(data.frame(id = 1), geometry = empty_geom) # 执行后会触发加载报错 leaflet(problem_sf) %>% addPolygons()
解决方法:移除空几何
使用sf包的st_is_empty()函数识别空几何记录,过滤后即可正常加载:
# 过滤掉含空几何的行 clean_sf <- problem_sf[!st_is_empty(problem_sf$geometry), ] # 重新调用leaflet即可正常渲染 leaflet(clean_sf) %>% addPolygons()
也可以用管道写法简化操作:
clean_sf <- problem_sf %>% dplyr::filter(!st_is_empty(geometry))
额外提示
如果是第三方提供的Shapefile,除了临时过滤修复,建议向上游数据提供者反馈该问题,从源头避免空几何的产生,减少后续重复排查的成本。
内容的提问来源于stack exchange,提问作者Marty May
相关产品推荐
相关产品推荐

