PostGIS'de polyecast'ten Multipolygon'a nasıl bir yazı yazılır?


30

Poligonları Multipolygon tipine yazmanın bir yolu var mı?

Örneğin, bir noktada ST_Buffer () kullanarak bir daire oluşturdum. Bu işlevin dönüş tipi Çokgen tipindedir. Sorun şu ki, geometri sütununda Multipolygon tipine sınırlayan bir kısıtlama var. Bu yüzden basit bir çokgen ekleyemiyorum.

ST_MPolyFromText () işlevini kullandım, ancak her zamanki gibi bunun için boş değer veriyor ve ST_Dump () uygun çıktılar vermiyor.

Kısıtlama:

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

Çokgen bir sınırlama eklemek için bir neden var mı? Kısıtlamayı çokgene değiştirmeye ne dersiniz?
underdark


Öyle, ancak tek başına bir soru olarak da yeniden ifade edilebilir.
underdark

evet bu bir çocuk sorusudur, ancak sorun, şekil dosyasını çokgen katmanını içeren postgise içe aktardığınızda otomatik olarak çok katlı geometrini yaratıyor. o zaman veri tipini çoklu poligondan poligona dönüştürmek biraz sıkıcıdır çünkü müşteri tarafından yapılacaktır. Öyleyse çıktıları, postgiler tarafından yaratılan bu türden sütunlara kaydetmeniz gerekiyor ..
Vicky

PS: tersini yapmak, çoklu-poli-poli, kullanım st_geometryn(geom, 1).
Peter Krauss

Yanıtlar:


55

ST_Multi - Geometriyi bir MULTI * geometrisi olarak döndürür. Geometri zaten ÇOK * ise, değişmeden döndürülür.

Örnek:

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.