PostGISでポリゴンからマルチポリゴンに変換/タイプキャストする方法は?


30

ポリゴンをマルチポリゴンタイプに型キャストする方法はありますか?

たとえば、ポイントでST_Buffer()を使用して円を作成しました。その関数の戻り値の型は、Polygon型です。問題は、ジオメトリ列にマルチポリゴンタイプに制限する制限があることです。そのため、単純なポリゴンを挿入できません。

ST_MPolyFromText()関数を使用しましたが、通常どおりそのためにnullを返し、ST_Dump()は適切な出力を提供しません。

制約は次のとおりです。

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

マルチポリゴン制約を追加する理由はありますか?制約を多角形に変更するのはどうですか?
暗闇

これはgis.stackexchange.com/questions/14198/…の子供の質問ではあり ませんか?
ユニコレッティ

それはそうですが、独立した質問であると言い換えることもできます。
暗闇

はい、これは子供の質問ですが、問題は、ポリゴンレイヤーを含むpostgisにシェープファイルをインポートすると、自動的にマルチポリゴンのジオメトリを作成することです。データタイプをマルチポリゴンからポリゴンに変換するのは少し面倒です。これはクライアントによって行われるためです。したがって、出力をpostgisによって作成されたそのタイプの列に保存する必要があります。-
ヴィッキー

PS:マルチからポリへの逆を行うには、を使用しますst_geometryn(geom, 1)
ピータークラウス

回答:


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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.