6个版本
0.3.4 | 2024年7月24日 |
---|---|
0.3.3 | 2024年7月20日 |
0.2.0 | 2024年7月8日 |
在数据库接口中排名#105
每月下载量275次
1.5MB
871 行
PopGIS
将大量GeoJSON和ShapeFile快速插入PostGIS数据库的方法。
为什么?
将大型数据集导入PostGIS数据库可能需要很长时间,Popgis的目的是优化此类操作的性能。Popgis比ogr2ogr快2倍,特别是在与远程数据库的大文件输入时。虽然对于较小的数据集的性能提升可能很小,但对于大型数据集的效率提升是显著的。更多详细信息,请参阅基准测试部分。
安装
Cargo
如果您喜欢使用Cargo,可以通过运行Cargo install命令直接安装Popgis。
cargo install popgis
Homebrew
对于使用Homebrew的macOS用户,您可以通过添加适当的Homebrew tap来安装Popgis。
brew tap jjcfrancisco/popgis
brew install popgis
popgis --help
使用方法
以下是Popgis的可用命令和标志。
标志
input
(简写: -i
): 选择要插入PostGIS数据库的geojson或shapefile文件。
uri
(简写: -u
): 您要插入输入数据的PostGIS数据库。
schema
(简写: -s
): 指定表的位置。 可选。 默认为public。
table
(简写: -t
): 选择结果的表名。
srid
:选择4326(WGS84)或3857(Web Mercator)。 可选。 默认为4326。
mode
(简写: -m
):选择覆盖、追加或失败模式。更多信息请参阅此处。
示例
## GeoJSON -> PostGIS ##
popgis --input spain.geojson \
--uri postgresql://my_username:my_password@localhost:5432/my_database \
--schema osm \
--table waters \
--srid 3857
## ShapeFile -> PostGIS ##
popgis -i water_polygons.shp \
-u postgresql://my_username:my_password@localhost:5432/my_database \
-s osm \
-t waters
-m overwrite
模式
覆盖模式将删除与模式/表名相同的现有表,并将数据写入新表。追加模式仅向现有表插入新数据。失败模式确保如果表中已存在表,则作业将失败以防止数据丢失。
基准测试
尽管基准测试范围有限,但基准测试表明,Popgis比ogr2ogr快2倍。这一点在大文件中最为明显。
ShapeFile
文件大小 | popgis 耗时 |
ogr2ogr 执行 |
环境 |
---|---|---|---|
1.2GB | 36秒 | 1分15秒 | 本地 PostGIS |
1.2GB | 36分钟 | 1小时14分钟 | 虚拟机 (n2-standard-4) PostGIS |
本次测试使用的文件可以在这里找到。
GeoJSON
文件大小 | popgis 耗时 |
ogr2ogr 执行 |
环境 |
---|---|---|---|
103.9MB | 2秒 | 5秒 | 本地 PostGIS |
103.9MB | 2分14秒 | 5分钟 | 虚拟机 (n2-standard-4) PostGIS |
本次测试使用的文件可以在这里找到。
未来实现
以下列出了即将实现的功能。
- 从4326到3857(反之亦然)的项目。
- 允许嵌套GeoJSON属性。
- 降低GeoJSON文件的精度。
- 新的验证命令来验证文件。
- 合并不同类型的两列。
许可证
查看 LICENSE
依赖项
~16–26MB
~387K SLoC