PostGIS:使用shp2pgsql、pgsql2shp、OGR2OGR函数进行数据导入、导出

数据导入与导出函数

数据库数据导入与导出可以通过多个函数完成,QGIS文档介绍了3个函数: shp2pgsqlpgsql2shpOGR2OGR,分别用于shp导入数据库、数据库文件导出为shp、数据转换为多种数据格式。

(1)shp2pgsql

在linux语法如下所示,其中:-s <SRID>指定空间参考系统标识符(SRID),-c表示将根据 Shapefile 的结构在数据库中创建一个新表,-D是一种更紧凑的 SQL 表示方式来存储数据,-I是在创建的新表上创建空间索引,<schema>.<table>指定了将 Shapefile 数据存储在 PostgreSQL 数据库中的模式和表名;然后将shp2pgsql的输出作为 psql 的输入,在psql中制定了数据库名称、主机名或者IP、用户名信息。

sql 复制代码
shp2pgsql -s <SRID> -c -D -I <path of shapefile> <schema>.<table> | \
psql -d <databasename> -h <hostname> -U <username> 

在window系统下需要分两步执行,代码参考如下:

sql 复制代码
shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> > import.sql
psql psql -d <databasename> -h <hostname> -U <username> -f import.sql 
(2)pgsql2shp

pgsql2shp语法参考如下,

sql 复制代码
pgsql2shp -f <新的shp文件路径> -g <几何列名称> \
-h <主机名> -U <用户名> <数据库名称> <表名 | 视图名> 

此外,可以使用查询语句,这里的 "<查询>"指定要执行的 SQL 查询,查询结果将被导出为 Shapefile。

sql 复制代码
pgsql2shp -f <新的 Shapefile 路径> -g <几何列名称> \
-h <主机名> -U <用户名> "<查询>"
(3)OGR2OGR

ogr2ogr 是 GDAL 库的一部分,支持多种数据格式,包括但不限于 Shapefile、GML、GeoJSON、SQLite 等。在使用GDAL之前,可以使用gdalinfo --version查看是否安装了GDAL。官网具有详细的教程:https://gdal.org/en/stable/programs/ogr2ogr.html。

这个函数在之前也学习分享过,链接为:GDAL:矢量数据提取-转换-加载(ETL)过程 https://mp.weixin.qq.com/s/9mqrb2Ze0wHKpMA-LixcZA?token=1828476271\&lang=zh_CN。在这个分享中,介绍了使用`ogr2ogr` 结合WHERE语句提取子集、使用CAST() 更改列的数据类型、重命名、SCV转SHP。

此外,QGIS文档中介绍了将表从 PostGIS 导出到 GML,它在这里指定了-f 参数,这个参数用来指定输出的格式。但我们可以省略这个参数,因此GDAL会根据拓展名来推断出要导出的格式。

sql 复制代码
ogr2ogr -f GML export.gml PG:'dbname=<databasename> user=<username>
        host=<hostname>' <Name of PostGIS-Table>
#转shp
ogr2ogr 输出Shapefile.shp PG:"dbname='<databasename>' user='<username>' host='<hostname>'" <表名或视图名> 
相关推荐
xiep14383335102 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd
Java小白程序员2 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
老虎06273 小时前
数据库基础—SQL语句总结及在开发时
数据库·sql·oracle
爱掘金的土拨鼠4 小时前
国产化dm数据库锁表解锁
数据库
庖丁解java5 小时前
N个Utils
数据库
Mr. zhihao5 小时前
SQL LEFT JOIN 与 WHERE 条件的隐藏坑
数据库·sql
2301_793086875 小时前
Redis 04 Reactor
数据库·redis·缓存
Sais_Z6 小时前
ClickHouse的学习与了解
数据库·clickhouse
代码的余温6 小时前
MySQL性能优化:10个关键参数调整指南
数据库·mysql·性能优化
silver98867 小时前
sql链接的url中serverTimezone的作用
数据库·sql