PostGIS数据库搭建与gdb数据导入
PostGIS数据库
- PostGIS数据库搭建
- 一、PostGIS安装
- 1.1 PostgreSQL安装
- 1.2 PostGIS安装
- 1.3 PgAdmin
- 二、一键导入.gdb数据
- 2.1 OSGeo4w安装GDAL
- 2.2 验证安装
- 2.3 一键导入
- 三、QGIS连接PostGIS数据库
- 四、常见问题
- 4.1 OSGeo4w换源
- 4.2 一键导入报错
PostGIS数据库搭建
暑期接了一个实习的活,主要是关于QGIS这个软件的一些功能开发(说是开发其实是批处理)。不过得先会走才能跑,这个软件本身还没搞明白就想着开发是不行的。同事发来了一些gdb格式的样例数据直接就给我整蒙了,google了一番之后有了这篇博客,我将叙述如何将gdb格式的数据导入PostGIS数据库,然后在QGIS中连接。
一、PostGIS安装
1.1 PostgreSQL安装
PostGIS是PostgreSQL的一个插件,因此我们需要首先配置PostgreSQL环境。进入下载地址,查找对应自己系统的版本进行安装即可,注意要设置管理员用户密码。
1.2 PostGIS安装
安装完PostgreSQL后,会提示运行Stack Builder。这个工具可以安装PostGIS,但是它使用的下载源速度很慢,挂梯子可以解决这个问题,但更好的选择是去官网直接下载。
手动安装的过程中,首先要注意安装路径,必须是PostgreSQL的根目录。其次在设置安装组件时,最好选择“Create spatial database”,建立一个模板,以便之后我们据此创建数据库,当然这不是必须的。
1.3 PgAdmin
pgAdmin是PostgreSQl的图形化管理工具,win+s搜索后即会开启服务,并在浏览器中打开可视化界面。
开启服务会要求输入管理员密码,第一次打开数据库(Servers)也会要求输入密码。初次使用时可能是英文界面,我们可以在:File-Preference-Miscellaneous-Language中修改为Chinese。
点击Servers-数据库,可以看到一个默认的postgres数据库,架构(schema)中就是常见的关系数据库中的一些属性。一般情况下我们对默认数据库不感兴趣,所以右键点击数据库,可以新建一个:
成功创建数据库之后,我们点击架构-public,然后点击查询工具:
在右侧出现的查询编辑器中输入下列语句:
CREATE EXTENSION postgis; # 启用postgis插件SELECT postgis_full_version(); # 用来检查是否安装了postgis
如果输出了PostGIS的版本,那么我们就成功的为这个数据库开启了postGIS扩展,至此PostGIS的安装就完成了。
二、一键导入.gdb数据
2.1 OSGeo4w安装GDAL
gdb是arcGIS的专有空间数据库格式,postGIS本身是不支持的,这里我们使用一个辅助软件,OSGeo4W中的GDAL来完成一键导入的功能。OSGeo4w是一系列GIS工具的集合。实际上,我强烈推荐用OSGeo4W来完成QGIS的全套安装,否则后续配置环境变量是一个非常痛苦的过程,如果你已经用QGIS独立安装包安装了,那么看我之后的博客有解决环境变量的办法。
OSGeo4W的官网只提供了在线安装器的下载,这个安装器中提供了4个默认的下载源,但是速度都非常慢,因此必须要挂代理进行下载,这里我给出挂梯子的流程:
我们首次安装需要选择第一个,Express Desktop Install,但是由于我们需要先挂代理,所以选择Advanced Install进行设置。点击下一步后,选择Install from Internet,然后是选择安装路径和安装用户,再下一步是选择下载的临时存储地址,再下一步就是我们设置代理的地方了,启用HTTP代理后,不断上一步直到回到上图界面,选择Express Desktop Install,下一步。
我们这里只需要安装GDAL,跟着流程安装完成,然后我们再次打开安装器,因为GDAL默认是不安装gdb的驱动的。这次我们选择Advanced Install,一直到下图位置:
搜索GDAL,并在Libs中勾选标红的gdb driver,安装即可。
2.2 验证安装
win+s打开OSGeo4w Shell,然后输入:ogrinfo --formats
如果返回结果中有上图标红的FileGDB,则证明安装成功
2.3 一键导入
确保在pgAdmin中建立了新的数据库,并且启用了postgis插件后,在OSGeo4W Shell中输入以下语句:
ogr2ogr -f "PostgreSQL" PG:"host=localhost port=5432 user=postgres password=xxx dbname=yyy" D:/data/geodata.gdb -overwrite -progress --config PG_USE_COPY YES
其中xxx为管理员密码,yyy为数据库名称,gdb文件夹的路径需根据实际情况修改。后面加入的三个参数意义如下:
-overwrite 表示会覆盖已经存在的记录
-progress 表示显示进度
–config PG_USE_COPY YES 将极大改善导入速度
三、QGIS连接PostGIS数据库
打开QGIS后,在Browser中找到PostGIS,右键新建连接。在弹出的对话框中输入数据库的相应配置即可:
四、常见问题
4.1 OSGeo4w换源
即使挂了梯子,在线安装过程的速度也可能比较慢,软件自身提供的4个源中,推荐使用第二个:http://download.osgeo.org,或者使用国内的镜像源,但如果误选了其他源而对其速度不满意,那么我们只需要在进行到Agreement协议打勾这一步时,按上一步,即可重新选择源。
4.2 一键导入报错
如果执行一键导入的代码之后,有如下提示:
function addgeometrycolumn does not exist
则说明目标数据库没有启用PostGIS,或者PostGIS的安装不完整。请在建立数据库时务必启用postGIS插件。
PostGIS数据库搭建与gdb数据导入相关推荐
- Python全栈 MySQL 数据库 (索引、数据导入、导出)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 表字段重命名(change) alter table 表名 change 原名 新名 数据类型: S ...
- mysql数据首次导入hive_sqoop1.4.7环境搭建及mysql数据导入导出到hive
sqoop文档:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_prerequisites 在hive创建表和导入数据时必须添加分隔符, ...
- Oracle将数据库中的表数据导入到另一个数据库中
因为工作需要,把Oracle数据库1中的表数据导入到相同数据结构的数据库2表中,下面将数据库1简称为DB1,数据库2简称为DB2,刚开始的时候我只是简单的将DB1的表数据导出成sql脚本,然后导入到D ...
- 带弧CAD和GDB数据导入ARCSDE后面积一致性问题
带弧CAD.GDB.SHAP 等数据导入ARCSDE前面积如下: 导入ARCSDE后面积如下 面积严重不一致 但用导入ARCSDE后的图形重新添加字段计算出的结果切和前面的一致 因此,不要使用ARCS ...
- 如何将sql数据导入到oracle数据库,将SQLServer的数据导入到Oracle数据库的方法-Oracle...
1.首先在SQL Server的电脑上安装Oracle,或者是操作的电脑上安装Oracle,如果没有,导出时会提示失败 2.打开SQL Server,右键点击要导出的数据库,选择"任务&qu ...
- Oracle数据库的创建、数据导入导出
如何结合Sql脚本和PL/SQL Developer工具来实现创建表空间.创建数据库.备份数据库.还原数据库等操作,然后实现Oracle对象创建.导入数据等操作,方便我们快速了解.创建所需要的部署Sq ...
- oracle9i导出数据库,Oracle10g导出的数据导入Oracle9i
我们知道Oracle导入导出数据通过命令: imp user_app/user_pass@mydb file=d:/app.dmp [full=y --] imp user_sys/user_pass ...
- 如何把MySql数据库中的数据导入到MyCat集群中_---Linux运维工作笔记050
我这里,单个MySql数据表的大小已经超过20GB了,单表8000多万条数据,马上 上亿了,这个时候我,搭建了一个MyCat集群解决的,一个写库,11个读库这样来做的. 提高查询效率.但是搭建完以后, ...
- sqlbulkcopy mysql_c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中
今天遇到了一个导入类第一次见 SqlBulkCopy 可以实现从一个数据集导入到数据库中的表中 本来想从数据集中一条条遍历insert到库中 有了这个后发现: 只在把表与数据集的列做一下对应关系,再走 ...
最新文章
- hibernate中的PO持久化对象及PO三种状态
- getlab如何编辑提交时显示的用户名_GitHub 如何让你的提交显示被校验
- 5码默认版块_5个小众的生活学习类的宝藏App
- 电脑win7语音怎么测试软件,win7话筒怎么测试 win7话筒测试方法【图文】
- C++知识点(三)函数
- wordpress让百度分享支持https
- Android手势密码解锁设计
- STC15W单片机解析GPS数据
- 如何电脑上怎样查看微信聊天记录
- 转帖-在Eclipse中开发JSF
- ​全球首个机器人抓取云竞赛落幕,华科夺冠,中国团队包揽前三
- unity引擎发展史
- 《上古卷轴5:天际》控制台代码之配料药剂
- python爬虫脚本 初级入门爬虫英雄联盟所有皮肤_用Python爬取英雄联盟(lol)全部皮肤...
- 关于上传文件的报错问题
- 青岛房产证信息查询步骤
- Lemp + Wordpress 快速搭建个人博客
- BZOJ【1082】栅栏
- Ag-Grid React入门
- 华为云图引擎服务GES-实时推荐算法