如何在PostGIS中将多边形从多边形转换/类型转换为多边形?


30

有什么方法可以将多边形转换为多面体类型?

例如,我在点上使用ST_Buffer()创建了一个圆。该函数的返回类型为Polygon类型。问题是,在几何列上有一个限制将其限制为Multipolygon类型。因此,我无法插入简单的多边形。

我已经使用过ST_MPolyFromText()函数,但是像往常一样,它为此返回null,而ST_Dump()没有给出正确的输出。

约束是:

CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'MULTIPOLYGON'::text OR geom IS NULL),

是否有理由添加多面约束?如何将约束更改为多边形?
昏暗


是的,但是也可以改写成一个独立的问题。
昏暗

是的,这是一个儿童问题,但是问题是,当您将shapefile导入到包含多边形图层的postgis中时,它会自动创建multipolygon的几何形状。然后将数据类型从多多边形转换为多边形有点麻烦,因为这将由客户端完成。因此,只需将输出保存到由postgis创建的那种类型的列中即可。。–
Vicky

PS:做逆,从多到多,使用st_geometryn(geom, 1)
彼得·克劳斯

Answers:


55

ST_Multi-将几何返回为MULTI *几何。如果几何已经是MULTI *,则将其保持不变。

例:

SELECT ST_AsText(ST_Multi(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
        743265 2967450,743265.625 2967416,743238 2967416))')));
        st_astext
        --------------------------------------------------------------------------------------------------
        MULTIPOLYGON(((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,
        743238 2967416)))
        (1 row)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.