通过gdal加载PostGIS矢量数据

概述

本文主要简述通过GDAL的ogr2ogr工具导入矢量数据到PostGIS中。

软件环境

操作系统:centos

数据库:PostgreSQL 9.5.3/PostGIS 2.2.1

GDAL 2.1.1(确保gdal编译的支持postgis:windows下在nmake.opt中设置# PostGIS Libraries中对应的头文件和动态库;linux下configure时配置头文件和动态库)

导入工具ogr2ogr说明

GDAL是一个抽象的数据转换模型,支持常见的矢量、栅格数据格式,并且提供了查看数据、数据转换和数据处理等工具。这里主要用到矢量数据转换工具ogr2ogr(GDAL中ogr表示矢量数据)。将矢量数据导入postgis,其实就是将某种格式的矢量数据转换到postgis格式的矢量数据,所以对于特殊处理既要关注ogr2ogr的用法,还需要关注对应格式的一些注意事项。

ogr2ogr的说明,参考http://www.gdal.org/ogr2ogr.html

postgis支持两种形式:

PostgreSQL / PostGIS:http://www.gdal.org/drv_pg.html(直接导入到postgis中)

PostgreSQL SQL Dump:http://www.gdal.org/drv_pgdump.html(dump成postgis支持的SQL语句,执行完ogr2ogr后直接用psql -f执行SQL文件即可)

综合以上参考资料,以下主要列出常用的需要注意的点:

1.中文路径有问题,这个可以搜索GDAL支持中文路径,网上很容易找到解决方案;

2.中文编码。对于导入矢量属性数据为中文编码的数据,需要设置客户端变量SET PGCLIENTENCODING=GBK,并且配置shape编码(--config SHAPE_ENCODING GBK);

3.insert模式和copy模式:很显然insert模式支持事务,支持导入错误后继续等特性,但是速度上比copy慢很多(--config PG_USE_COPY YES,默认是insert);


导入示例

ogr2ogr --config PG_USE_COPY YES --config SHAPE_ENCODING GBK -progress -update -append -f PostgreSQL -gt -1 -nln res_ogr "PG:dbname=sdb user=postgres password=postgres" D:\Data\geometry\res1_4m.shp

你可能感兴趣的:(PostGIS)