如何保存具有多个几何图形的简单特征?

How to save a simple feature with several geometries?

我想使用 R 中的 sf 包将我的数据组织为一个简单的特征对象,它有多个几何列,例如多边形、它的质心和它的缓冲区,它们都共享相同的属性.

我很难将这样的对象保存到磁盘。例如,如果我尝试将其保存为具有 st_write():

的 shapefile,这就是我得到的结果
Error in clean_columns(as.data.frame(obj), factorsAsCharacter) : 
  list columns are only allowed with raw vector contents

Warning:
1: In abbreviate_shapefile_names(obj) :
  Field names abbreviated for ESRI Shapefile driver
2: In clean_columns(as.data.frame(obj), factorsAsCharacter) :
  Dropping column(s) nghbrhd,landscp of class(es) sfc_POLYGON;sfc,sfc_POLYGON;sfc

当然我可以将它分成几个对象,每个对象都有一个几何图形和所有属性,但我发现将所有数据放在一个文件中更混乱且容易出错。

我怎样才能(最好地)保存这样的对象?

通过 sf::st_write() 保存对象时,您必须尊重输出对象的上下文;两种流行的文件格式 - ESRI Shapefile / *.shp and OGC GeoPackage / *.gpkg - 特别允许每个保存的 shapefile 只允许一个几何体。

这是输出文件格式的一个特性,而不是错误。

如果您的工作流程需要保存具有多个几何形状的对象,请考虑 R 特定格式 saveRDS(),或者如果需要与其他空间工具进行交换,请使用允许每个对象具有多个几何形状的格式之一 - PostgreSQL / PostGIS在这种情况下我会使用数据库。