例如,我在点上使用ST_Buffer()创建了一个圆。该函数的返回类型为Polygon类型。问题是,在几何列上有一个限制将其限制为Multipolygon类型。因此,我无法插入简单的多边形。
我使用了ST_MPolyFromText()函数,但像往常一样,它为此返回了null,而ST_Dump()没有给出正确的输出。
< br约束是:
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'MULTIPOLYGON'::text OR geom IS NULL),
#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)
评论
是否有理由添加多面约束?如何将约束更改为多边形?这不是gis.stackexchange.com/questions/14198/…的孩子问题吗?
是的,但是也可以改写成一个独立的问题。
是的,这是一个儿童问题,但是问题是,当您将shapefile导入到包含多边形图层的postgis中时,它会自动创建multipolygon的几何形状。那么将数据类型从multipolygon转换为polygon ..有点繁琐,因为这将由客户端完成。因此,只需将输出保存到Postgis创建的那种类型的列中即可。
PS:反演,从多到多,使用st_geometryn(geom,1)。