地理编码是法国的地址搜索引擎

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在gridlayout中显示2D数组   java spring安全到spring oauth2   设置viewPager时出现java NullPointerException。setCurrentItem   java与Stage的区别是什么。setOnCloseRequest()和运行时。addShutdownHook()?   修复我的类名&Java中的一个方法   java幻数:检查幻数   JavaSpringMVC模拟存储库   jwt如何使用java获取令牌   安卓获得java。util。拉链ZipException:SimpleJavaMail的重复条目   如何使用ssl和证书通过Java向ldap(AD)进行呼叫?   java断言(false)不会停止执行   Websphere级别上的java Log4j为空   java内存不足错误?   java无法打开嵌套项“WEBINF/lib/example”。罐子   压缩的java文件显示为一行   java我应该在recyclerView中使用recyclerView,还是有更好的方法?   java soap web服务如何从xml请求中获取列表   在一起使用Java和Cygwin时需要一些帮助   java图形项目中缺少swing库