Обратное геокодирование (без Google API); для почтовых индексов - PullRequest
0 голосов
/ 20 февраля 2020

Код для преобразования геокода 'широта' и 'долгота' в почтовые индексы в США; первоначально использовался для определения почтовых индексов инцидентов со стрельбой в Нью-Йорке C.

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Вот еще одно решение (включая закомментированный код): https://medium.com/@moritz.kittler / когда-либо боролись с обратным геокодированием-36fe948ad5a3

0 голосов
/ 20 февраля 2020

Пример вывода:

    lat         lon         zipcode
0   40.896504   -73.859042  10470
1   40.732804   -74.005666  10014
2   40.674142   -73.936206  11213
3   40.648025   -73.904011  11236
4   40.764694   -73.914348  11103
... ... ... ...
20654   40.710989   -73.942949  11211
20655   40.682398   -73.840079  11416
20656   40.651014   -73.945707  11226
20657   40.835990   -73.916276  10452
20658   40.857771   -73.894606  10458

Загрузка набора данных (не требуется):

#load used dataset
df_shooting = pd.read_csv('Shooting_NY.csv',sep=';',low_memory=False)

Код для обратного геокодирования:

pip install uszipcode

# Import packages
from uszipcode import SearchEngine
search = SearchEngine(simple_zipcode=True)
from uszipcode import Zipcode
import numpy as np

#define zipcode search function
def get_zipcode(lat, lon):
    result = search.by_coordinates(lat = lat, lng = lon, returns = 1)
    return result[0].zipcode

#load columns from dataframe
lat = df_shooting['Latitude']
lon = df_shooting['Longitude']

#define latitude/longitude for function
df = pd.DataFrame({'lat':lat, 'lon':lon})

#add new column with generated zip-code
df['zipcode'] = df.apply(lambda x: get_zipcode(x.lat,x.lon), axis=1)

#print result
print(df)

#(optional) save as csv
#df.to_csv(r'zip_codes.csv')

Помните о длительное время работы (20 тысяч строк = 5-7 минут). Однако наиболее эффективный код нам удалось выяснить без использования (платного) API Google.

...