有什么方法可以将面类型转换为面类型?

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

我使用了ST_MPolyFromText()函数,但像往常一样,它为此返回了null,而ST_Dump()没有给出正确的输出。
< br约束是:

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


评论

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

这不是gis.stackexchange.com/questions/14198/…的孩子问题吗?

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

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

PS:反演,从多到多,使用st_geometryn(geom,1)。

#1 楼

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)