geohash

python读取文件夹下面的所有csv文件,并根据文件里面的经纬度给csv文件新增一列geohash码

邮差的信 提交于 2020-01-12 13:44:35
python读取文件夹下面的所有csv文件,并对文件里面的经纬度进行geohash编码后作为新增列保存到csv文件里面 代码如下:( 注:这段代码处理csv文件里面只有两列没有列名的数据,分别是经度和纬度 ) import geohash as gh import os import pandas as pd for info in os . listdir ( "E:\geohashData\jwdt1" ) : #文件夹的路径 domain = os . path . abspath ( r "E:\geohashData\jwdt1" ) #获取文件夹的路径 info = os . path . join ( domain , info ) #将路径与文件名结合起来就是每个文件的完整路径 data = pd . read_csv ( info , header = None , names = [ 'longitude' , 'latitude' ] ) #读数据并为这两列数据新增列名 #data1=pd.DataFrame(data,columns=['latitude','longitude']) data_list = [ ] latitude = data [ "latitude" ] longitude = data [ "longitude" ] for i in

Coding and Paper Letter(七十二)

你离开我真会死。 提交于 2019-12-18 23:15:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 资源整理。 1 Coding: 1.自动设置GOMAXPROCS以匹配Linux容器CPU配额。 automaxprocs 2.文言文編程語言。今天来自机器之心的推送,虽然我已经先看到了。来自CMU大四的大佬。 wenyan lang 3.此程序包中的文件采用云优化的GeoTIFF格式,可以在PROJ 7或更高版本的PROJ数据目录中解压缩。 proj datumgrid geotiff 4.该存储库是The Carpentries模板,用于创建研讨会的网站。 2020 01 17 uri 5.R语言包shinyglide,Shinyglide是一个R包,借助Glide JavaScript库,它可以为shiny应用程序提供类似于播放组件。 shinyglide 6.GeoGeometry是一组算法和函数,用于通过地理坐标处理geohash和几何形状。 geogeometry 7.将geoJSON MultiPolygon或Polygon转换成构成它的geohash列表。 geohash poly 8.找到一个多边形中的所有geohash。 用Java实现。 GeoHashesInPolygon 9.R语言包RavenR,用于处理Raven水文建模框架的输入,输出和诊断。 RavenR 10

Redis的GEO

旧街凉风 提交于 2019-12-18 22:13:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> redis 3.2版本里面新增的一个功能就是对GEO(地理位置)的支持。 地理位置大概提供了6个命令,分别为: GEOADD 命令:GEOADD key longitude latitude member [longitude latitude member ...] 命令描述:将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。 返回值:添加到sorted set元素的数目,但不包括已更新score的元素。 GEODIST 命令:GEODIST key member1 member2 [unit] 返回:两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。可选unit:m、km、mi、ft GEOPOS 命令:GEOPOS key member [member ...] 命令描述:从key里返回所有给定位置元素的位置(经度和纬度)。 返回值:GEOPOS 命令返回一个数组, 数组中的每个项都由两个元素,经度和纬度。位置元素不存在时,对应的数组项为空值。 GEOHASH 命令:GEOHASH key member [member ...] 命令描述:返回一个或多个位置元素的 Geohash 表示。通常使用表示位置的元素使用不同的技术,使用Geohash位置52点整数编码

redis3.2新功能--GEO地理位置命令介绍

别等时光非礼了梦想. 提交于 2019-12-12 19:09:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、概述 redis3.2发布rc版本已经有一段时间了,估计RedisConf 2016左右,3.2版本就能release了。3.2版本中增加的最大功能就是对GEO(地理位置)的支持。说起redis的GEO特性,最大的贡献还是咱们中国人。redis作者在对3.2引进新特性的博客中介绍了为什么支持GEO。GEO hashing的api是在Ardb实现的,Ardb是github用户yinqiwen实现的基于redis协议实现的nosql系统,Ardb支持除了redis、还有LevelDB、RocksDB 、LMDB等kv引擎。其中Ardb实现了GEO hashing功能。从Ardb作者的用户名和标识的位置在深圳可以看出Ardb作者应该是咱中国人。Ardb是用c++写的。redis另一个开发者Matt Stancliff从Ardb提取GEO库,用C语言改写,整合进redis的一个自己的分支,并被redis作者接受,合并进了3.2版本。GEO目前提供以下6个命令。 geoadd:增加某个地理位置的坐标。 geopos:获取某个地理位置的坐标。 geodist:获取两个地理位置的距离。 georadius:根据给定地理位置坐标获取指定范围内的地理位置集合。 georadiusbymember

GEO hash 核心原理

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

GeoHash核心原理解析

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

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 命令返回一个数组, 数组中的每个项都由两个元素组成:

Redis 到底是如何实现“附近的人”这个功能呢?

浪尽此生 提交于 2019-12-03 07:05:35
针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。 操作命令 自Redis 3.2开始,Redis基于geohash和有序集合提供了地理位置相关功能。 Redis Geo模块包含了以下6个命令: GEOADD: 将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS: 从key里面返回所有给定位置对象的位置(经度和纬度); GEODIST: 返回两个给定位置之间的距离; GEOHASH: 返回一个或多个位置对象的Geohash表示; GEORADIUS: 以给定的经纬度为中心,返回目标集合中与中心的距离不超过给定最大距离的所有位置对象; GEORADIUSBYMEMBER: 以给定的位置对象为中心,返回与其距离不超过给定最大距离的所有位置对象。 其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。其中“给定的位置对象”即为用户本人,搜索的对象为其他用户。不过本质上,GEORADIUSBYMEMBER =

redis之GeoHash

风流意气都作罢 提交于 2019-12-02 16:49:35
Redis 提供的 Geo 指令只有 6 个,它只是一个普通的 zset 结构。 增加 geoadd 指令携带集合名称以及多个经纬度名称三元组,注意这里可以加入多个三元组 127.0.0.1:6379> geoadd company 116.48105 39.996794 juejin (integer) 1 127.0.0.1:6379> geoadd company 116.514203 39.905409 ireader (integer) 1 127.0.0.1:6379> geoadd company 116.489033 40.007669 meituan (integer) 1 127.0.0.1:6379> geoadd company 116.562108 39.787602 jd 116.334255 40.027400 xiaomi (integer) 2 距离 geodist 指令可以用来计算两个元素之间的距离,携带集合名称、2 个名称和距离单位。 127.0.0.1:6379> geodist company juejin ireader km "10.5501" 127.0.0.1:6379> geodist company juejin meituan km "1.3878" 127.0.0.1:6379> geodist company juejin

Redis 到底是怎么实现“附近的人”这个功能的?

时光怂恿深爱的人放手 提交于 2019-12-01 18:25:52
前言 : 针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。 而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。 要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。 操作命令 自Redis 3.2开始,Redis基于geohash和有序集合提供了地理位置相关功能。Redis Geo模块包含了以下6个命令: GEOADD : 将给定的位置对象(纬度、经度、名字)添加到指定的key; GEOPOS: 从key里面返回所有给定位置对象的位置(经度和纬度); GEODIST: 返回两个给定位置之间的距离; GEOHASH: 返回一个或多个位置对象的Geohash表示; GEORADIUS : 以给定的经纬度为中心,返回目标集合中与中心的距离不超过给定最大距离的所有位置对象; GEORADIUSBYMEMBER: 以给定的位置对象为中心,返回与其距离不超过给定最大距离的所有位置对象。 其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能