perl:perl获取GPS对应的百度经纬度及两点间距离计算
2014-05-21 15:44
330 查看
package GPS; use LWP::Simple; use MIME::Base64; use Math::Trig qw(great_circle_distance deg2rad); require Exporter; our @ISA = qw(Exporter); our @EXPORT=qw(getBaiduPosXY getDistance); #our @EXPORT_OK=qw(getDistance); ########################### 获取GPS转化百度经纬度 ############################ # gps坐标的type=0 # google坐标的type=2 # baidu坐标的type=4 # http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=经度&y=纬度&callback=BMap.Convertor.cbk_7594 sub getBaiduPosXY { my ($x,$y) = @_; my ($url,$content,$lat,$lon,@res); $url = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4"; $url .= "&x=$x&y=$y"; $url .= "&callback=BMap.Convertor.cbk_7594"; $content = get($url); ($lat,$lon) = (decode_base64($1),decode_base64($2)) if($content=~m#x":"(.*?)","y":"(.*?)"#); @res = ($lat,$lon); return @res; } ######################## 计算百度goole地图距离 ############################### # http://hi.baidu.com/shooke1/item/77570cffb3b52510d7ff8cb9 # 球面距离公式 # R*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ # sin(lat1*pi()/180 )*sin(lat2*pi()/180)) # 其中,R=6370996.81;//地球半径,pi()为圆周率π,(lng1,lat1),(lng2,lat2)分别是百度地图的两个经纬度,带入数值计算即可 # $lat,$lon 是当前坐标 # $_lat,$_lon 是目标坐标 sub getDistance { my ($lon,$lat,$_lon,$_lat) = @_; my $R = 6371.012; sub NESW { deg2rad($_[0]), deg2rad(90 - $_[1]) } my @L = NESW($lon, $lat); my @T = NESW($_lon, $_lat); my $distance = great_circle_distance(@L, @T, $R); # = 6371.012 * acos( # cos(acos(-1) / 180 * $lat) * # cos(acos(-1) / 180 * $_lat) * # cos(acos(-1) / 180 * $lon - acos(-1) / 180 * $_lon) + # sin(acos(-1) / 180 * $lat) * # sin(acos(-1) / 180 * $_lat))*1; return $distance; } 1; __END__ =pod =head1 NAME GPS Custom Module Map function import: use lib "./"; =head1 getBaiduPosXY use GPS; my @pos=getBaiduPosXY(121.398189,31.23103447); =head1 getDistance use GPS; my $distance = getDistance(121.398189,31.23103447,121.474797,31.223954); print $distance;
相关文章推荐
- JAVA 根据经纬度计算地球上任意两点距离GPS
- java根据GPS经纬度坐标计算两点的距离算法
- java使用geocoder,获取经纬度并计算没两点间距离
- 根据经纬度计算距离的公式、百度坐标转换成GPS坐标(PHP版)
- 通过gps给定的两个经纬度坐标,计算两点之间的距离
- 用百度地图API获取的经纬度信息计算两点距离(Mysql函数)
- 计算 GPS 经纬度 两点间 距离 JAVA 代码
- Gps如何根据两点(经纬度)计算直线距离
- gps 经纬度两点距离的计算方法
- 通过经纬度计算地球两点间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 根据两点经纬度计算距离
- 求通过经纬度计算地球表面任意两点间距离的公式
- 利用两点的经纬度来计算这两点之间的距离
- 经纬度知识-来源,计算,根据两点经纬度计算距离
- 根据两点经纬度计算地球表面两点间的距离
- 根据两点经纬度计算距离
- 根据经纬度坐标计算两点间几何距离 - 椰子树下 - CSDN博客
- 根据经纬度计算地球上两点之间的距离的Sql Server函数
- C#根据经纬度计算两点距离(单位是千米)