Не удалось получить ограничивающую рамку Geohash

Я пытаюсь получить ограничительную рамку (координаты x, y) геохэшей, используя модуль геохеширования Python. Я могу успешно прочитать геохэши и получить их центр тяжести, но когда я пытаюсь использовать метод 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}

person DiamondJoe12    schedule 29.05.2019    source источник
comment
Какую библиотеку геохеширования вы используете? Мой поиск в Google дал как минимум два разных.   -  person Code-Apprentice    schedule 29.05.2019
comment
Пожалуйста, смотрите мой пересмотренный вопрос - я прочитал документацию.   -  person DiamondJoe12    schedule 29.05.2019
comment
Я думаю, вы путаете две разные библиотеки геохеширования. Вам нужно найти библиотеку с нужными функциями.   -  person Code-Apprentice    schedule 29.05.2019


Ответы (2)


но когда я пытаюсь использовать метод geohash.bbox(), он терпит неудачу

В вашем коде есть Geohash.bbox(), что не одно и то же.

Когда я использую geohash, а не Geohash, получается geohash is not defined.

Это потому, что у вас есть import Geohash. Возможно, вам нужно изменить это на import geohash вместо этого.

Мой поиск в Google по запросу «python geohash» показывает как минимум две библиотеки. Документация для одного показывает, что вам нужно сделать import Geohash, но в этой библиотеке, похоже, нет функции bbox(). В документации для второй библиотеки есть функция bbox(), но требуется import geohash. Я предлагаю вам выяснить, какую библиотеку вы используете, и внимательно изучить документацию для этой библиотеки, чтобы определить правильное использование.

person Code-Apprentice    schedule 29.05.2019
comment
это может быть python-geohash, который я не могу использовать в Python 2.7 (я использую PyCharm). Раздражающий . - person DiamondJoe12; 30.05.2019
comment
@ DiamondJoe12 возможно, это звучит не очень однозначно. Вам нужно определить, какая библиотека с гораздо большей уверенностью, чтобы использовать правильную документацию. Есть ли веская причина, по которой вы используете python 2.7? Я настоятельно рекомендую вам использовать Python 3.x. - person Code-Apprentice; 30.05.2019
comment
@DiamondJoe12 DiamondJoe12 Если вы на самом деле используете python-geohash, вам нужно сделать import geohash вместо import Geohash. Тогда geohash.bbox() будет работать. - person Code-Apprentice; 30.05.2019
comment
Нет, я говорю, что не могу установить python-geohash. Я разместил вопрос об этом здесь: получить ограничивающую рамку геохэша"> stackoverflow.com/questions/56367339/ - person DiamondJoe12; 30.05.2019
comment
@ DiamondJoe12 Итак, мы вернулись к моему первоначальному вопросу: какую библиотеку вы используете, которая вызывает ошибку, о которой вы здесь спрашиваете? - person Code-Apprentice; 30.05.2019

Вместо этого попробуйте 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)

Or

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.

person allesklarbeidir    schedule 27.08.2020
comment
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. – Из обзора - person Sergey Shubin; 27.08.2020