矢量空间数据(GDB)导入Postgresql数据库

背景描述

项目上存在一些矢量空间数据是GDB格式的,需要将其入库,而数据库是postgresql。

前提条件

postgresql上已安装postgis,且启用了相关插件;你的电脑安装了ogr2ogr程序(一般安装了GDAL、QGIS等软件程序都有这玩意,后续以QGIS为例)。

步骤

1、打开OSGeo4W Shell,安装了QGIS就有这个。(装了GDAL的可直接打开cmd)
在这里插入图片描述
在这里插入图片描述
2、导入命令如下:

ogr2ogr -f "PostgreSQL" PG:"host=localhost port=5432 user=postgres password=1234 dbname=gis active_schema=sde" E:/dachu/s0425.gdb -lco GEOMETRY_NAME=geom -overwrite -progress -nlt POLYGON --config PG_USE_COPY YES --config SHAPE_ENCODING "UTF-8" 

//说明
//ogr2ogr  导入GDB所用到的程序名,如果是在CMD中调用GDAL的ogr2ogr
需要带路径,如D:/GDAL/ogr2ogr.exe
//-f  导入目标的数据格式,这里固定是"PostgreSQL"
//PG  标识连接参数信息,分别为从左到右分别为,数据库服务器ip,数据库端口
用户名和密码,目标数据库,目标schema名称。
//后续的E:/daochu/......为本地gdb文件
//-lco 这个忘了是啥意思,建议上网查查
//GEOMETRY_NAME 表示指定存放空间信息的字段的名称,比如这里geom就表示,入库后数据的空间字段名是geom,如果后续的应用对空间字段名有要求,则可在此指定。
//-overwrite 表示覆盖同名表,提醒一下,入库后数据库表名跟GDB文件名是保持一致的。
//-progress 表示让程序输出数据导入的进度
//-nlt 为入库矢量空间数据的图形类型,是点、线、面中的哪种。
//--config 设定一些入库的其他设置,比如SHAPE_ENCODING 设定入库数据使用什么字符集。

3、最后等待入库完毕,检查数据有无问题即可。

4、补充:
按照上述命令导入有可能会报一下错误:
在这里插入图片描述
具体解决方法可以把参数中的dbname移到user前面,即
ogr2ogr.exe -f “PostgreSQL” PG:"host=localhost port=5432 dbname=mydb user=postgres…后面省略若干代码,参考。具体什么原理暂时不清楚,个人猜测有可能是gdal版本或者postgresql版本更新引起的。

5.当gdb中存在多个图层,但仅需要导入其中的某几个时,上述代码只需要在gbd文件后面指定你选中导入的图层名称即可。

 D:\gdxzq\test1.gdb shengjie shijie  
 //shengjie shijie 是我在test1.gdb里放的图层
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值