php获取多边形GPS中心点坐标getGpsCenter

warning: 这篇文章距离上次修改已过990天,其中的内容可能已经有所变动。
直接帖方法
    $gps_data = [
        [119.182468,34.603796],
        [119.182635,34.603347],
        [119.182743,34.603370],
        [119.182575,34.603846].
    ];
    // 获取GPS中心点坐标
    function getGpsCenter($gps_data = [])
    {
        if (!is_array($gps_data)) return false;
        $num_coords = count($gps_data);

        $X = 0.0;
        $Y = 0.0;
        $Z = 0.0;

        foreach ($gps_data as $val)
        {
            #$lon = $coord[1] * pi() / 180;
            $lng = deg2rad($val[0]);
            #$lat = $coord[0] * pi() / 180;
            $lat = deg2rad($val[1]);

            $a = cos($lat) * cos($lng);
            $b = cos($lat) * sin($lng);
            $c = sin($lat);

            $X += $a;
            $Y += $b;
            $Z += $c;
        }

        $X /= $num_coords;
        $Y /= $num_coords;
        $Z /= $num_coords;

        $lng = atan2($Y, $X);
        $hyp = sqrt($X * $X + $Y * $Y);
        $lat = atan2($Z, $hyp);

        #return array($lat * 180 / pi(), $lon * 180 / pi());
        return array(rad2deg($lng), rad2deg($lat));
    }
PHP
最后修改于:2022年03月07日 17:04

添加新评论