2017-04-04 12 views
1

SQL Server 2005データベースがあります。私は、次の列を含む駆動データのテーブルからすべての1キロの距離でレコードを選択するクエリを記述するためにいくつかの助けを得ることができます:緯度、経度、および速度を含むテーブルから1キロメートルごとにレコードを選択するクエリ

timestamp     lat  long  speed MPH 
--------------------------------------------------------- 
2017-03-10 22:10:16.000 33.91985 -84.34022 4 
2017-03-10 22:10:20.000 33.91985 -84.34031 5 
2017-03-10 22:10:23.000 33.91985 -84.34035 5 
2017-03-10 22:10:26.000 33.91985 -84.34048 7 
2017-03-10 22:10:27.000 33.91985 -84.34048 7 
2017-03-10 22:10:30.000 33.91985 -84.34062 9 
2017-03-10 22:10:31.000 33.91985 -84.34062 9 
2017-03-10 22:10:34.000 33.91986 -84.3408 8 
2017-03-10 22:10:35.000 33.91986 -84.3408 8 

総移動距離は10.6キロであれば、11件のレコードがから選択されますテーブルは、タイムスタンプ順の最初と最後のレコードを含みます。

+0

1時間あたりのマイル数または1キロメートルあたりのスピードは? – jarlh

+0

1時間あたりのマイル数。 –

答えて

0

簡単な解決策は、(いくつかのアンカー列と比較して)それぞれの行に距離を計算

https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stdistance-geography-data-type

Geography.STDistance()WHILEでループを使用して、次のステップではなく、緯度/経度の列の地理データ型を使用することです。

+0

ありがとうMikhail、 –

+0

私はそれについても考えました。 sqlserver 2005では空間がありません。私は連続レコードごとにhaversine formula solutionを探しています。合計が1kmになるまで加算します。しかし、それが効率的かどうかは疑問です。とにかくミハイルありがとう。 –

関連する問題