本文主要是介绍postgis数据源一库多平台共用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者:Neshoir
PostGIS数据源一库多平台共用
作为一枚Giser,应该没有人不会不知道PostGIS吧!众所周知PostGIS是一个主流的开源空间数据库引擎,基于开源数据库PostgreSQL的空间扩展插件。PostGIS提供了丰富的空间数据存储模型、矢量和栅格数据的处理能力、空间分析函数、GIST索引、空间坐标系等特性,具有完善的生态圈。很多开源产品如GeoServer、QGIS均使用了PostGIS,一些商业GIS软件如ArcMap、SuperMap iDesktop均有对接PostGIS,能够使用PostGIS作为空间数据的存储引擎,也支持基于它做一些空间分析。本文将重点介绍如果在多个GIS平台软件里共同使用同一个PostGIS库。
一、软件安装
- SuperMap iDesktop、ArcMap、PostgreSQL、PostGIS等软件可自行去官网下载及安装。注意:iDesktop 10i对PostgreSQL8.3及以上版本均支持。ArcMap不同版本兼容不同版本的PostgreSQL,比如ArcMap10.8只支持9.6、10、11版本的PostgreSQL。
- 根据系统和PostgreSQL版本,在ArcMap安装路径的…\DatabaseSupport\PostgreSQL\ … 目录对应st_geometry库拷贝到PostgreSQL安装路径的%PostgreSQL%\lib目录下。
二、创建数据库
-
创建名称为sde的角色。
-- 创建名称的sde的角色,赋予创建数据库权限,设置密码。 CREATE ROLE sde WITH CREATEDB LOGIN PASSWORD 'qaz!123';
-
创建名称为testdb的数据库。
-- 创建一个数据库,拥有者为sde。 CREATE DATABASE testdb OWNER sde TABLESPACE pg_default ENCODING 'UTF8';
-
连接上testdb数据库,创建插件和schema。
-- 创建postgis插件,在postgis 3以下版本,postgis插件包括了矢量和栅格模块,3.+版本把栅格模块独立出来了。 CREATE EXTENSION postgis; -- 创建名称为sde的schema CREATE SCHEMA sde
注意: 角色和schema的名称为sde,这是必须的,否则无法在ArcMap中无法将空间数据入库到PostGIS中。
三、SuperMap iDesktop和ArcMap连接PostGIS库
- iDesktop创建PostGis数据源,以便能支持SuperMap里空间数据模型,如文本数据集、网络数据集、CAD数据集等(SuperMap扩展实现的存储类型,PostGIS本身不支持,只支持点线面类型。),创建后是一个空的数据源。
-
ArcMap新建PostGIS库链接。
-
ArcMap开启并开启"地理数据库功能",以便能支持标注等类型。(ArcMap扩展类型,PostGIS本身不支持)。在PostGIS数据库链接上鼠标右键,点击"开启地理数据库",弹窗后,选择认证文件进行开启。
四、通过iDesktop和ArcMap将矢量数据入库到PostGIS库中。
-
iDesktop打开china.udb数据源,将china_r面数据集复制到PostGIS中。
-
ArcMap链接的数据库刷新,即可。
-
ArcMap中复制gdb下的数据集到PostGIS中。在gdb中选择一个面数据集鼠标右键"复制",然后在PostGIS数据库鼠标右键"粘贴",这时会弹窗参数设置,注意类型选择PG_GEOMETRY。
-
iDesktop中数据库链接刷新,即可。
总结:至此,iDesktop和ArcMap可以共用同一个PostGIS数据库,当然QGIS也可以共用。这样即可解决各个业务系统之家数据共享的问题。iDesktop支持对矢量数据的编辑、修改操作,ArcMap好像不支持,因为不是非SDE引擎不支持编辑。
这篇关于postgis数据源一库多平台共用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!