首页 > 解决方案 > 如何保存具有多个几何形状的简单特征?

问题描述

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

我很难将这样的对象保存到磁盘。例如,如果我尝试将其另存为 shapefile,这就是我得到的st_write()

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

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

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

标签: rgeometrygissf

解决方案


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

这是输出文件格式的一项功能,而不是错误。

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


推荐阅读