ogr2ogr 导入 Shp 到PostGIS空间数据库

0 阅读3分钟

前言

ogr2ogr属于GDAL库的一部分,是一款功能强大的开源命令行工具,主要用于处理和转换地理空间数据。它支持多种矢量数据格式转换,包括 ESRI Shapefile、GeoJSON、KML、GML、PostgreSQL/PostGIS、GeoPackage 等,是地理信息系统 (GIS) 数据处理的必备工具。

本文主要介绍如何利用ogr2ogrShapefile文件导入到PostGIS空间数据库。

1. 安装 ogr2ogr

  • 方式1:通过PostGIS集成

通过Application Stack Builder或者下载单独的PostGIS包进行安装。在安装PostGIS过程中,请勾选上以下图片红色方框内复选框,下载GDAL相关依赖,包括ogr2ogr命令行工具。PostGIS安装完成之后请为目标数据库创建空间拓展

如下是集成在PostgreSQLogr2ogr命令行工具,可以在安装路径的bin目录中找到。

注:此方式在PG13中本地测试失败

  • 方式2:下载QGIS

ogr2ogr作为包含在QGIS中的一部分进行下载:[https://qgis.org/download/](https://qgis.org/download/)可在OSGeo4W Shell命令行执行导入语句。

2. ogr2ogr 选项参数

基本语法:

ogr2ogr 【options】【destination location】【source location】

下面以ogr2ogr常用参数为例进行介绍

ogr2ogr -f PostgreSQL PG:"dbname=geodata host=127.0.0.1 user=postgres port=5432 password=123456" C:\Users\hasee\Desktop\region\province.shp -nln province -nlt MULTIPOLYGON -lco GEOMETRY_NAME=geom -lco FID=gid -lco SPATIAL_INDEX=GIST

  • ogr2ogr

可执行文件名称。根据需要设置,可以将可执行文件添加到PATH中,也可以使用可执行文件的完整路径。

  • -nln

nln选项表示新图层名称"new layer name",即在目标数据库中要创建的表名。

  • -nlt

nlt选项表示新图层类型"new layer type"。特别是对于Shapfile文件的输入,新的图层类型通常是"multi-part geometry",因此需要提前告知系统使用"MultiPolygon"而不是"Polygon"作为几何体类型。

  • -lco

lco选项表示图层创建选项"layer create option"。不同的驱动程序有不同的创建选项,这里显示PostgreSQL驱动程序选项。

  • GEOMETRY_NAME:设置几何图形列的列名。为了与数据库中几何字段标准名称相对应,可以使用"geom"
  • FID: 设置主键列名。为了与数据库准名称相对应,可以使用"gid"
  • PRECISION: 控制数字字段在数据库中的表示方式。加载Shapefile文件时的默认值是使用数据库"数字"类型,这比"整数"和"双精度"等简单数字类型更精确,但有时更难使用。使用"NO"来关闭"数字"类型。

可通过在命令行中输入ogr2ogr --help查看完整选项参数

3. ogr2ogr 使用示例

首先在命令行窗口中执行以下命令:ogr2ogr --formats | findstr /i "PostgreSQL"

检测是否具有PostreSQL驱动,如果输出下图红色方框内容,则可以正常使用。

而我在PostgreSQL安装路径bin目录下执行该语句输出缺少PostreSQL驱动,所以不能将Shp数据导入到PostGIS空间数据库。

OSGeo4W Shell命令行执行以下语句可将Shp数据导入到PostGIS目标数据库。

ogr2ogr -f PostgreSQL PG:"dbname=geodata host=127.0.0.1 user=postgres port=5432 password=123456" C:\Users\hasee\Desktop\region\province.shp -nln province -nlt MULTIPOLYGON -lco GEOMETRY_NAME=geom -lco FID=gid -lco SPATIAL_INDEX=GIST

数据表如下。

4. 参考链接

  • PostGIS Loading Spatial Data:https://postgis.net/workshops/postgis-intro/loading_data.html
  • PostgreSQL/PostGIS GDAL Documention:https://gdal.org/en/stable/drivers/vector/pg.html

OpenLayers示例数据下载,请回复关键字:ol数据

全国信息化工程师-GIS 应用水平考试资料,请回复关键字:GIS考试

GIS之路】 已经接入了智能助手,欢迎关注,欢迎提问。

欢迎访问我的博客网站-长谈GIShttp://shanhaitalk.com

都看到这了,不要忘记点赞、收藏 + 关注

本号不定时更新有关 GIS开发 相关内容,欢迎关注 !