您的位置:首页 > 编程语言 > Python开发

geohash 模块安装及使用(Anaconda.Python 2)

2018-01-28 00:10 1511 查看

1 安装场景

在 anaconda多内核环境中,实现 由 经纬度 得到 geohash 编码 .

实现方式:

安装 Geohash 模块

安装方式

通过 命令行 安装

在 Anaconda Prompt 窗口中,通过 pip 或 conda 命令安装Geohash模块 .

通过 源代码 安装

下载tar包或者源代码,通过 setup.py 文件完整安装 .

安装方式详见:

用setup.py安装第三方 Python 包

主要版本:

Geohash 1.0

__init__.py:

from geohash import decode_exactly, decode, encode


mzgeohash(Mapzen Geohash推荐!)

__init__.py:

from geohash import encode, decode, adjacent, neighbors, neighborsfit


即,Geohash 模块中包含的的方法不同。前者较少,后者较多。

2 详细描述

文章主要记录在Anaconda Python 2 环境下,通过 geohash 完成编码的过程。具体为以下 4 方面:

安装 geohash、mzgeohash

解决并记录安装过程中遇到的问题

mzgeohash 使用

通过 unittest 执行测试用例

3 具体代码(已安装mzgeohash)

1 mzgeohash 使用说明

# ### mzgeohash
# - 调用方式
# - 实现原理

# ### list all member methods

# In[23]:

dir(mzgeohash)

# #### 经纬度 转换为 geohash

# In[2]:

mzgeohash.encode([139.76608408614993, 35.681382017210126])

# #### geohash 转换为 经纬度

# In[33]:

mzgeohash.decode('xn76urwe1g9y')

# #### 已知 geohash ,计算某一方向的临近geohash
# - 参数 1
#     - 已知 geohash 串
# - 参数 2
#     - 方向

# In[35]:

mzgeohash.adjacent('xn76urwe1g9y','n') #

# #### 已知 geohash ,临近geohash
# - 九宫格,即周围 8 个geohash

# In[34]:

mzgeohash.neighbors('xn76urwe1g9y')

# #### 已知 某位置点经纬度和周围经纬度点集,计算同属 geohash

# In[37]:

test_centroid = [-122.18472385000001, 37.7881345]
test_points = [
(-122.2992715, 37.9030588),
(-122.396742, 37.792976),
(-122.4474142, 37.72198087),
(-121.9764, 37.557355),
(-122.029095, 37.973737),
(-122.224274, 37.774963),
(-122.271604, 37.803664),
(-122.126871, 37.697185),
(-122.087967, 37.670399),
(-122.123801, 37.893394),
(-122.269029, 37.80787),
(-122.265609, 37.797484),
(-122.267227, 37.828415),
(-122.067423, 37.905628),
(-122.267227, 37.828415),
(-122.38666, 37.599787),
(-122.075567, 37.690754),
(-122.401407, 37.789256),
(-122.283451, 37.87404),
(-122.269029, 37.80787),
(-122.1837911, 37.87836087),
(-122.419694, 37.765062),
(-122.2945822, 37.80467476),
(-122.21244024, 37.71297174),
(-121.945154, 38.018914),
(-122.466233, 37.684638),
(-122.056013, 37.928403),
(-122.406857, 37.784991),
(-122.418466, 37.752254),
(-122.26978, 37.853024),
(-122.251793, 37.844601),
(-121.928099, 37.699759),
(-122.416038, 37.637753),
(-122.1613112, 37.72261921),
(-122.0575506, 37.63479954),
(-122.392612, 37.616035),
(-122.413756, 37.779528),
(-122.353165, 37.936887),
(-122.197273, 37.754006),
(-122.017867, 37.591208),
(-122.024597, 38.003275),
(-122.4690807, 37.70612055),
(-122.268045, 37.869867),
(-122.444116, 37.664174),
(-121.900367, 37.701695),
(-122.317269, 37.925655),
(-122.434092, 37.732921)
]

# expect = '9q9'
mzgeohash.neighborsfit(test_centroid, test_points)


mzgeohash 运行Demo



2 利用 unittest 建立 mzgeohash 测试用例并执行

# ### 使用unittest进行 mzgeohash 模块测试
# - 通过 testsuit 执行测试用例
# - TestCase:所有测试用例的基本类,给定测试方法的名称,返回测试用例实例;
# - TestSuit:组织测试用例的实例,支持测试用例的添加和删除,最终将传递给 testRunner进行测试执行;
# - TextTestRunner:进行测试用例执行的实例,其中Text的意思是以文本形式显示测试结果。
#     - 测试结果保存在 TextTestResult 实例中,包括运行多少测试用例,成功多少,失败多少等信息;

# In[6]:

import unittest
from mzgeohash.test_geohash import Test_encode_decode
from mzgeohash.test_geohash import Test_adjacent
from mzgeohash.test_geohash import Test_neighbors
from mzgeohash.test_geohash import Test_neighborsfit

# In[35]:

suite=unittest.TestSuite()
suite.addTest(Test_encode_decode('test_decode'))
suite.addTest(Test_encode_decode('test_encode'))
suite.addTest(Test_encode_decode('test_roundtrip'))
suite.addTest(Test_neighbors('test_neighbors'))
suite.addTest(Test_adjacent('test_adjacent'))
suite.addTest(Test_neighborsfit('test_neighborsfit'))

runner=unittest.TextTestRunner()
runner.run(suite);


unittest 建立测试用例并执行Demo



4 参考文章

mzgeohash(Mapzen Geohash) README.md, 推荐

python利用unittest进行测试用例执行的几种方式, 推荐

ImportError: No module named ‘geohash’

解压tar文件:Not found in archive

mzgeohash 基础应用By Python

5 总结

geohash 版本



mzgeohash 实现了开发中常用的(fang)方(bian)法,其他版本实现方法较少。如果读者发现更好的版本,欢迎留言 .

后续有机会进一步分析、总结实现原理 .

ipynb 脚本下载

mzgeohash github link
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息