经纬度互换、换算成米、两点的经纬度计算两点间的距离

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过来的!

使用的gps模块返回的数据格式是0183gps协议,返回的十进制经纬度,在地图显示需以上转换

文章来源 http://blog.sina.com.cn/s/blog_15e6436480102wrmk.html

 

原文:https://blog.csdn.net/chary8088/article/details/17399825 

将距离换算成经纬度,有误差。 

       

/**
     * 某点的经纬度,求距已知点一定距离并和已知点所在水平线成一定角度的另一点的经纬度
     * @param type $distance 两点间距离
     * @param type $longitude 原点经度
     * @param type $latitude 原点维度
     * @param type $angle 第一个点到第二个点的角度
     * @return type
     */
    public function getLongLat($distance, $longitude, $latitude, $angle) {
        return [
            'longitude' => $longitude+($distance*sin($angle*M_PI/180))/(111*cos($latitude*M_PI/180)),
            'latitude'  => $latitude+($distance*cos($angle*M_PI/180))/111
        ];
    }

 

posted @ 2019-07-10 17:36  達達尼亞  阅读(9897)  评论(0编辑  收藏  举报