sql >> データベース >  >> RDS >> Mysql

PHP MySQLは、GPSからradiusユーザーの位置の位置を取得します

    他の人が言っているように、距離の計算はかなり計算コストがかかります。巨大なデータセットを返すこともあまり良い考えではありません。特にPHPのパフォーマンスがそれほど優れていないことを考えると

    単純な足し算と引き算で距離を概算するようなヒューリスティックを使用します。

    その範囲内のインシデント(事実上、円ではなく正方形)でデータベースを検索するだけで、PHPを使用してそれらを処理できます。

    編集 :これが代替案です。計算コストがはるかに低い近似値:

    おおよその距離(マイル):

    sqrt(x * x + y * y)
    
    where x = 69.1 * (lat2 - lat1) 
    and y = 53.0 * (lon2 - lon1) 
    

    正弦数学関数を追加することで、この近似距離計算の精度を向上させることができます。

    おおよその距離(マイル)の改善:

    sqrt(x * x + y * y)
    
    where x = 69.1 * (lat2 - lat1) 
    and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3) 
    

    出典: http://www.meridianworlddata.com/Distance-Calculation.asp

    編集2 :ランダムに生成されたデータセットを使用して一連のテストを実行しました。

    • 3つのアルゴリズムの精度の違いは、特に短距離では最小限です。
    • 最も遅いアルゴリズム(三角関数がたくさんあるアルゴリズム)は、他の2つよりも4倍遅くなります。

    絶対に価値がありません。概算で行ってください。

    コードはここにあります: http://pastebin.org/424186



    1. 行の位置が含まれるように列を更新しています

    2. oraclesqlで週末と祝日を除く日付差のカスタム関数を作成します

    3. SQLite Strftime()関数の有効なフォーマット文字列置換

    4. mysqlでグラフ/階層データをクエリする方法