0

mysqlデータベースに緯度と経度の配列の形式でポリゴンデータがあります。例:

mysql データベース内の緯度と経度の配列。

[["x":23.628134,  "y":27.458334],
["x":23.629867,   "y":27.449021],
["x":23.62324,    "y":27.445416],
["x":23.622424,   "y":27.457819],
["x":23.622424,   "y":27.457819]]

そして、緯度と経度の座標を持つポイント(頂点)があります。例:

$location = new vertex($_GET["longitude"], $_GET["latitude"]);

ここで、この頂点 (ポイント) がポリゴンの各コーナーから 2 マイル離れているかどうかを調べたいと思います。どうすればphpでこれを行うことができますか?

4

2 に答える 2

1

ポイントが地球のサイズと比較して近いと考える場合、次の式を使用して座標から別の座標までの距離を計算できます。

これはcsharp関数ですが、phpへの移植は簡単です

    double getGroundDistance(double latA, double lonA, double latB, double lonB)
    {
        double a = Math.PI / 180;
        double lat1 = latA * a;
        double lat2 = latB * a;
        double lon1 = lonA * a;
        double lon2 = lonB * a;
        double t1 = Math.Sin(lat1) * Math.Sin(lat2);
        double t2 = Math.Cos(lat1) * Math.Cos(lat2);
        double t3 = Math.Cos(lon1 - lon2);
        double t4 = t2 * t3;
        double t5 = t1 + t4;
        double radDist = Math.Atan(-t5 / Math.Sqrt(-t5 * t5 + 1)) + 2 * Math.Atan(1);
        return (radDist * 3437.74677 * 1.1508) * 1.6093470878864446 * 1000;
    }

そのため、各ポイントからの距離を確認する必要があります。

それが役立つことを願っています

于 2014-08-08T07:49:50.243 に答える