跳转到主要内容

将GeoJSON转换为SQLite的CLI工具(可选SpatiaLite)

项目描述

geojson-to-sqlite

PyPI Changelog Tests License

将GeoJSON转换为SQLite的CLI工具(可选SpatiaLite)

RFC 7946:GeoJSON格式

如何安装

$ pip install geojson-to-sqlite

如何使用

您可以使用此工具针对GeoJSON文件,如下所示

$ geojson-to-sqlite my.db features features.geojson

这将将从features.geojson文件中加载所有要素到名为features的表中。

每一行将有一个包含要素几何形状的geometry列,以及为每个附在这些要素上的properties中找到的键创建的列。(要打包所有属性到一个单一的JSON对象中,请使用--properties标志。)

第一次运行命令时将创建表。

在后续运行中,您可以使用--alter选项添加任何缺失的列。

您可以传递多个GeoJSON文件,在这种情况下,所有文件的将内容插入到同一表中。

如果您的要素具有"id"属性,它将用作表的 主键。您还可以使用--pk=PROPERTY与不同属性的名称来使用该属性作为主键。如果您不希望使用"id"作为主键(可能包含重复值),您可以使用--pk ''来指定无主键。

指定主键也将允许您更新数据到行而不是插入新行。

如果没有指定主键,将使用SQLite的rowid列。

您可以使用-作为文件名从标准输入导入。例如

$ curl https://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_040_00_20m.json \
    | geojson-to-sqlite my.db states - --pk GEO_ID

与SpatiaLite一起使用

默认情况下,geometry列将包含JSON。

如果您已安装SQLite的SpatiaLite模块,则可以将几何形状导入到地理空间索引列中。

您可以使用--spatialite选项这样做,如下所示

$ geojson-to-sqlite my.db features features.geojson --spatialite

工具将在以下位置搜索SpatiaLite模块

  • /usr/lib/x86_64-linux-gnu/mod_spatialite.so
  • /usr/local/lib/mod_spatialite.dylib

如果您已将模块安装在其他位置,可以使用 --spatialite_mod=xxx 选项来指定位置

$ geojson-to-sqlite my.db features features.geojson \
    --spatialite_mod=/usr/lib/mod_spatialite.dylib

您可以使用 --spatial-index 选项在 geometry 列上创建 SpatiaLite 空间索引

$ geojson-to-sqlite my.db features features.geojson --spatial-index

使用此选项意味着 --spatialite,因此您不需要添加它。

流式传输大型数据集

对于大型数据集,考虑使用换行符分隔的 JSON 来流特征到数据库,而不必将整个特征集合加载到内存中。

例如,从 USGS 加载一天地震报告

$ geojson-to-sqlite quakes.db quakes tests/quakes.ndjson \
  --nl --pk=id --spatialite

当使用换行符分隔的 JSON 时,表也将从第一个特征创建,而不是基于前 100 个特征猜测类型。

如果您想使用数据集的更大子集来猜测列类型(例如,如果某些字段不一致),可以使用 fiona 将特征收集到一个单独的集合中。

$ head tests/quakes.ndjson | fio collect | \
  geojson-to-sqlite quakes.db quakes - --spatialite

这将从 tests/quakes.ndjson 中取出前 10 行,将它们传递给 fio collect,将其转换为单个特征集合,然后将它传递给 geojson-to-sqlite

与 Datasette 一起使用

使用此工具创建的数据库可以使用 Datasette 探索和发布。

Datasette 文档包括一个关于 如何使用它来浏览 SpatiaLite 数据库 的部分。

可以使用 datasette-leaflet-geojson 插件在 Leaflet 地图上可视化包含 GeoJSON 几何形状的列。

如果您使用 SpatiaLite,则需要将几何形状输出为 GeoJSON,以便该插件正常工作。您可以使用 SpaitaLite 的 AsGeoJSON() 函数完成此操作 - 例如:

select rowid, AsGeoJSON(geometry) from mytable limit 10

datasette-geojson-map 是一个替代插件,它将自动将 SpatiaLite 几何形状渲染为 Leaflet 地图,而无需您调用 AsGeoJSON(geometry)

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

geojson-to-sqlite-1.1.1.tar.gz (9.3 kB 查看哈希值)

上传时间

构建分布

geojson_to_sqlite-1.1.1-py3-none-any.whl (10.2 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面