私があなたのために書いたコードを使用しました (ShapeFile からの「ポイント」列の保存 ) ポイントのテーブルを取得するための開始点として。そこから:
select geography::STPolyFromText(
'POLYGON((' +
stuff((
select ',' + cast(g.STPointN(t.i).Long as varchar(10)) + ' ' + cast(g.STPointN(t.i).Lat as varchar(10))
from [a]
cross join tally as [t]
where t.i <= g.STNumPoints()
order by i
for xml path('')
), 1, 1, '') + '))'
, 4326)
このコードは、いくつかのことを前提としています。まず、リージョンの境界を一周するようにポイントが並べられていること。これは重要です。点をつなぐパズルを考えてみてください。適切な画像を得るには、正しい順序で行う必要があります。第 2 に、第 1 に関連して、それらは正しい方向にある必要があります。多角形は左手の法則に従います。つまり、ポイントを順番に歩いていた場合、左側にある領域を定義しています。したがって、ポイントを逆の順序で指定すると、地域以外のすべてが取得されます! SQL 2012 より前では、半球に完全に含まれる領域に制限されていたため、これはすぐにわかります。
しかし、今私は尋ねなければなりません:あなたが以前に尋ねた質問(私が上にリンクしたもの)を考えると、ポリゴンを含むシェープファイルを受け取っていますか?もしそうなら、それを保存して再構築の頭痛の種から解放してください。