文档章节

计算1千米内最大最小的经纬度&&计算地球上两点之间距离python

Nob
 Nob
发布于 2014/04/12 13:23
字数 485
阅读 835
收藏 6

在开发一起玩耍app的时候,有一些距离的处理,整理出这个

  1. 计算x千米范围内的最大最小经纬度,用来从数据库中检索数据

php方法:

$myLat = $postObj->Location_X;//接收到的当前位置的纬度
$myLng = $postObj->Location_Y;//接收到的当前位置的经度

$Label = $postObj->Label;//接收到的当前地理位置信息
$Label = iconv("UTF-8","GBK",$Label);
$find = stripos($Label,' ');//过滤掉邮政编码 纯属为了整洁性
if($find!==false)
{
    $Label = substr($Label,0,$find);
}

//以下为核心代码
$range = 180 / pi() * 1 / 6372.797;     //里面的 1 就代表搜索 1km 之内,单位km
$lngR = $range / cos($myLat * pi() / 180);
$maxLat = $myLat + $range;//最大纬度
$minLat = $myLat - $range;//最小纬度
$maxLng = $myLng + $lngR;//最大经度
$minLng = $myLng - $lngR;//最小经度
//得出这四个值以后,就可以根据你数据库里存的经纬度信息查找记录了~

python方法:

import math
# 计算x千米范围内的的最大最小经纬度
def calcu_location(location_x, location_y, r=1):
    lat_range = 180 / math.pi * r / 6372.797  # 里面的 1 就代表搜索 1km 之内,单位km
    long_r = lat_range / math.cos(location_x * math.pi / 180)
    max_lat = location_x + lat_range  # 最大纬度
    min_lat = location_x - lat_range  # 最小纬度
    max_long = location_y + long_r  # 最大经度
    min_long = location_y - long_r  # 最小经度
    
    range_xy = {}
    range_xy['location_x'] = {'min':min_lat, 'max':max_lat}
    range_xy['location_y'] = {'min':min_long, 'max':max_long}
    return range_xy

测试:

print calcu_location(-30.376393,-114.33879)

输出:

{'location_x': {'max': -30.367402319846047, 'min': -30.385383680153954}, 'location_y': {'max': -114.32836870647137, 'min': -114.34921129352864}}


2.  计算地球上两点之间距离,单位千米

python方法:

#计算两点距离,输入两点经纬度,输出距离:千米
def rad(flo):
    return flo * math.pi / 180.0
    
def calcu_distance(lat1,lng1,lat2,lng2):
    earth_radius=6378.137
    radlat1=rad(lat1)
    radlat2=rad(lat2)
    a=radlat1-radlat2
    b=rad(lng1)-rad(lng2)
    s=2*math.asin(math.sqrt(math.pow(math.sin(a/2),2)+math.cos(radlat1)*math.cos(radlat2)*math.pow(math.sin(b/2),2)))
    s=s*earth_radius
    if s<0:
        return round(-s,2)
    else:
        return round(s,2)


© 著作权归作者所有

共有 人打赏支持
Nob

Nob

粉丝 17
博文 86
码字总数 58473
作品 0
东城
个人站长
经纬度互换、换算成米、两点的经纬度计算两点间的距离

经纬度互换 度(DDD):E 108.90593度 N 34.21630度 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108.90593整数位不变取108(度),用0.9059360=54.3558,取...

hejunbinlan
2015/09/06
159
0
通过地图上两个点的经纬度测算两点的距离

根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都...

niceguy_php
2015/01/27
0
0
[算法系列]算法一 地理空间距离计算优化

1. 地理空间距离计算面临的挑战 打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是“离我最近”或者“智能排序”(如下图所示): 不管是“离我最近”还是“智能排序”,都涉及到计...

sjf0115
2017/11/15
0
0
Android获取经纬度、计算距离、方位角

最近在Android上做GPS的东西,获取经纬度、计算距离、方位角,感觉在搞GIS样。当然,玩笑了,玩玩而已,稍微总结一下。 经度指示南北方向,纵向。 纬度指示东西方向,横向. 获取经纬度 使用G...

冯京宝
2012/08/28
0
0
spring计算方圆300km内其它城市(附完整代码)

最近工作需要,页面展示某个城市附近300km范围内所有的其它城市。找了半天也没有合适的方法,这里给出一种解决方法,如果有更好的,请不吝赐教。 一、准备工作 问题抽象:求城市300km范围内所...

lkee6760
2017/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里面试题

https://yq.aliyun.com/articles/6656 https://yq.aliyun.com/articles/7468

jason_kiss
25分钟前
3
0
阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统

背景 秒杀活动是绝大部分电商选择的低价促销,推广品牌的方式。不仅可以给平台带来用户量,还可以提高平台知名度。一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验...

别打我会飞
31分钟前
2
0
188. jsp提出公共的资源

平时我们会在一个地方 写一些重复的东西,为了便于管理我们需要将它提炼出来 1. 问题现象 2. 解决方式 (1) 提炼出该内容 <script type="text/javascript"> var net ={url: "${pageContext....

Lucky_Me
38分钟前
0
0
集合

集合 集合 集合介绍 前面的学习,我们知道数据多了,使用数组存放。而且数组中存放的都是基本类型的数据,并且数组是定长的。当在程序中创建的对象比较多的时候,需要对这些对象进行统一的管...

码农屌丝
45分钟前
1
0
jsp页面手写翻页小记

<s:if test="totalPage > 1"> <tr align="center"> <td colspan="4" align="center" style="height: 25px; text-align: center;">......

JackChenzp
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部