2017-07-26 19 views
1

ポリゴンからマルチポリゴンを作成するには、テキスト連結よりも良い方法はありますか?ポリゴンからマルチポリゴンを構築する

データベース内に複数のポリゴンがあります(データベースの1行につき1つ)、マルチポリゴンを作成する必要があるポリゴンがあります。ジオメトリから

  1. 削除「POLYGON」テキストが
  2. はテキストとして表示されている他の多角形
  3. 追加「MULTIPOLYGON」テキスト
  4. 前でそれを連結テキストとして表示:私が見ることができる唯一の解決策は、する関数を作成しています
  5. 2つのポリゴン

    polygon1: 'POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))' 
    polygon2: 'POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))' 
    
    から私が欲しい種類

をジオメトリに変換

1つのマルチポリゴンを作成します。

result: 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)), ((1 1, 3 1, 3 3, 1 3, 1 1)))' 

私はこれを行うには良い方法があるかどうかを知りたいので、それは完璧な解決策のような音はありません。

答えて

2

あなたはSTUnionを使用することができます。

CREATE TABLE t(ID INT IDENTITY(1,1), c GEOMETRY); 

INSERT INTO t(c) 
VALUES ('POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))') 
     ,('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))'); 

DECLARE @g geometry = geometry::STGeomFromText('GEOMETRYCOLLECTION EMPTY', 0); 
SELECT @g = @g.STUnion(c) FROM t 

SELECT @g; 

Rextester Demo

+1

これは完璧です!どうもありがとうございました。 – blaballong

+0

私は実際のデータで作業を始めました。このソリューションは私が期待したものではないようです。 2つ(またはそれ以上)のポリゴンが境界を共有する場合に1つの大きなポリゴンを作成します。大きな領域を1つ作成する必要はありません。ポリゴンのコレクションとして保持する必要があります。私はそれについて何もできないと思いますか? – blaballong

関連する問題