经纬度

GeoHash核心原理解析

耗尽温柔 提交于 2019-12-12 18:19:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐。 饭饱之后机机开始反思了,地图后台如何根据自己所在位置查询来查询附近餐馆的呢?苦思冥想了半天,机机想出了个方法:计算所在位置P与北京所有餐馆的距离,然后返回距离<=1000米的餐馆。小得意了一会儿,机机发现北京的餐馆何其多啊,这样计算不得了,于是想了,既然知道经纬度了,那它应该知道自己在西城区,那应该计算所在位置P与西城区所有餐馆的距离啊,机机运用了递归的思想,想到了西城区也很多餐馆啊,应该计算所在位置P与所在街道所有餐馆的距离,这样计算量又小了,效率也提升了。 机机的计算思想很朴素,就是通过过滤的方法来减小参与计算的餐馆数目,从某种角度上讲,机机在使用索引技术。 一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL、oracle、PostgreSQL等)都在使用B树。B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间、年龄、薪水等等。但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢

微信发个原图,居然隐私曝光这么多…可怕

我是研究僧i 提交于 2019-12-09 17:11:19
作者:JackTian 微信公众号:杰哥的IT之旅(ID:Jake_Internet) 前几天,有一件这样的事情引起了网友们的关注,话题是: 微信发原图或泄露位置信息 ,不知道大家有没有留意。 因为之前有一个读者加了我微信,通过这一事情的发生就在那时间前后,有一天晚上跟我说: “老铁,感觉你的照片透露了蛮多信息呢”。 后来我这么一听,反而好奇心更加强烈起来了,于是我随意找了一些过往去过城市的照片也包括我跟朋友之间的沟通,让对方给我发照片并进行测试。 通过拿到朋友发我的图片时,发现了其中的两种可能性。 第一 :照片找不到相关 GPS 定位信息; 第二 :照片可以查到对应的 GPS 定位信息,却并不知道如何在地图中找到对应的详细地址。于是,揭秘了这些方式也会泄露他人在拍照时的地址信息等; 一、如何得到照片中的 GPS 信息? 以下图为例,是前几年在香港游玩时拍的照片,去过的朋友应该会有印象,但对于没去过的朋友来说,可能会问到这是在哪里拍的呢? 通过拍的这张照片来看,如果时间长了,似乎也会忘记到底什么时间去的?在什么地方拍摄的?等等,当然了,也记得不是那么很清楚了。昨天通过在 PC 上操作,找到了所要查找 GPS 位置信息的照片 “右键-属性-详细信息”, 就可以看到这张照片的很多信息。比如我通过如上照片只简单筛选了如下四点重要信息: 照片拍摄的时间:2017-10-5 15:06:49

神探Python程序员,带你千里捉小三!(附详情代码)

北战南征 提交于 2019-12-06 19:45:55
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者: 王翔 清风Python PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 通过委托人的述说,专门查了一下深圳最近的天气,保持在10-20度之间,带羽绒服的动作确实有些匪夷所思。因为只是怀疑不能直白的查岗,该如何默默地私下调查呢?在和委托人深入探讨时,看到她老公发了一张汉庭酒店的入住照片。然而汉庭酒店在全国都有分店,也不能说明什么啊! 突然我灵机一动,也许这一张足以成为是否出轨的证据了!在委托人疑惑中,我让她把这张照片发到了我的电脑上,经过我飞速的代码编写,真想就此浮出水面! 通过解析照片,获取到了照片的详细与经纬度,在通过经纬度逆推,得到了最终的拍摄地理位置:陕西省西安市碑林区含光北路162号,拿起手机搜索了一下这个地址实锤了,汉庭酒店无疑! 委托人的连夜机票,最终完成了千里捉小三的壮举!全剧终… 获取地理位置 故事到这里结束了,但是小P侦探是如何通过代码解析到照片中的具体位置呢?如果人人都可以通过照片解析他人的位置,岂不是乱了套了!别急,想通过代码解析微信发送的照片地理位置

高德地图基础

白昼怎懂夜的黑 提交于 2019-12-06 06:22:40
一,基础类: new AMap.Pixel(x:Number,y:Number)  构造一个像素坐标对象。,确定地图上的一个像素点。xy为像素单位 new AMap.Size(width:Number,height:Number)   地物对象的像素尺寸  构造尺寸对象。参数width:宽度,height:长度,单位:像素; new AMap.LngLat(lng:Number,lat:Number,noAutofix:bool)  经纬度坐标,确定地图上的一个点。 lng、lat分别代表经度、纬度值; noAutoFix表示是否自动将经度修正到 [-180,180] 区间内,缺省为false, new AMap.Bound( southWest: LngLat , northEast: LngLat )  地物对象的经纬度矩形范围。参数southWest、northEast分别代表地物对象西南角经纬度和东北角经纬度值。 二,地图: new AMap.Map( container:String/HTMLDivElement, opts: MapOptions ) 方法: getBounds( )  获取当前地图视图范围,获取当前可视区域。 getSize( )    获取地图容器像素大小 setZoom(level:Number)  设置地图显示的缩放级别,在PC上

Redis GEO 地理位置

