无法获取 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 的边界框的主要内容,如果未能解决你的问题,请参考以下文章

Geohash 边界框搜索

无法获取带有边界框的谷歌卫星图像

如何从 YOLOv5 预测中获取类和边界框坐标?

如何获取图像的边界框和底部边界框

如何获取边界框的坐标

如何从图像中获取随机边界框? (Python)