モバイルデバイスからGPSデータを受信するアプリケーションと、GSMネットワークからの信号強度を提供する座標データを受信するアプリケーションがあります。 私はマップ上のポイントをプロットして、良好な信号強度と低い信号強度の領域を表示しようとしています。 私はいくつかのポイントをすべてうまくいけば、ポイントはデータベースから取得され、正方形はポイントから約0.5km左上のポイントの周りに構築されます。次に、信号強度の色分けを使用して、VEマップ上に四角形を表示します。 問題は、数千から数千回の読み取りがあり、互いに0.5km未満の読み取り値を平均化する方法が必要な場合、またはSQL Serverで正方形(または円)を作成して平均化する必要がある場合です交差点。 私はこれでどこから始めるべきか分かりませんので、まともな記事やヒントへの参考になる点があれば幸いです。おかげさまで SQL Server 2008に近接しているポイントの平均データ
1
A
答えて
1
これを行うには単純で、やや不正確な方法の1つは、データの細かさを減らすことです。あなたのx、y測定値がどれほど正確であるかによって、それは不正確ではないかもしれません。
のは、我々は次のようなデータを持っているとしましょう:
x y signal_strenth
10.2 5.1 10
10.1 5.3 12
10.3 5.5 8
私たちは床xとyの値をした場合、我々が得る:
x y signal_strenth
10 5 10
10 5 12
10 5 9
その後、我々は、床のxとyでそれらの値を平均化することができます矩形(10,5)〜(11,6)に平均信号強度があることを示します。ここで
はSQLです:あなたが理想的な点から点への距離によって、グループのデータポイントにしたいと思います、確かに、今select
floor(x) as rectangle_xmin,
floor(y) as rectangle_ymin,
floor(x) + 1 as rectangle_xmax,
floor(y) + 1 as rectangle_ymax,
avg(signal_strength) as signal_strength
from table
group by floor(x), floor(y);
、および1とをsquare_rootまで変化する最大距離によって、このグループにそれらを(2)=〜1.44、それらを長方形ブロックにフローリングする。だから、理想よりも小さいです。しかし、それはあなたのために十分にうまくいくかもしれません。特に、フローリング/グループ分けがあなたの位置測定の誤差よりも小さい場合、特にそうです。
floor()
のサイズが十分でない場合は、floor(x *
を多少) /
と多少調整して、細かく調整することができます。もちろん、ceil()
またはround()
を使っても同じことができます。
全体のポイントは、崩壊の近くの測定値を1つの「測定値」に集約し、折りたたみ値の平均値をとっています。
0
X、Y、Z座標をグラフにプロットできるDelaunay Triangulationを調べるとよいでしょう。あなたがポイントのために持っているものを正確に知っていなくても、その場所にX、Yを使用してからZを信号強度としてプロットし、スパイクグラフを作成することは可能かもしれません。私はC++の例であるCodePlex sampleを見ただけですが、SQL関数を書くことができるかもしれません。
0
SELECT
geography::STPointFromText('POINT(' + CONVERT(varchar, AvgSignalReadings.rect_lngmin/100) + ' ' + CONVERT(varchar, AvgSignalReadings.rect_latmin/100) + ')', 4326) as Location,
AvgSignalReadings.lat/100 as Latitude,
AvgSignalReadings.lng/100 as Longitude,
AvgSignalReadings.SignalStrength
FROM
(
SELECT
FLOOR(l.Latitude * 100) as lat,
FLOOR(l.Longitude * 100) as lng,
AVG(l.SignalStrength) as SignalStrength,
COUNT(*) as NumberOfReadings
FROM SignalLog l
WHERE l.SignalStrength IS NOT NULL AND l.SignalStrength <> 0 AND l.Location IS NOT NULL
AND l.[Timestamp] > DATEADD(month, -1, GETDATE())
GROUP BY FLOOR(l.Latitude * 100), FLOOR(l.Longitude * 100))
AS AvgSignalReadings
関連する問題
- 1. SQL Server 2008での平均計算
- 2. Microsoft SQL Server 2008でカウントの平均を取得するには
- 3. 平均値に最も近いSQL
- 4. ロケーションの近接に基づいて平均値を計算する方法
- 5. SQL Server接続に近い問題
- 6. DatePartでグループ化されたSQL Server平均(平均)
- 7. vmware上のSQL Server 2008をローカルマシンのSQL Server 2008クライアントに接続する方法
- 8. SQL Server 2008 R2 VB.net接続
- 9. SQL Server 2008リモート接続ログイン
- 10. Microsoft SQL Server 2008 R2の水平パーティショニング?
- 11. SQL Serverの - 2008列データ型
- 12. 最も近いポイントを選択するSQL Serverの空間
- 13. MS SQL ServerおよびJDBCは:JavaコードからMS SQL Server 2008に接続している間の接続
- 14. SQL Server 2012:加重平均計算
- 15. SQL Server:加重平均+ GROUP BY
- 16. SQL Server 2008にExcelデータをインポートする
- 17. ODBCを使用してSQL Server 2008に接続する
- 18. AzureデータマーケットプレイスをSQL Server 2008 R2に接続
- 19. PDOでSQL Server 2008に接続
- 20. 平均を得るためのSQL Serverの遅いクエリ
- 21. SQLでデータを平均化する
- 22. Visual Studio 2008 - 異なるサブネット上のSQL Serverにデータ接続できない
- 23. アクションコントローラの例外SQL Server 2008の接続
- 24. SSIS 2008のSQL Server 2014への接続
- 25. SQL Server 2008 R2のtalendとの接続
- 26. SQLグループの平均
- 27. SQL Server 2008 R2のWMI接続エラー[0x80041010]
- 28. SQL Server 2008 R2のクエリエラー:付近に正しくない構文に「:」
- 29. SQL Server:すべての月の平均日数
- 30. xlsxデータをSQL Server 2008にインポート
アベレージングを想像してみてください(いくつかの疑似コードは問題ありません)。また、どのSQL Serverのバージョンを使用していますか? –
正方形を貼り付けると仮定して、連続した、規則的なグリッドがマップを覆うようにしたいのですか? –
こんにちは、あなたの返信ありがとう。基本的には、2つの交差する正方形についての信号の読み取りによって平均化されている領域が重なり合っていることを平均化することを想像しています。それはあまりにも難しいかもしれませんが、正方形が交差するときのエリアの結合の結果を平均するだけかもしれません。 – Phill