入力緯度経度に最も近い緯度経度を検索する(SQL Server 2008)


12

データベース(SQL Server 2008空間)に点群があります。これは約600万件のレコードです。3つの列があります:id、value、geom。入力緯度経度で「値」を取得する最適な方法は何ですか?

SQL Server 2008の空間クエリは初めてです。誰かがgeom列のポイントを見つける簡単な例を投稿できますか。



私は試した。しかし、600万件のレコードがあり、さまざまな理由でインデックスの作成が失敗します。空のテーブルを作成し、geomに空間インデックスを追加してから、データを追加しようとしています。それは動作しますか?
Shaunak

どのようなエラーが発生していますか?インデックスを使用すると、読み込みが大幅に遅くなる可能性があります。そのため、読み込み後にインデックスを追加すると、はるかに高速になると思います。パフォーマンスはインデックスに大きく依存するため、それを正しく行うことは価値があります。
カークカイケンダル2011

回答:



4

これは、ジオメトリではなく地理を使用します(データが緯度/経度の場合、データはジオメトリではなく地理タイプである必要があります)

「SQL Serverのgeographyデータ型は、GPSの緯度と経度の座標などの楕円体(地球)データを格納します。」

使用できる緯度/経度(-122.0 37.0)のポイントから上位5つの最も近いレコードを選択するには

SELECT   TOP 5
         geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) 
FROM     markers
WHERE    geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) < 25
ORDER BY geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p);

pとは?申し訳ありませんが、私はなぜ新しい質問をしているのですか
-Shax

DECLARE @p geography
Andrew Hill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.