【问题标题】:Error "OGR: Unsupported geometry type" when using st_as_sfc from sf package in R在 R 中使用 sf 包中的 st_as_sfc 时出现错误“OGR:不支持的几何类型”
【发布时间】:2021-07-16 15:18:24
【问题描述】:

在 R 中使用 sf::st_as_sfc 时,任何人都可以解释/解决此“OGR:不支持的几何类型”错误吗?

我们有一个文本字符串版本,它是 sf 中的几何列。它已被导出并重新导入。重新导入 st_as_sfc 并将其应用到以前可以正常工作的几何列(几个月前) - 现在不行了。短表示:

geos <- c("c(-3.287652, -3.28373, -3.280022, -3.279113, 55.87266, 55.87104, 55.86949, 55.86849)", "c(-3.239873, -3.239752, 55.87809, 55.87804)")
st_as_sfc(geos)

#> OGR: Unsupported geometry type
#> Error in CPL_sfc_from_wkt(x) : OGR errorenter code here

*在此先感谢您提供的任何帮助以及对我作为第一次 stackexchange 海报的温柔!

【问题讨论】:

    标签: r coordinates geo sf


    【解决方案1】:

    您的输入数据的问题在于它们没有使用标准且明确的格式表示。我想提出以下解决方案。一、加载包

    library(sf)
    #> Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
    

    然后创建输入数据

    geos <- c(
      "c(-3.287652, -3.28373, -3.280022, -3.279113, 55.87266, 55.87104, 55.86949, 55.86849)", 
      "c(-3.239873, -3.239752, 55.87809, 55.87804)"
    )
    

    提取和格式化点

    geos_points <- sapply(geos, function(x) st_multipoint(matrix(eval(str2lang(x)), ncol = 2)), USE.NAMES = FALSE)
    

    打印

    geos_points
    #> [[1]]
    #> MULTIPOINT ((-3.287652 55.87266), (-3.28373 55.87104), (-3.280022 55.86949), (-3.279113 55.86849))
    #> 
    #> [[2]]
    #> MULTIPOINT ((-3.239873 55.87809), (-3.239752 55.87804))
    

    合并为 sfc 对象(您可能需要添加 CRS)

    st_as_sfc(geos_points)
    #> Geometry set for 2 features 
    #> Geometry type: MULTIPOINT
    #> Dimension:     XY
    #> Bounding box:  xmin: -3.287652 ymin: 55.86849 xmax: -3.239752 ymax: 55.87809
    #> CRS:           NA
    #> MULTIPOINT ((-3.287652 55.87266), (-3.28373 55....
    #> MULTIPOINT ((-3.239873 55.87809), (-3.239752 55...
    

    reprex package (v2.0.0) 于 2021-04-22 创建

    我认为解决方案有点不正统(您可能想等待其他答案),但它似乎有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-26
      • 2023-03-13
      • 2021-11-07
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      相关资源
      最近更新 更多