如何使用 st_write 将 sf 对象作为 shapefile 写入 ESRI 文件地理数据库?

Posted

技术标签:

【中文标题】如何使用 st_write 将 sf 对象作为 shapefile 写入 ESRI 文件地理数据库?【英文标题】:How to write sf object as shapefile to ESRI file geodatabase with st_write? 【发布时间】:2019-01-08 08:53:48 【问题描述】:

如何使用 st_write 将 sf 对象作为 shapefile 写入文件地理数据库?

我不太了解与文件地理数据库相关的 st_write 的“dsn”、“layer”和“driver”参数。

例如,我已经尝试了这两种方法,但都没有运气

st_write(sf.object, dsn = "filepath/FileGeoDatabase.gbd",layer="name of output layer", driver="OpenFileGDB")

st_write(sf.object, dsn = "filepath/FileGeoDatabase.gbd",layer="name of output layer", driver="ESRI Shapefile")

【问题讨论】:

【参考方案1】:

这里有几件事:首先,您不能将 shapefile 写入 ESRI 地理数据库,因为其中只能存储要素类和要素数据集。其次,您不能通过sf 写入地理数据库;你只能阅读它们。

您有几个选择。您可以使用 sf 将数据保存为地理数据库之外的 shapefile(或任何其他空间数据格式):

library(sf)

## it will guess the driver automatically based on the .shp extension
st_write(sf.object, "data/my_shapefile.shp")

或者,如果您绝对需要在地理数据库中写入,您可以使用arcgisbinding 库,但请注意您需要使用具有有效 ArcGIS 许可的计算机。因此,这在 GNU/Linux 和 Mac 上是不行的。

由于我在 GNU/Linux 上,我无法验证这是否有效,但它应该是这样的:

library(arcgisbinding)

arc.write("data.gdb/fc", sf.object)

有关 R-ArcGIS Bridge(和 arcgisbinding 包)的详细信息,请访问 here。

【讨论】:

以上是关于如何使用 st_write 将 sf 对象作为 shapefile 写入 ESRI 文件地理数据库?的主要内容,如果未能解决你的问题,请参考以下文章

在 sf 对象下绘制静态底图

SF6传感器

如何将 geom_sf 生成的地图放在 ggmap 生成的栅格之上

将 sf 对象列表转换为一个 sf

将 shp 文件(sf 对象)转换为 osm pbf?

多边形 sf 对象的 gganimate 错误