地理编码是法国的地址搜索引擎
Geocoding的Python项目详细描述
地理编码是法国的一个地址搜索引擎。与其他API不同,它使用法国政府提供的数据库(Base-Adresse Nationale-Ban)作为主要的信息源,对查询的数量没有任何限制。该项目的目的是满足依赖地理编码数据的法国数据科学家的需求。
开始
先决条件
- 本地安装的python版本3
- PIP在本地安装
使用目的
该软件包可以通过pip轻松安装:
pip install geocoding
在第一次使用之前,您需要下载ban数据库并处理其文件以解锁包的功能。所有这些都可以通过以下命令完成(整个过程需要30分钟):
geocoding update
或者,您可以使用以下命令逐步执行此操作:
geocoding download geocoding decompress geocoding index
要解锁反向搜索,请执行以下命令:
geocoding reverse
用法
搜索引擎
importgeocoding# -*- Complete search -*-output=geocoding.find('91120','Palaiseau','12, Bd des Maréchaux')print(output['longitude'],output['latitude'])# 2.2099342 48.7099138# -*- Incomplete search -*-output=geocoding.find('91120',None,'12, Bd des Maréchaux')print(output['quality'])# 1 -> It means that the search was successfuloutput=geocoding.find('91120',None,'Bd des Maréchaux')print(output['quality'])# 3 -> It means that the number was not foundoutput=geocoding.find('91120','Palaiseau',None)print(output['quality'])# 4 -> It means that the street was not foundoutput=geocoding.find(None,'Palaiseau','12, Bd des Maréchaux')print(output['quality'])# 1output=geocoding.find(None,None,'12, Bd des Maréchaux')print(output['postal']['code'])# 35800print(output['commune']['nom'])# DINARDprint(output['voie']['nom'])# BOULEVARD DES MARECHAUX# -*- Search with typos -*-geocoding.find('91120','Palaiseau','12, Bd des Maréchx')['quality']# 1geocoding.find('91120','Palaiau','12, Bd des Maréchx')['quality']# 1geocoding.find('91189','Palaiseau','12, Bd des Maréchx')['quality']# 1geocoding.find('91189',None,'12, Bd des Maréchx')['quality']# 1# -*- Flexible syntax -*-geocoding.find('91120','Palaiseau')['quality']# 4geocoding.find(commune='Palaiseau')['quality']# 4geocoding.find('91120')['quality']# 5args={'code_postal':'91120','commune':'Palaiseau','adresse':'12, Bd Marechaux'}geocoding.find(**args)
反向功能
importgeocoding# longitude and latitudequery=(2.2099,48.7099)output=geocoding.near(query)output['commune']['nom']# PALAISEAUoutput['voie']['nom']# BOULEVARD DES MARECHAUX
基准
importgeocodingbegin=time.time()for_inrange(2000):geocoding.find('91130','PALISEAU','12 BD DES MARECHUX')print(time.time()-begin,'seconds')# 1.063 secondsbegin=time.time()for_inrange(10000):geocoding.find('91120','PALAISEAU','12 BD DES MARECHAUX')print(time.time()-begin,'seconds')# 1.407 secondsbegin=time.time()for_inrange(10000):geocoding.find('75015','PARIS','1 RUE SAINT CHARLES')print(time.time()-begin,'seconds')# 1.525 secondsbegin=time.time()for_inrange(1000):geocoding.near((2,48))print(time.time()-begin,'seconds')# 0.922 seconds