1

グループ、

テーブル列ProductID, latitude,longitude,timestampGMTがあり、この境界ボックスまたはエンベロープ内にある ID の数をカウントするクエリを探しています。

役立つ提案。

4

4 に答える 4

3

SQL Server 2008GEOGRAPHYデータ型をサポートします。

lat, lonこのデータ型の単一の列に格納し、そのSPATIAL上にインデックスを作成してクエリで使用する必要があります。

SELECT  m.*
FROM    mytable
ON      coords.STDistance(@mypoint) <= @mydistance
于 2010-02-19T18:00:25.423 に答える
2

「大円」の距離式を探しています

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=81360

正しい SQL アルゴリズムを示す必要があります

于 2010-02-19T17:49:30.527 に答える
1

この質問は、コミュニティ ウィキであってはなりません。できれば切り替えてください。いずれにせよ、ここにあなたの答えがあります。

@Quassnoi は SQL 2008 の優れたソリューションを提供しましたが、あなたは 2003 を求めていますよね? 2003 には、2008 と同じ地理サポートがありません。私が行ったように、独自に作成する必要があります。必要な精度のレベルによっては、難しいことではありません。これは、2 組の座標間の距離を計算するための一般的な式に基づいて思いついたスカラー関数です。

-- =====================================================================
-- Author:      Byron Sommardahl
-- Create date: June 15, 2007
-- Description: Calculates the distance between two sets of coordinates.
-- ======================================================================
CREATE FUNCTION [dbo].[Distance]
(
@lat1 float,
@long1 float,
@lat2 float,
@long2 float
)
RETURNS float
AS
BEGIN

RETURN (3958*3.1415926*sqrt((@lat2-@lat1)*(@lat2-@lat1) + cos(@lat2/57.29578)*cos(@lat1/57.29578)*(@long2-@long1)*(@long2-@long1))/180);
END
GO

これを使用するには、SELECT を使用して座標を入力するだけです。

SELECT dbo.Distance(MyPlace.Lat, MyPlace.Long, TheirPlace.Lat, TheirPlace.Long);

次に、製品が焦点の特定の半径内にあるかどうかを確認できます. 厳密にはバウンディング ボックスではありませんが、正しい方向に移動できます。

于 2010-02-20T00:00:05.683 に答える
0

これも参照してください。

SQL Server 郵便番号 緯度 経度 近接距離検索

于 2010-02-19T18:16:12.323 に答える