SQLite表中的地理代码行
geocode-sqlite的Python项目详细描述
地理代码sqlite
SQLite表中的地理代码行
安装
使用pip
或pipx
安装此工具:
# install inside a virtualenv pip install geocode-sqlite # install globally pipx install geocode-sqlite
使用
假设您有一个包含地址的电子表格,并且您希望映射这些位置。
首先,创建一个SQLite数据库,并使用sqlite-utils
从该电子表格中插入行。在
现在,使用OpenStreetMap的命名地理编码器对它进行地理编码。在
geocode-sqlite --location="{address}, {city}, {state} {zip}"\ --delay=1\ data.db data \ nominatum \ --user-agent="this-is-me"
在上面的命令中,您使用的是Nominatum,它是免费的,只要求一个唯一的用户代理。在
这将连接到一个数据库(data.db
),并从表data
读取所有行(跳过任何已经执行的行)
同时填充latitude
和longitude
列)。在
您还将告诉geocoder如何使用Python的 内置字符串格式,并设置每秒一个请求的速率限制。在
对于地理编码成功的每一行,latitude
和{
注意选项的顺序:我们需要传递两组选项。在
第一个问题是我们正在进行地理编码的数据。我们需要说明数据库的位置和使用的表,以及如何提取位置查询(可选)。在
然后,我们需要说明我们使用的地理编码器,并传入初始化它所需的任何选项。对于我们要使用的每个地理编码器,这将是不同的。在
在引擎盖下,这个软件包使用了优秀的geopy库,这是稳定的和彻底的道路测试。如果您需要帮助了解特定地理编码器的选项,请咨询geopy's documentation。在
支持的地理编码器
CLI当前支持以下地理编码器:
bing
googlev3
mapquest
(和open-mapquest
)nominatum
不久将添加更多内容。在
Python API
命令行界面旨在支持每个geocoder的最常用选项。要获得更多的find grained控制,请使用pythonapi。在
与CLI一样,这假设您已经有一个SQLite数据库和一个位置数据表。在
fromgeocode_sqliteimportgeocode_tablefromgeopy.geocodersimportNominatum# create a geocoder instance, with some extra optionsnominatum=Nominatum(user_agent="this-is-me",domain="nominatum.local.dev",scheme="http")# assuming our database is in the same directorycount=geocode_sqlite("data.db","data",query_template="{address}, {city}, {state}{zip}")# when it's doneprint(f"Geocoded {count} rows")
任何geopy geocoder都可以与Python API一起使用。在
发展
要对这个工具有所贡献,首先签出代码。然后创建一个新的虚拟环境:
cd geocode-sqlite python -m venv venv source venv/bin/activate
或者如果您正在使用pipenv
:
pipenv shell
现在安装依赖项和测试:
pip install -e '.[test]'
要运行测试:
pytest
请记住,这个库主要是其他经过良好测试的项目之间的粘合代码,特别是:click、geopy和sqlite utils。测试的重点应该是确保这些部件正确地装配在一起。我们可以假设零件本身已经工作了。在
为此,有一个测试geocoder包括:geocode_sqlite.testing.DummyGeocoder
。geocoder使用由AllThePlaces提供的一个包含的汉堡位置的数据集。它的工作原理与普通的geocoder类似,但它只返回使用包含的数据库的In-N-Out位置的结果。在
- 项目
标签: