无法获取Geohash的边界框

时间:2019-05-29 19:31:22

标签: python gis centroid geohashing

我正在尝试使用Python的geohash模块获取geohash的边界框(x,y坐标)。我能够成功读取地质哈希并获取其质心,但是当我尝试使用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

我能够成功打印经纬度对,但无法获得边界框。该文档说:

我得到的错误是:

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}

2 个答案:

答案 0 :(得分:0)

  

但是当我尝试使用geohash.bbox()方法时,它会失败

您的代码中有Geohash.bbox(),这是不一样的。

  

当我使用geohash而不是Geohash时,它说的是geohash is not defined

那是因为您有import Geohash。也许您需要将其更改为import geohash

我在Google搜索“ python geohash”时发现了至少两个库。其中一个的文档显示您需要执行import Geohash,但是此库似乎没有bbox()函数。第二个库的文档具有bbox()函数,但需要import geohash。建议您找出正在使用的库,并仔细查看该库的文档 ,以确定正确的用法。

答案 1 :(得分:-1)

请尝试使用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转换为形状多边形非常有用。