我在文档中看到 pgeocde
(https:/pypi.orgprojectpgeocode),你首先要通过在 country code
来获取国家信息。然而,我找不到任何关于通过传递参数来获取国家信息的方法,例如 country name
或国家 zip code
. 我想知道这是否可能?
从文档中可以看出。
>>> import pgeocode
>>> nomi = pgeocode.Nominatim('fr')
>>> nomi.query_postal_code("75013")
postal_code 75013
country code FR
place_name Paris 13
state_name Île-de-France
state_code 11
county_name Paris
county_code 75
community_name Paris
community_code 751
latitude 48.8322
longitude 2.3561
accuracy 5
所以,不通过 fr
(这是一个 country code
)作为参数,是否有办法将 country name
或 zip code
为了获得国家信息?
这个库似乎没有任何功能可以从邮政编码开始并推导出国家代码。然而,你可以写一个函数来实现这个功能,通过循环所有支持的国家,看看哪些国家有一个邮政编码。postal_code
匹配的国家。要循环所有可能的国家,你可以引用 pgeocode.COUNTRIES_VALID
并为每个响应做一个字典之类的东西。
import pgeocode
dfs = {}
for i in pgeocode.COUNTRIES_VALID:
nomi = pgeocode.Nominatim(i)
# this code will always return a dataframe
# if the postal_code has no match, the df values will all be NaN
df = nomi.query_postal_code("75013")
dfs[i] = df
请注意,这种方法并不节省内存. 如果你看一下pgocode的源代码 (https:/github.comsymeriopgeocodeblobmasterpgeocode.py),你会发现你可能会通过索引底层数据和查询该索引来获得很多效率。),你会发现,通过对底层数据进行索引并查询该索引,你可能会获得很多效率。