将GeoJSON转换为SQLite的CLI工具(可选SpatiaLite)
项目描述
geojson-to-sqlite
将GeoJSON转换为SQLite的CLI工具(可选SpatiaLite)
如何安装
$ 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c35611fe30e7dc01bb1823de7039653846a377b56db98313bc51c1b44089aec5 |
|
MD5 | e240a45809047960d1f82531e8c04e64 |
|
BLAKE2b-256 | 644decf1eb4b5372341d9a41f2af050f06eefd614d9488789251f1f110e1fcad |