1

ポイントのテーブルがあり、それぞれに名前、緯度、経度、市外局番が含まれています。私がやりたいことは、集計 (つまり、"group by" 句) を実行し、特定の市外局番のすべてのポイントを含むポリゴンを返すことです。

地理データ型の組み込み集計があるかどうかを見つけるのに少し苦労していますが、境界ポリゴンを提供することは言うまでもありません

議論のために、次のようなテーブルがあると仮定します。

+---------+------+---------+---------+
| | 名前 | エリア | 緯度 | 長い |
+---------+------+---------+---------+
| | イプスウィッチ | イプスウィッチ あ | 52.053 | 1.156 |
| | ルートン | ルートン | あ | 51.8717 | -0.4246 |
| | メルトン | あ | 52.1064 | 1.3322 |
| | ディドコット | ビ | 51.6024 | -1.2321 |
| | オックスフォード | オックスフォード | ビ | 51.7486 | -1.265 |
+---------+------+---------+---------+

(実際には、最小のエリアは 57 ポイント、最大のエリアは 626 ポイントです)

4

2 に答える 2

2

これを行う組み込みの方法はありませんが、Sql Spatial Tools CodePlex パッケージの一部として利用可能な Aggregate があります。まさにあなたが望むものに応じて、Bounding Box Aggregate または Union Aggregate のいずれかを使用し、その後に ConvexHull を呼び出して、ボックスの代わりに最小ポリゴンを取得することに関心があるかもしれません。

于 2009-08-03T16:46:45.440 に答える
2

ここに来て、(素晴らしい) Sql Spatial Toolsで取得したコードを見たい人のために:

DECLARE @points TABLE
(
 Name VARCHAR(50),
 Area CHAR(1),
 Point GEOGRAPHY
)

INSERT INTO @points VALUES ('Ipswich', 'A', geography::STGeomFromText('POINT( 1.156  52.053  )', 4326))
INSERT INTO @points VALUES ('Luton', 'A', geography::STGeomFromText('POINT(  -0.4246 51.8717 )', 4326))
INSERT INTO @points VALUES ('Melton', 'A', geography::STGeomFromText('POINT( 1.3322  52.1064 )', 4326))

INSERT INTO @points VALUES ('Didcot', 'B', geography::STGeomFromText('POINT( -1.2321 51.6024 )', 4326))
INSERT INTO @points VALUES ('Oxford', 'B', geography::STGeomFromText('POINT( -1.265  51.7486 )', 4326))

SELECT  dbo.ConvexHullGeography(dbo.GeographyUnionAggregate(point)), 'red' as color, 1 as thickness
FROM @points
GROUP BY Area

結果はGeoQuery2008で表示できます。

于 2009-10-12T11:13:52.397 に答える