【问题标题】:How to save a simple feature with several geometries?如何保存具有多个几何形状的简单特征?
【发布时间】:2025-12-09 10:25:02
【问题描述】:

我想使用 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

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

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

【问题讨论】:

  • 你只需要从 R 读取/写入数据吗?
  • 是的,我只在 R 中工作
  • 如果你只在R中工作,你试过saveRDS()吗?

标签: r geometry gis sf


【解决方案1】:

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

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

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

【讨论】:

  • 是的,我有点意识到 shapefile 无法理解多个几何图形。 saveRDS() 工作得很好,谢谢!
最近更新 更多