无法获取 Geohash 的边界框
Posted
技术标签:
【中文标题】无法获取 Geohash 的边界框【英文标题】:Unable to get bounding box of Geohash 【发布时间】:2019-05-29 19:31:22 【问题描述】:我正在尝试使用 Python 的 geohash 模块获取 geohash 的边界框(x,y 坐标)。我能够成功读取 geohashes 并获取它们的质心,但是当我尝试使用 geohash.bbox()
方法时,它失败了。代码如下:
#import modules
import Geohash
import csv
dataArray = []
with open('C:\Users\Desktop\data.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
geoHash = row[0] # this is the geohash identifier
trips = row[1]
share_of_trips = row[2]
time_ID = row[3]
perc_trips = row[4]
geoStr = str(geoHash)
latLong = Geohash.decode_exactly(geoStr)
# Get Bounding Box
boundingBox = Geohash.bbox(geoStr)
print boundingBox
我能够成功打印 lat long 对,但无法获取边界框。文档说:
我得到的错误是:
AttributeError: 'module' object has no attribute 'bbox'
当我使用 geohash
而不是 Geohash
时,它会显示 geohash is not defined.
有什么想法吗?先感谢您。我已阅读文档:
geohash.bbox(hashcode) geohash 哈希码的边界框。此方法返回一个字典,键为“s”、“e”、“w”和“n”,分别表示南、东、西和北。
>>> geohash.bbox('ezs42')
's': 42.5830078125, 'e': -5.5810546875, 'w': -5.625, 'n': 42.626953125
【问题讨论】:
您使用的是哪个地理哈希库?我的谷歌搜索至少有两个不同的。 请查看我修改后的问题 - 我已阅读文档。 我认为您混淆了两个不同的地理哈希库。您需要找到具有所需功能的库。 【参考方案1】:但是当我尝试使用
geohash.bbox()
方法时,它失败了
你的代码有Geohash.bbox()
,这不是一回事。
当我使用
geohash
而不是Geohash
时,它会显示geohash is not defined
。
那是因为你有import Geohash
。也许您需要将其更改为 import geohash
。
我的谷歌搜索“python geohash”至少出现了两个库。 one 的文档显示您需要执行import Geohash
,但该库似乎没有bbox()
函数。第二个库的文档有一个bbox()
函数,但需要import geohash
。我建议您弄清楚您正在使用哪个库,并仔细查看该库的文档,以确定正确的用法。
【讨论】:
它可能是 python-geohash,我无法在 Python 2.7 中使用它(我正在运行 PyCharm)。令人沮丧。 @DiamondJoe12 “它可能是”听起来不是很确定。为了使用正确的文档,您需要更确定地确定哪个库。您使用 python 2.7 有充分的理由吗?我强烈建议您使用 Python 3.x。 @DiamondJoe12 如果您实际上使用的是 python-geohash,那么您需要使用import geohash
而不是 import Geohash
。然后geohash.bbox()
就可以了。
不,我是说我无法安装 python-geohash。我在这里发布了一个关于此的问题:***.com/questions/56367339/…
@DiamondJoe12 所以我们回到我最初的问题:您使用的是哪个库导致您在这里询问的错误?【参考方案2】:
改用https://github.com/bashhike/libgeohash。看起来比你提到的那些库还要好。
这里有一些例子:
import libgeohash as gh
shapleypolygon = gh.geohash_to_polygon(["u1q"])
bounds = shapleypolygon.bounds
print(bounds)
输出:
(8.4375, 52.03125, 9.84375, 53.4375)
或者
import libgeohash as gh
bbox = gh.bbox("u1q")
print(bbox)
输出:
'n': 53.4375, 's': 52.03125, 'w': 8.4375, 'e': 9.84375
我发现使用 geohash_to_polygon
方法将 geohash 转换为有形状的多边形非常有用。
【讨论】:
以上是关于无法获取 Geohash 的边界框的主要内容,如果未能解决你的问题,请参考以下文章