文档章节

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

Nob
 Nob
发布于 2014/04/12 13:23
字数 485
阅读 872
收藏 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

粉丝 18
博文 86
码字总数 58473
作品 0
东城
个人站长
私信 提问
通过地图上两个点的经纬度测算两点的距离

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

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

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

sjf0115
2017/11/15
0
0
spring计算方圆300km内其它城市(附完整代码)

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

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

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

冯京宝
2012/08/28
0
0
sql server中根据地图经纬度算距离

从别的地方烤过来的,自己试了一下,可以计算 出来,不过正确不正确的就不太懂了。 USE [niaoren] GO /****** Object: UserDefinedFunction [dbo].[fnGetDistance] Script Date: 2017/7/28 ...

niunan
2017/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android P DisplayManager多屏相关

Android 多屏相关信息 SurfaceControl.java 里定义了 /** * Built-in physical display id: Main display. * U......

DB_Terrill
16分钟前
1
0
JSBridge 实现机制

概述 在android 中 4.2之前addJavaScriptInterface(),提供给js调用native的方法,存在安全隐患,具体怎么发生的请看这里addJavaScriptInterface 隐患 android 现在基本借助webViewClient中的...

Jack088
18分钟前
1
0
Windows 修改指定盘符指定用户权限

因需求需要使用类似功能从而参考网上其它类似功能改了一下 #include<Windows.h>#include<iostream>#include<WinBase.h>#include<AccCtrl.h>#include<AclAPI.h>#pragma comment(lib,"Ke......

CHONGCHEN
25分钟前
2
0
代码评审常见问题总结【持续更新】

1:如果调用的方法返回值是基本数据类型,接收返回值的变量如果不是必须用包装类,请不要使用包装类进行接收,同理:在一个方法内return基本数据类型,方法返回值不要写包装类。 2:方法的参...

玄影镜心
28分钟前
2
0
深入解读阿里云数据库POLARDB核心功能物理复制技术

本文作者 黄忠(AnySQL) 日志是数据库的重要组成部份,按顺序以增量的方式记录了数据库上所有的操作,日志模块的设计对于数据库的可靠性、稳定性和性能都非常重要。 可靠性方面,在有一个数...

阿里云云栖社区
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部