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

2つの緯度/経度ポイント間の距離を見つける最速の方法

    、または、MySQL 5.1 以上:

        SELECT  *
        FROM    table
        WHERE   MBRContains
                        (
                        LineString
                                (
                                Point (
                                        @lon + 10 / ( 111.1 / COS(RADIANS(@lat))),
                                        @lat + 10 / 111.1
                                      ),
                                Point (
                                        @lon - 10 / ( 111.1 / COS(RADIANS(@lat))),
                                        @lat - 10 / 111.1
                                      ) 
                                ),
                        mypoint
                        )
    

    これにより、ボックス内のほぼすべてのポイントが選択されます(@lat +/- 10 km, @lon +/- 10km)

    これは実際にはボックスではなく、球形の長方形です。球の緯度と経度にバインドされたセグメントです。これは、フランツジョセフランドの単純な長方形とは異なる場合があります 、しかしほとんどの人が住んでいる場所ではそれにかなり近いです。

    • 追加のフィルタリングを適用して、(正方形ではなく)円の内側のすべてを選択します

    • おそらく、大きな円の距離(長距離の場合)を考慮して、追加の細かいフィルタリングを適用します



    1. PHPおよびMySQLデータベースでブログを作成する方法-バックエンド

    2. クライアントのNLS_LANGを確認するにはどうすればよいですか?

    3. エラー:psycopg2.extensionsという名前のモジュールがありません

    4. macOSのPostgreSQLログはどこにありますか?