http://en.wikipedia.org/wiki/Geohash
简单使用 geohash, redis,bottle, python-geohash 来实现 restful api的地理位置附近人搜素
from bottle import Bottle, run
import time
import json
from redis_pool import Redis
R = Redis().connection_pool()
import geohash
app = Bottle()
@app.route('/v1/mark/<longitude:float>/<latitude:float>')
def mark_police(longitude, latitude):
geo_encode = geohash.encode(longitude, latitude, 12)
R.set(geo_encode, time.time())
return json.dumps({"code":"success", "msg":{"geohash":geo_encode}})
@app.route('/v1/show/<longitude:float>/<latitude:float>')
def show(longitude, latitude):
geo_encode = geohash.encode(longitude, latitude, 7)
eight = geohash.expand(geo_encode)
response = []
for e in eight:
response.extend([geohash.decode(i) for i in R.keys("%s*"%e)])
return json.dumps({"code":"success", "msg":response})
run(server='eventlet', app=app, host='0.0.0.0', port=9090)
依赖的redis封装class
import redis
class Redis(object):
pool=None
R = None
def __init__(self, host='localhost', port=6379, max_connections=2048):
self.host=host
self.port=port
self.max_connections=int(max_connections)
self.pool = redis.ConnectionPool(host=host,
port=port, db=0,
max_connections=max_connections)
def connection_pool(self):
if not self.R:
self.R = redis.Redis(connection_pool=self.pool)
return self.R
API 接口使用example
1. 标记 user 位置
http://localhost:9090/v1/mark/longitude/latitude
example:
http://localhost:9090/v1/mark/12.1256/22.22
{"msg": {"geohash": "s6pucxkhex8v"}, "code": "success"}
2. 用户请求周围1km内的 其他 user 位置信息
http://localhost:9090/v1/show/longitude/latitude
example:
http://localhost:9090/v1/show/12.1256/22.22
{"msg": [[12.123455917462707, 22.220000009983778], [12.125600008293986, 22.220000009983778]], "code": "success"}
注:
longitude 经度
latitude 纬度
均为float 型
分享到:
相关推荐
结合现代Web开发框架,`geohash`可以无缝融入各种地理位置相关的应用场景,如社交网络的“附近的人”功能、本地搜索服务以及地图应用等。在处理大量地理位置数据时,`geohash`的效率优势尤为明显,极大地优化了性能...
- 在数据库中,可以使用GeoHash编码作为索引来加速地理位置的搜索。当查找附近位置时,只需要查询与目标GeoHash编码相邻的几个编码即可。 - 地图应用中,可以使用GeoHash来对地图进行分块,以优化地图加载和导航...
在Android应用中,Geohash可以用于地图应用的搜索功能,比如寻找附近的餐馆或景点;也可以用于社交应用,帮助用户找到附近的其他用户。此外,它还可以用于位置跟踪和地理围栏,当用户进入或离开特定区域时触发通知。...
通过Geohash编码,可以快速查找附近的兴趣点、实现地图上的搜索过滤等功能,极大地优化了空间数据的存储和查询效率。 总之,"nodejs geohash"是Node.js开发中处理地理信息的一种有效工具,它利用Geohash算法将...
在实际应用中,Java实现的GeoHash算法常用于地理信息系统(GIS)、位置服务和物联网(IoT)等领域,帮助优化空间数据的存储和查询性能。 为了更好地理解并实现GeoHash算法,你可以参考`geoHash`压缩包中的源代码,...
GeoHash算法的使用场景广泛,例如在地图应用中,可以用来快速找到附近的服务设施;在社交网络中,可以帮助用户发现附近的其他用户;在物流配送中,可以优化路线规划。因此,掌握GeoHash算法对于从事地理信息系统(GIS...
Geohash是一种将地理坐标(经度和纬度)编码成可搜索的字符串的方法,这使得在数据库中存储和检索地理位置变得高效。它通过分层的二进制编码系统,将地球表面划分为多个网格,每个网格都有一个唯一的字符串表示。这...
在实际应用中,Geohash常用于地理信息系统(GIS)、社交网络的附近好友查找、物流配送路径规划等场景,因为它能够高效地处理和存储地理信息,且能简化空间查询操作。因此,了解并熟练掌握Python Geohash库的使用对于...
标题中的"python_geohash-0.8.5-cp39-cp39-win_amd64.whl.zip"表明这是一个与Python相关的压缩包,其中包含了一个名为"python_geohash-0.8.5-cp39-cp39-win_amd64.whl"的文件,这个文件是Python的轮子(wheel)格式...
总的来说,Geohash是解决计算附近距离和搜索附近商业点问题的强大工具,它通过将地理位置编码为字符串,实现了对空间位置的有效索引和快速查询,极大地简化了PHP开发者在地理位置应用处理上的工作。掌握并合理运用...
3. **邻接(Neighbours)**: 这个库可能还支持获取给定Geohash的相邻Geohash,这对于处理邻近位置或者进行范围搜索很有用。 4. **精度(Precision)**: 用户可能能够调整Geohash的长度,从而控制编码的精度。较短的...
- 范围查询:找出给定范围内的所有GeoHash,这对于实现地理位置附近的搜索非常有用。 - 邻居查询:找到与给定GeoHash相邻的其他GeoHash,这有助于处理边界情况和相邻区域的查找。 - 距离计算:根据GeoHash计算两个...
3. **范围查询(Range Query)**:通过一个GeoHash字符串,可以查找附近的其他GeoHash,以实现地理位置的邻近性查询。这对于地理数据索引和搜索非常有用。 4. **边界计算(Boundary Calculation)**:可以计算出一...
2. **邻近搜索**:利用Geohash的特性,可以快速找到与特定Geohash编码相邻的其他编码,从而找出附近的位置。这在构建地理索引和实现地理围栏时非常有用。 3. **精度控制**:Geohash的长度决定了其精度,更长的字符...
移动互联网,lbs可以说是一个基础应用,geohash对于解决附近地点搜索提供了一个有效的解决方案。扩展: 这个php扩展,提供了三个函数:/** * $latitude //纬度 * $longitude //经度 * $precision //...
6. **应用**:GeoHash常用于地图服务、位置数据分析、地理空间索引等领域,例如在社交媒体的位置分享、地理围栏设定、物流路径规划等场景中。 7. **安装和使用**:在Python环境中,用户可以通过`pip`安装Wheel文件...
在Laravel框架中集成Geohash,可以极大地优化处理地理位置相关的功能,比如地图服务、附近地点搜索、地理围栏等。开发者可以方便地将Geohash编码后的字符串存储在数据库中,而不是原始的经纬度值,这将简化空间查询...
在iOS开发中,地理定位是常见的需求之一,特别是在构建基于位置的应用时,如地图服务、导航、附近搜索或签到功能。"iOS Geohash.zip"这个压缩包可能包含了一个解决方案,即使用Geohash技术将经纬度转换为字符串,...
总之,GeoHash 是一种有效的地理坐标编码技术,它在 C++ 中的应用可以帮助开发者处理复杂的地理数据问题,如索引、查询和分析。通过深入理解 GeoHash 的原理和实现,可以提升你在地理信息系统(GIS)领域的开发能力...
Geohash编码是一种广泛应用在空间数据库中的地理编码技术,它将地球表面的经纬度坐标转换为一维的字符串,以此来提高空间查询的效率。在大数据和云计算的背景下,面对PB级别的空间数据,Geohash编码因其高效性和简洁...