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

如何使用R语言sf包读取并绘制LINESTRING类型的.shp文件

报错原因

这个错误不是LINESTRING类型的shp需要特殊处理,核心原因是你读取的shp文件的几何列存在几何类型混合/无效几何的问题:元数据标注整体是LINESTRING,但部分行的几何实际是无效的POINT对象、空几何,导致geom_sf()做类型统一转换时失败。

解决步骤

  • 第一步:先过滤无效/异常几何
    先筛掉所有无效、空、类型不符合的几何行:
    # 筛选几何有效、且类型为LINESTRING/MULTILINESTRING的行
    ind_global_clean <- ind_global %>%
      filter(st_is_valid(.), 
             st_geometry_type(.) %in% c("LINESTRING", "MULTILINESTRING"))
    
  • 第二步:统一几何类型(可选,避免偶发转换错误)
    把所有LINESTRING统一转成MULTILINESTRING,保证整列几何类型一致:
    ind_global_clean <- ind_global_clean %>%
      st_cast("MULTILINESTRING")
    
  • 第三步:绘图
    直接用清理后的数据绘图即可:
    ggplot(ind_global_clean) +
      geom_sf()
    

补充说明

如果你需要的是带填充的国家面图层,你需要找对应POLYGON/MULTIPOLYGON类型的国界shp文件,当前的LINESTRING类型文件只能绘制国界线轮廓。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:36:02