孤街浪徒 提交于 2019-12-05 10:13:28
目录 GEO指令 GEOADD GEODIST GEOPOP GEOHASH GEORADIUS GEORADIUSBYMEMBER 指令补充 删除操作 避免单集合数量过多 存储原理 GEOADD存储原理 GEOHASH精度问题 Redis 3.2版本新增GEO(地理位置)。 GEO指令 GEOADD 命令: GEOADD key longitude latitude member [longitude latitude member ...] 命令描述:将指定的地理空间位置(纬度、经度、名称)添加到指定的 key 中。 返回值:添加到sorted set元素的数目,但不包括已更新score的元素。 时间复杂度:O(log(N)) GEODIST 命令: GEODIST key member1 member2 [unit] 命令描述: 返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。指定单位的参数 unit 必须是以下单位的其中一个: m 米 km 千米 mi 英里 ft 英尺 时间复杂度:O(log(N)) GEOPOP 命令: GEOPOS key member [member ...] 命令描述:从key里返回所有给定位置元素的位置(经度和纬度)。 返回值:GEOPOS 命令返回一个数组, 数组中的每个项都由两个元素组成:

PHP计算两个经纬度地点之间的距离

China☆狼群 提交于 2019-12-04 14:08:45
``` /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距离,单位米 * @author www.Alixixi.com */ function getdistance($lng1, $lat1, $lng2, $lat2) { // 将角度转为狐度 $radLat1 = deg2rad($lat1); //deg2rad()函数将角度转换为弧度 $radLat2 = deg2rad($lat2); $radLng1 = deg2rad($lng1); $radLng2 = deg2rad($lng2); $a = $radLat1 - $radLat2; $b = $radLng1 - $radLng2; $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000; return $s; } ``` > 更多精彩文章请关注 [王明昌博客](https://www.wangmingchang.com) 来源: https://www.cnblogs.com/wmc1125/p

从数据库读取某经纬度附近1km的地点

有些话、适合烂在心里 提交于 2019-12-04 14:06:46
``` $slat = $banner_content['jd']; $slng = $banner_content['wd']; $sql = "select *, acos( sin(($slng*3.1415)/180) * sin((wd*3.1415)/180) + cos(($slng*3.1415)/180) * cos((wd*3.1415)/180) * cos(($slat*3.1415)/180 - (jd*3.1415)/180) )*6370.996 AS juli FROM {$this->model->pre}post where status=1 and cid=29 HAVING juli model->query($sql); 数据库字段 jd 经度 wd 纬度 某点的坐标 $slat 经度 $slng 纬度 ``` > 更多精彩文章请关注 [王明昌博客](https://www.wangmingchang.com) 来源: https://www.cnblogs.com/wmc1125/p/11869599.html

第八章:在小程序里查询天气(下)

孤街醉人 提交于 2019-12-04 08:14:16
作者: 知晓云 - 小程序开发快人一步 来源:知晓课堂 在上一节,我们已经简单地完成一个天气查询小程序的静态页面,现在,我们就来为它加上逻辑代码。 获取当前位置天气 想象一下,当小程序加载,默认进入天气详情页面,此时页面初始化时应该做哪些工作呢? 初始化逻辑分3步走,具体如下: 1. 首先获取当前地理位置信息,取得经纬度。 2. 调用腾讯地理位置逆解析服务,获取当前位置信息。 3. 调用心知天气 API,获取当前城市天气。 首先我们需要获取当前地理位置信息。小程序提供了 wx.getLocation API,可以让我们有能力获取到当前使用者的地理位置信息。 wx.getLocation 使用方法如下: wx.getLocation({ success: function (res) { // success 属性是获取成功回调函数 console.log(res) that.setData({ hasLocation: true, location: formatLocation(res.longitude, res.latitude) }) } }) 我解释一下上述语句:我们给 wx.getLocation 函数传递了一个对象,对象中有 success 属性,该属性为一个 Function 类型,用于绑定获取地理位置成功事件的回调,在这个回调事件中,我们可以拿到一个 res 对象

经纬度转化

只愿长相守 提交于 2019-12-03 23:43:54
经纬度的表示:1.经纬度以度数表示,2.度、角分(1角分等于六十分之一度)、秒(一秒等于六十分之一分)表示。 如:北纬N39°34′14.95″ 东经E116°34′52.18″化为小数点的度为:北纬39.5708181173,东经116.5811614825 具体化法: 北纬N39°34′14.95″ :39+34÷60+14.95÷3600=39.5708181173 东经E116°34′52.18″:116+34÷60+52.18÷3600=116.5811614825 反: 39.5708181173 39° 0.5708181173×60=34.249087038 34′ 0.249087038×60=14.94522228 14.945″ 来源: https://www.cnblogs.com/recordmoment/p/11811711.html

Cesium中的几种坐标和相互转换【转】

妖精的绣舞 提交于 2019-12-03 20:09:17
几个重要的坐标对象: 1.世界坐标 Cartesian3:笛卡尔空间直角坐标系 new Cesium.Cartesian3(x, y, z) 可以看作,以椭球中心为原点的空间直角坐标系中的一个点的坐标。 2.经纬度 地理坐标系,坐标原点在椭球的质心。 经度:参考椭球面上某点的大地子午面与本初子午面间的两面角。东正西负。 纬度 :参考椭球面上某点的法线与赤道平面的夹角。北正南负。 Cesuim中没有具体的经纬度对象,要得到经纬度首先需要计算为弧度,再进行转换。 3.弧度 Cartographic new Cesium.Cartographic(longitude, latitude, height) 这里的参数也叫做,longitude,latitude,即经度和纬度。 但是是用弧度表示的经纬度,经纬度其实就是角度,可以看上面的解释。弧度即角度对应弧长是半径的倍数。 角度转弧度 π/180×角度 弧度变角度 180/π×弧度 几种转换 1. 经纬度转换为世界坐标 第一种方式:直接转换: Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result) longitude:经度 latitude:纬度 height:高度 ellipsoid:椭球体: 第二种方式:先转换成弧度再转换 var