使 sf 包中的 st_make_valid 工作 (windows)

Make st_make_valid in sf package work (windows)

我目前正在尝试让 sf::st_make_valid() 函数在 R 3.3.3 (Windows) 下工作。

我的问题是 sf 包没有针对 liblwgeom 库构建。要在 windows 下安装 liblwgeom,我尝试安装根据其安装选项列出 liblwgeom 库的 osgeo4w。尽管如此,通过 osgeo4w 安装程序安装 liblwgeom 后,sf 无法识别 liblwgeom 库。

来自关于有效功能的 sf 文档: 仅当包链接到 liblwgeom 时才可用,目前不适用于 二进制 CRAN 分布;有关如何操作的说明,请参阅包源代码存储库 安装 liblwgeom

有什么建议吗?

install.packages("sf")
library(sf)
Linking to GEOS 3.5.0, GDAL 2.1.1, proj.4 4.9.3

如果sf识别了liblwgeom库,加载sf包时应该注明。

有人知道如何在 sf 包中启用 st_make_valid 功能以及如何在 Windows 上安装 liblwgeom 吗?

我也一直在努力让它工作。不幸的是,开发人员 not currently know 最好的方法是让这个按照要求工作。

一个对我有用的解决方案,主要取决于您尝试使用 st_make_valid 的几何类型,是使用 st_buffer(x, 0.0)。这在 this blog post 中有更详细的描述。据我所知,它用所有点与它的距离为零来替换你的几何体,并试图解决会使多边形无效的事情。我用它来处理多边形中的自相交。

如果您安装了 rtools,您现在应该可以通过从 https://github.com/r-spatial/lwgeom/

安装软件包 lwgeom 来获得它