我有一个带有多边形的 PostGIS 表,我需要在 QGIS 中对其进行一些清理编辑。然而,即使像删除顶点这样的简单编辑也会将结果保存为多曲面。
我使用的是QGIS 3.16。
如何指示 QGIS 使用最简单的几何类型来表示编辑后的多边形?
我认为正在发生的事情是通用“几何”类型的几何列迫使 QGIS 猜测和/或将这些列中编辑的几何图形转换为多表面 - 我不知道为什么。
为了解决这个问题,我创建了一个新列并将类型显式设置为多边形类型:
alter table schema.table_name
add geom_mult geometry (Multipolygon, 4326);
然后使用 ST_Multi(geom) 将我的“混合”几何图形的旧 geom 列转移到这个新列中进行转换:
update
schema.table_name
set geom_mult = ST_Multi(geom);
从那里,我回到 QGIS 并将新的 table_name.geom_mult 添加到我的项目中。我经历了导致转换为多曲面的完全相同的编辑场景,并且不再转换它们 - 多边形都保持多多边形 - 这包括使用“重塑曲面”任务的拓扑编辑和创建新的单部分多边形(qgis/postgis)自动将它们存储为多部分)。
所以现在我要删除旧的几何列,创建一个新的多多边形类型,然后使用更新将转换后的多多边形重新添加到这个新列。
我所有需要名为 geom 的列的应用程序都可以正常工作。我可以更改 QGIS 图层定义以使用 MultiPolygon 而不是 Polygon。
此外,我使用多重多边形而不是仅使用多边形来完成所有这些操作,因为除了单部分多边形之外,我的表中确实有多重多边形数据。似乎没有人(QGIS、PostGIS)关心单部分多边形是否存储为我可以告诉的多部分特征。