GPS坐标转换php版本
发布时间:2022-01-15, 18:30:30 分类:PHP | 编辑 off 网址 | 辅助
图集1/1
正文 2368字数 781,078阅读
<?php
/**
* WGS84与百度坐标系 (BD-09) 的转换
*/
function wgs84tobd09($lng, $lat){
$cj2=wgs84togcj02($lng,$lat);
return gcj02tobd09($cj2[0],$cj2[1]);
};
/**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
* 即谷歌、高德 转 百度
*/
function gcj02tobd09($lng, $lat) {
$x_PI = 3.14159265358979324 * 3000.0 / 180.0;
$lat = +$lat;
$lng = +$lng;
$z = sqrt($lng * $lng + $lat * $lat) + 0.00002 * sin($lat * $x_PI);
$theta = atan2($lat, $lng) + 0.000003 * cos($lng * $x_PI);
$bd_lng = $z * cos($theta) + 0.0065;
$bd_lat = $z * sin($theta) + 0.006;
return [$bd_lng, $bd_lat];
};
/**
* WGS84转GCj02
*/
function wgs84togcj02($lng, $lat) {
$ee = 0.00669342162296594323;
$a = 6378245.0;
$lat = +$lat;
$lng = +$lng;
if (out_of_china($lng, $lat)) {
return [$lng, $lat];
} else {
$dlat = transformlat($lng - 105.0, $lat - 35.0);
$dlng = transformlng($lng - 105.0, $lat - 35.0);
$radlat = $lat / 180.0 * M_PI;
$magic = sin($radlat);
$magic = 1 - $ee * $magic * $magic;
$sqrtmagic = sqrt($magic);
$dlat = ($dlat * 180.0) / (($a * (1 - $ee)) / ($magic * $sqrtmagic) * M_PI);
$dlng = ($dlng * 180.0) / ($a / $sqrtmagic * cos($radlat) * M_PI);
$mglat = $lat + $dlat;
$mglng = $lng + $dlng;
return [$mglng, $mglat];
}
};
function transformlat($lng, $lat) {
$lat = +$lat;
$lng = +$lng;
$ret = -100.0 + 2.0 * $lng + 3.0 * $lat + 0.2 * $lat * $lat + 0.1 * $lng * $lat + 0.2 * sqrt(abs($lng));
$ret += (20.0 * sin(6.0 * $lng * M_PI) + 20.0 * sin(2.0 * $lng * M_PI)) * 2.0 / 3.0;
$ret += (20.0 * sin($lat * M_PI) + 40.0 * sin($lat / 3.0 * M_PI)) * 2.0 / 3.0;
$ret += (160.0 * sin($lat / 12.0 * M_PI) + 320 * sin($lat * M_PI / 30.0)) * 2.0 / 3.0;
return $ret;
};
function transformlng($lng, $lat) {
$lat = +$lat;
$lng = +$lng;
$ret = 300.0 + $lng + 2.0 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * sqrt(abs($lng));
$ret += (20.0 * sin(6.0 * $lng * M_PI) + 20.0 * sin(2.0 * $lng * M_PI)) * 2.0 / 3.0;
$ret += (20.0 * sin($lng * M_PI) + 40.0 * sin($lng / 3.0 * M_PI)) * 2.0 / 3.0;
$ret += (150.0 * sin($lng / 12.0 * M_PI) + 300.0 * sin($lng / 30.0 * M_PI)) * 2.0 / 3.0;
return $ret;
};
/**
* 判断是否在国内,不在国内则不做偏移
*/
function out_of_china($lng, $lat) {
$lat = +$lat;
$lng = +$lng;
// 纬度3.86~53.55,经度73.66~135.05
return !($lng > 73.66 && $lng < 135.05 && $lat > 3.86 && $lat < 53.55);
};
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
有过 3 条评论 »
GPS坐标转换经纬度及换算方法 GPS坐标和经纬度的算法和概率不太一样,但是我们可能会将他们互通起来用,下面先贴上我做的转换工具:http://map.yanue.net/gps.html。里面实现了gps到谷歌地图百度地图经纬度的转换。不含糊,下面将他们之间的联系。 GPS坐标系我本身不太了解它跟谷歌地图经纬度有多大区别,于是搜了一下,看看他们的区别: 地形图坐标系:我国的地形图采用高斯-克吕格平面直角坐标系。在该坐标系中,横轴:赤道,用Y表示;纵轴:中央经线,用X表示;坐标原点:中央经线与赤 道的交点,用0表示。赤道以南为负,以北为正;中央经线以东为正,以西为负。我国位于北半球,故纵坐标均为正值,但为避免中央经度线以西为负值的情况,将 坐标纵轴西移500公里。 北京54坐标系:1954年我国在北京设立了大地坐标原点,采用克拉索夫斯基椭球体,依此计算出来的各大地控制点的坐标,称为北京54坐标系。 GS84坐标系:即世界通用的经纬度坐标系。 经纬度表示:1884年国际经度会议规定,以通过英国伦敦格林威治天文台子午仪中心的经线为0°经线。从0°经线往东叫东经,往西叫西经,东、西各分180°。习惯 上以西经20°和东经160°为分界把地球分为东西两个半球。假如从地轴的正中间将地球切成南北两半,上边的一半叫北半球,下边的一半叫南半球。被切的这 个平面,叫赤道面。赤道面与地球表面相交的线叫赤道。纬线从赤道往两极越来越短,到了两极就缩小成一个点了。科学家们把赤道定为0°纬线,从赤道向两极各 分为90°,赤道以南叫南纬,赤道以北叫北纬。在计算机或GPS上经纬度经常用度、分、秒和度.度、分.分、秒.秒的混合方式进行表示,度、分、秒间的进 制是60进制,度.度、分.分、秒.秒的进制是100进制,换算时一定要注意。可以近似地认为每个纬度之间的距离是不变的111KM,每分间 1.85KM,每秒间31.8M。经度间的距离随纬度增高逐渐减小,可按以下公式计算: 经度1°长度=111.413cosφ一0.094cos3φ公里(纬度φ处)。 一般从GPS得到的数据是经纬度。经纬度有多种表示方法。 1.) ddd.ddddd, 度 . 度的十进制小数部分(5位)例如:31.12035º 2.) ddd.mm.mmm,度 . 分 . 分的十进制小数部分(3位)例如 31º10.335' 3.) ddd.mm.ss, 度 . 分 . 秒 例如 31º12'42" 地球上任何一个固定的点都可以用确定的经纬度表示出来。 关于经纬度坐标转换的方法 一、十进制转换成经纬度 把经纬度转换成十进制的方法很简 如下就可以了 Decimal Degrees = Degrees + minutes/60 + seconds/3600 例:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888 114°65'24.6"=114+65/60+24.6/3600=结果自己算! 如把经纬度 (longitude,latitude) (205.395583333332,57.9323888888888) 转换据成坐标(Degrees,minutes,seconds)(205°23'44.1",57°55'56.6")。 步骤如下: 1, 直接读取"度":205 2,(205.395583333332-205)*60=23.734999999920 得到"分":23 3,(23.734999999920-23)*60=44.099999995200 得到"秒":44.1 采用同样的方法可以得到纬度坐标:57°55'56.6" 好大一篇,都是别的地方copy过来的,有兴趣就自己看看吧 The end
GPS 经纬度格式转换 我们可以简单的把经纬度分为两种:WGS84 和 NMEA 格式。一般的地图系统都是采用 WGS84 这种国际 GPS 数据格式标准,由于兼容性问题,我们模块的定位指令输出的格式就 是这两种。只有AT+GPSLOC指令输出的是NMEA格式,其它基站定位指令比如AT+TKPOS, AT+ENBR 都是输出 WGS84 格式。 他们之间的转换关系大概如下: 从 NMEA 转换为 WGS84 格式 double nmea_ndeg2degree(double val) { double deg = ((int)(val / 100)); val = deg + (val - deg * 100) / 60; return val; } 从 WGS84 格式转换为 NMEA 格式: double nmea_degree2ndeg(double val) { double int_part; double fra_part; fra_part = modf(val, &int_part); val = int_part * 100 + fra_part * 60; return val; }
カリビアンコム プレミアム 012315_075 大人気の金髪ロシア女優ジーナとガチSEX
出演: ジーナ
カテゴリー: 洋物 中出し パイパン バイブ フェラチオ 生はめ 制服 金髪洋物 微乳 スレンダー めがね
スタジオ: ティティ
www.151py.com