前言
❝
ogr2ogr
属于GDAL
库的一部分,是一款功能强大的开源命令行工具,主要用于处理和转换地理空间数据。它支持多种矢量数据格式转换,包括 ESRI Shapefile、GeoJSON、KML、GML、PostgreSQL/PostGIS、GeoPackage 等,是地理信息系统 (GIS) 数据处理的必备工具。
本文主要介绍如何利用ogr2ogr
将Shapefile
文件导入到PostGIS
空间数据库。
1. 安装 ogr2ogr
- 方式1:通过
PostGIS
集成
通过Application Stack Builder
或者下载单独的PostGIS
包进行安装。在安装
PostGIS
过程中,请勾选上以下图片红色方框内复选框,下载GDAL
相关依赖,包括ogr2ogr
命令行工具。PostGIS
安装完成之后请为目标数据库创建空间拓展。
如下是集成在PostgreSQL
中ogr2ogr
命令行工具,可以在安装路径的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之路】 已经接入了智能助手,欢迎关注,欢迎提问。
欢迎访问我的博客网站-长谈GIS:
http://shanhaitalk.com
都看到这了,不要忘记点赞、收藏 + 关注 哦 !
本号不定时更新有关 GIS开发 相关内容,欢迎关注 !