如何在 python 上从经度和纬度获取邮政编码?

Posted

技术标签:

【中文标题】如何在 python 上从经度和纬度获取邮政编码?【英文标题】:How do I get zipcodes from longitude and latitude on python? 【发布时间】:2021-02-10 20:20:29 【问题描述】:

我在这个 CSV 文件上有一个经纬度坐标的数据框:Longlat。

我使用此代码尝试获取邮政编码:

import copy

def get_zipcode(df, geolocator, lat_field, lon_field):
    location = geolocator.reverse((df[lat_field], df[lon_field]))
    return location.raw['address']['postcode']


geolocator = geopy.Nominatim(user_agent='myusername') #My OpenMap username

zipcodes = longlat.apply(get_zipcode, axis=1, geolocator=geolocator, lat_field=longlat['LATITUDE_X'], lon_field=longlat['LONGITUDE_X'])

我得到了错误:

KeyError
"None of [Float64Index([39.0962320000896, 39.1462010000896, 39.1347670000896,\n 39.1076250000897, 39.0928490000897, 39.1648900000896,\n 39.1846440000895, 39.0970790000897, 39.1491220000896,\n 39.1145560000896,\n ...\n 39.1039560000896,

我该如何解决?

【问题讨论】:

【参考方案1】:
import geopy
import pandas as pd

longlat = pd.read_csv("longlat.csv",encoding = 'utf-8', sep = '\t')
geolocator = geopy.Nominatim(user_agent="check_1")

def get_zip_code(x):
    location = geolocator.reverse(", ".format(x['LATITUDE_X'],x['LONGITUDE_X']))
    return location.raw['address']['postcode']
longlat['zipcode'] = longlat.head().apply(lambda x: get_zip_code(x), axis = 1)
print(longlat.head())
   Unnamed: 0  LATITUDE_X  LONGITUDE_X     zipcode
0      124148   39.096232   -84.653337  45233-4555
1      124209   39.146201   -84.468843       45207
2      125298   39.134767   -84.499079       45267
3      125299   39.107625   -84.496675       45202
4      125390   39.092849   -84.388332       45230

【讨论】:

以上是关于如何在 python 上从经度和纬度获取邮政编码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOs 中使用 CLGeoCoder 使用邮政编码/邮政编码获取纬度经度?

使用前向地理编码获取iOS中许多地址的纬度和经度时如何添加延迟?

如何在sql server中通过给定的邮政编码和以英里为单位的半径从附近的表中获取所有其他邮政编码或(纬度和经度)?

从纬度,经度获取邮政编码

从地理编码纬度和经度获取地址

如何在python中获取经度和纬度的位置?