SQL 2008に取得しようとしている数万のポイントで構成される数百の形状(polygon
sとmultipolygon
s)があります。
残念ながら、インポートしようとしたシェイプは「右利き」です(各シェイプの周囲は、含まれているポイントの周りに時計回りに描かれています)。SQLサーバーは、少なくともgeography
型については、「左回り」の形状(内部で反時計回り)を想定しています。これは、SQLが、自分の形状を除いて地球全体を選択しようとしていることを前提としていることを意味します。一部の人々は、これを「裏返し」の形状と表現しています。
MSDNから、どのリングの向きを使用するべきかについてイライラするほど言っていません:
geography
データタイプを使用して空間インスタンスを格納する場合、リングの方向を指定し、インスタンスの場所を正確に記述する必要があります。
SQL 2008で間違ったリング方向を使用すると、次のエラーでクラッシュします(強調は私のものです)。
ユーザー定義ルーチンまたは集計 "geography"の実行中に.NET Frameworkエラーが発生しました:Microsoft.SqlServer.Types.GLArgumentException:24205:指定された入力は、単一の半球を超えているため、有効なgeographyインスタンスを表していません。各geographyインスタンスは、単一の半球内に収まる必要があります。このエラーの一般的な理由は、ポリゴンのリングの向きが間違っていることです。
geometry
ではなくとしてシェイプをインポートすることはgeography
問題ありませんが、geography
可能であれば使用したいと思います。
SQL 2012では、この問題を修正するのはかなり簡単ですが、私は2008に縛られています。
形状を変換するにはどうすればよいですか?