SQLite表中的地理代码行

geocode-sqlite的Python项目详细描述


地理代码sqlite

PyPIChangelogTestsLicense

SQLite表中的地理代码行

安装

使用pippipx安装此工具:

# install inside a virtualenv
pip install geocode-sqlite

# install globally
pipx install geocode-sqlite

使用

假设您有一个包含地址的电子表格,并且您希望映射这些位置。 首先,创建一个SQLite数据库,并使用sqlite-utils从该电子表格中插入行。在

^{pr2}$

现在,使用OpenStreetMap的命名地理编码器对它进行地理编码。在

geocode-sqlite
 --location="{address}, {city}, {state} {zip}"\
 --delay=1\
 data.db data \
 nominatum  \
 --user-agent="this-is-me"

在上面的命令中,您使用的是Nominatum,它是免费的,只要求一个唯一的用户代理。在

这将连接到一个数据库(data.db),并从表data读取所有行(跳过任何已经执行的行) 同时填充latitudelongitude列)。在

您还将告诉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位置的结果。在

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

推荐PyPI第三方库


热门话题
java ldap连接池超时属性未按预期工作   java Eclipse Google插件不会为web应用程序启动服务器   将工作应用程序从一台pc复制到另一台pc的java安全   安卓如何查找和调试实际代码行中的Java错误:致命异常:Java。lang.IndexOutOfBoundsException:   jms将应用程序Java连接到websphere MQ   java如何遍历对象列表并分配子对象?   java我的代码有什么问题吗?为什么压缩和解压缩速度比其他应用程序慢?   java表达式的类型必须是数组类型,但它被解析为Object   模拟协议socketjava   使用googleappengine的java缓存   java为什么对象引用父类的值而不是它被分配到的类?   删除位置华为工具包安卓 studio时发生java错误   unix执行远程ssh命令“which java”(JSch java)   Dropbox Djinni Java接口与类扩展   java条形码扫描完成后是否有事件?   安卓 GCM Java服务器:发送带有重音字符的消息   java使用PDF框从PDF中读取条形码   私有静态最终更改的java值