作者:Carlo
一、支持的主流数据库类型
1、主流数据库介绍
数据库名称 | 版本 | 不支持的数据集类型 | 需要配置 客户端 | 支持工作空间 | 支持集群模式 |
---|---|---|---|---|---|
SQLPlus | 2008/2012/2016/2018(仅 Windows 平台支持) | 视频、复合点、复合线、复合面、复合文本数据集 | 是 | 是 | 是 |
OraclePlus | 9i/10g/11g/12c/19c/20c | 复合点、复合线、复合面、复合文本数据集 | 是 | 是 | 是 |
OracleSpatial | 9i/10g/11g | 三维点、三维线、三维面、CAD、网络、三维网络、路由、模型、EPS点、EPS线、EPS面、EPS文本、复合点、复合线、复合面、复合文本数据集 | 是 | 否 | 是 |
MySQL | 5.6.16及以上版本(仅64位版本支持) | 复合点、复合线、复合面、复合文本数据集 | 否 | 是 | 否 |
PostgreSQL | 8.3及以上版本 | 无 | 否 | 是 | 是 |
PostGIS | 2.2.3(9.6) 以上版本 | 复合点、复合线、复合面、复合文本数据集 | 否 | 是 | 是 |
DMPlus | 7/8 | 复合点、复合线、复合面、复合文本数据集 | 是 | 是 | 是 |
MongoDB | 2.x/3.x/4.x | 栅格、影像、镶嵌数据集 | 否 | 是 | 是 |
UDBX | * | 无 | * | 否 | 否 |
Kingbase | 6/7/8(仅 Windows 平台支持) | 复合点、复合线、复合面、复合文本数据集 | 是 | 否 | 是 |
GaussDB 200 | 200.6.5 | 复合点、复合线、复合面、复合文本数据集 | 否 | 否 | 是 |
2、数据库推荐
数据库名称 | 应用场景 | 优点 | 缺点 | 推荐指数 |
---|---|---|---|---|
PostGIS | 大体量空间数据管理、适应于大规模生产环境 | 空间对象存储标签公开,支持多平台对接,空间函数支持下沉、支持高并发、读写性能高、支持集群 | 需安装PostgreSQL引擎的空间数据扩展 | ⭐⭐⭐⭐⭐ |
PostgreSQL | 大体量空间数据管理、对写入性能要求一般 | 超图空间对象存储标签、易于管理、并发性能一般、支持集群 | 不支持其他平台对接 | ⭐⭐⭐⭐ |
OracleSpatial | 中等体量空间数据管理、对写入性能要求一般 | 空间对象存储标准公开、支持多平台对接、并发性能一般、支持集群 | 购买成本高、不支持三维数据,栅格数据,参数化对象等 | ⭐⭐⭐⭐ |
OraclePlus | 中等体量空间数据管理、对写入性能要求一般 | 超图空间对象存储标签、易于安全管理、支持集群 | 购买成本高、不支持其他平台对接 | ⭐⭐⭐⭐ |
UDBX(SQLite) | 中等体量空间数据管理,适用于试验演示环境 | 易用性,轻量级,迁移便捷,读写性能高 | 不支持并发场景、不支持集群 | ⭐⭐⭐ |
MySQL | 中等体量空间数据管理,适用于试验演示环境 | 易用性,不需安装客户端 | 读写性能一般,不支持集群 | ⭐⭐⭐ |
HighGo | 基于PostgreSQL、强于它千万级事务处理能力多种数据库开发接口与框架、高可用、安全、高效多版本、多应用场景 | 兼容性好、生态丰富、安全可控、资源手册丰富、读写性能高 | 项目应用较少 | ⭐⭐⭐⭐⭐ |
Kingbase | 基于PostgreSQL部署简单、快速数据迁移系统可用性高达9.999%多CPU并行处理、高并发、安全四级、上下兼容 | 扩展性强、兼容性好、操作简便 | 网络资源少、读写性能一般 | ⭐⭐⭐⭐ |
DMPlus | 完全自主研发读写分离、故障自动切换行列融合、高安全等级支持多种云基础设施、硬件平台广泛的SQL语法兼容 | 适配多样、兼容性好、操作简便、安全可控、项目应用多 | 网络资源少、读写性能一般 | ⭐⭐⭐⭐ |
注 :针对二维瓦片、三维瓦片的管理推荐使用 MongoDB 数据库
二、SuperMap SDX+ 的系统表说明
SuperMap SDX+是SuperMap GIS的空间数据库引擎,是SuperMap GIS软件的重要组成部分,它采用先进的空间数据库存储技术、索引技术和查询技术,具有"空间-属性数据一体化"、"矢量-栅格数据一体化"和"空间信息-业务信息一体化"的集成式空间数据库管理能力,是GIS大型工程应用的理想选择。
经过实际应用和测试表明,SuperMap SDX+具有以下三项特色:
1)安装使用简便,充分结合数据库技术;
2)高性能管理和访问海量空间数据;
3)完善的数据模型,满足各种大型GIS应用的需求。
SuperMap SDX+ 共有20个系统表,下图为一些重要的系统表结构:
下面是对部分系统表的详细描述:
1、SmRegister—矢量数据集注册信息表
SmRegister表用来集中管理矢量数据集的信息,每新建一个矢量数据集,会在此表中新增加一条记录(带子数据集的矢量数据集,如Network或Tin类型的数据集,会在SmRegister表中添加两条记录),同样删除数据集时会将相应的记录从该表中移除。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmDatasetID | INTEGER | 数据集的唯一编号 |
SmDatasetName | CHARACTER VARYING(64) | 数据集的名称(别名) |
SmTableName | CHARACTER VARYING(64) | 数据集的表名 |
SmIndexTableName | VARCHAR(64) | 索引表名 |
SmSubTableName | VARCHAR(64) | 子数据集的表名 |
SmIsSub | CHAR(1) | 标明数据集是否为子数据集 |
SmDatasetType | INTEGER | 数据集的类型 |
SmRecordCount | INTEGER | 数据集中记录的数目 |
SmIndexLevel | SHORT | 数据集空间索引的Level |
SmLeft | DOUBLE | 数据集的四至 |
SmTop | DOUBLE | 数据集的四至 |
SmRight | DOUBLE | 数据集的四至 |
SmBottom | DOUBLE | 数据集的四至 |
SmIndexType | DOUBLE | 数据集空间索引的类型 |
SmIndexLeft | DOUBLE | 索引范围的四至 |
SmIndexTop | DOUBLE | 索引范围的四至 |
SmIndexRight | DOUBLE | 索引范围的四至 |
SmIndexBottom | DOUBLE | 索引范围的四至 |
SmMinZ | DOUBLE | 数据集的最小高程值 |
SmMaxZ | DOUBLE | 数据集的最大高程值 |
SmLTUserID | INTEGER | 用于长事务环境,标识长事务用户特定版本 |
SmDtVersion | INTEGER | 标识数据集被修改的版本 |
SmOption | INTEGER | 数据集的选项信息,如是否压缩存储等 |
SmState | INTEGER | 并发编辑锁的状态 |
SmEncType | INTEGER | 数据集编码类型 |
SmToleranceFuzzy | DOUBLE | 拓扑容限信息 |
SmToleranceDangle | DOUBLE | 拓扑容限信息 |
SmToleranceNodeSnap | DOUBLE | 拓扑容限信息 |
SmToleranceSmallPolygon | DOUBLE | 拓扑容限信息 |
SmToleranceGrain | DOUBLE | 拓扑容限信息 |
SmMaxGeometrySize | INTEGER | 数据集中最大几何对象的字节数 |
SmOnceFetchCount | INTEGER | 优化参数:一次从服务器中取回的记录数 |
SmOptimizeCount | INTEGER | 优化参数:用于全幅显示优化的最大记录数 |
SmOptimizeRatio | DOUBLE | 优化参数:用于全幅显示优化的面积比率 |
SmCreateTime | DATETIME | 数据集创建时间 |
SmLastUpdateTime | DATETIME | 数据集最后被更新的时间 |
SmDynamicIndex | INTEGER | 数据集是否已建立动态索引 |
SmCreator | CHARACTER VARYING(32) | 数据集创建者(用户) |
SmProjectInfo | BYTEA | 数据集投影信息 |
SmParentID | INTERGER | 当前数据集父数据集的ID |
SmLockedUserID | INTERGER | 被锁定用户的ID |
SmDescription | VARCHAR(256) | 数据集描述信息 |
SmExtInfo | VARCHAR(2048) | 数据集附加信息 |
SmThumb | LONGRAW | 数据集快照 |
SmTotalGeometrySize | INTERGER | 数据集中几何对象的字节数 |
SmTinTolerance | DOUBLE | Tin数据集里,金子塔使用 |
2、SmBandRegister—波段信息注册表
栅格数据集的波段信息管理表,新建一个栅格数据集,会根据波段数添加对应数目的记录,删除数据集的时候会删掉相应的记录。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmBandID | SERIAL | 波段ID |
SmDatasetID | INTEGER | 所属数据集ID |
SmBandIndex | INTEGER | 波段索引 |
SmBandName | CHARACTER VARYING(64) | 波段名称 |
SmBandFieldName | CHARACTER VARYING(64) | 波段所在字段名称 |
SmBandAvail | INTEGER | 是否可用(保留字段) |
SmOption | INTEGER | 选项信息,如是否压缩存储等 |
SmScalar | INTEGER | 当前波段保留字,用于新添加的像素格式 |
SmEncType | INTEGER | 编码类型 |
SmPixelFormat | INTEGER | 像素格式(如单色、16色、256色等) |
SmMaxBlockSize | INTEGER | 数据集中最大的Block的大小(字节数) |
SmMinZ | DOUBLE | 极小值 |
SmMaxZ | DOUBLE | 极大值 |
SmPyramid | CHARACTER VARYING(64) | 影像金字塔底图数据集的名称 |
SmPyramidLevel | INTEGER | 影像金字塔的层数 |
SmCreator | CHARACTER VARYING(64) | 创建者(用户) |
SmCreateTime | DATE | 创建时间 |
SmDescription | CHARACTER VARYING(256) | 描述信息 |
SmNovalue | DOUBLE | 无值 |
SmPalette | BYTEA | 调色板 |
3、SmImgRegister—栅格数据集注册信息表
SmImgRegister表用来集中管理栅格数据集的信息,每新建一个栅格数据集,会在此表中新加一条记录,同样删除数据集时会将相应的记录从该表中移除。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmDatasetID | INTEGER | 数据集的唯一编号 |
SmDatasetName | CHARACTER VARYING(64) | 数据集名称(别名) |
SmTableName | CHARACTER VARYING(64) | 数据集表名 |
SmDatasetType | INTEGER | 数据集的类型 |
SmEncType | INTEGER | 数据集编码类型 |
SmOption | INTEGER | 数据集的选项信息,如是否压缩存储等 |
SmPixelFormat | INTEGER | 像素格式(如单色、16色、256色等) |
SmWidth | INTEGER | 图像宽度 |
SmHeight | INTEGER | 图像高度 |
SmEBlockSize | INTEGER | 块的大小(像素) |
SmMaxBlockSize | INTEGER | 数据集中最大的Block的大小(字节数) |
SmMinZ | DOUBLE | 数据集最小高程值 |
SmMaxZ | DOUBLE | 数据集最大高程值 |
SmPyramid | CHARACTER VARYING(64) | 影像金字塔底图数据集的名称 |
SmPyramidLevel | INTEGER | 影像金字塔的层数 |
SmBlockSizes | INTEGER | 块的大小(字节数) |
SmPalette | BYTEA | 调色板 |
SmGeoLeft | DOUBLE | 地理坐标四至 |
SmGeoTop | DOUBLE | 地理坐标四至 |
SmGeoRight | DOUBLE | 地理坐标四至 |
SmGeoBottom | DOUBLE | 地理坐标四至 |
SmClipRegion | BYTEA | 数据集的显示掩膜多边形 |
SmCreateTime | DATETIME | 数据集创建时间 |
SmLastUpdateTime | DATETIME | 数据集最后一次更新时间 |
SmCreator | CHARACTER VARYING(32) | 数据集创建者(用户) |
SmDescription | CHARACTER VARYING(256) | 数据集描述信息 |
SmNoValue | DOUBLE | 无值栅格 |
SmProjectInfo | BYTEA | 数据集投影信息 |
SmColorSpace | INTEGER | 当前影像的默认色彩空间 |
SmExtInfo | VARCHAR(2048) | 数据集附加信息 |
SmStatisticsInfo | sys.xmltype | 栅格数据集统计信息 |
4、SmDataSouceInfo—数据源相关信息表
SmDataSourceInfo表用来存储和数据源相关的信息。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmFlag | INTEGER | 数据源标志信息(保留待用) |
SmVersion | INTEGER | 数据源版本号 |
SmMinorVersion | INTEGER | 数据源小版本号 |
SmCoordSys | INTEGER | 坐标系编码 |
SmCoordUnit | INTEGER | 坐标单位 |
SmDistanceUnit | INTEGER | 距离单位 |
SmDsDescription | VARCHAR(255) | 对数据源的描述 |
SmProjectInfo | LONGBINARY | 投影信息 |
SmVersionDate | INTEGER | 版本日期 |
SmLastUpDateTime | DATE | 最后修改时间 |
5、SmDynamicIndex—动态索引信息表
SmDynamicIndex存储已建立动态索引的数据集信息。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmDatasetID | INTEGER | 数据集ID |
SmIndexTableName | CHARACTER VARYING(64) | 索引表名称 |
SmCenterPntX | DOUBLE | 索引中心点X坐标 |
SmCeneterPntY | DOUBLE | 索引中心点Y坐标 |
SmGridRatio | DOUBLE | 网格比率 |
SmGrid0 | DOUBLE | 第一层网格边长 |
SmGrid1 | DOUBLE | 第二层网格边长 |
SmGrid2 | DOUBLE | 第三层网格边长 |
6、SmFieldInfo—字段信息表
SmFieldInfo存储事件表数据集信息。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 字段标识ID |
SmDatasetID | INTEGER | 字段所在数据集ID |
SmFieldName | CHARACTER VARYING(64) | 字段名 |
SmFieldCaption | CHARACTER VARYING(64) | 字段别名 |
SmFieldType | INTEGER | 字段类型 |
SmFieldFormat | CHARACTER VARYING(64) | 字段数值格式 |
SmFieldSign | INTEGER | 存储拓扑关系信息的字段 |
SmFieldDomain | CHARACTER VARYING(1024) | 字段域 |
SmFieldUpdatable | INTEGER | 字段是否可更新 |
SmFieldSize | INTEGER | 字段长度 |
7、SmWorkspace—工作空间表
SmWorkspace存储工作空间信息。
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 字段标识ID |
SmUser | CHARACTER VARYING(64) | 用户名称 |
SmWorkspaceName | CHARACTER VARYING(64) | 工作空间名称 |
SmVersion | INTEGER | 工作空间版本号 |
SmData | BLOB | 数据存储大小 |
SmUpdateTime | DATE | 数据最后一次更新时间 |
三、SuperMap SDX+ 的数据表说明
SuperMap SDX+ 将空间数据与属性数据一体化管理,数据表中的记录与图层中的空间对象一一对应。
下面分类型介绍数据表中的字段信息:
1、Region类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 空间数据记录的ID |
SmKey | INTEGER | 空间索引值 |
SmSDRIW | DOUBLE | 当前记录的左边界 |
SmSDRIN | DOUBLE | 当前记录的上边界 |
SmSDRIE | DOUBLE | 当前记录的右边界 |
SmSDRIS | DOUBLE | 当前记录的下边界 |
SmGranule | DOUBLE | 当前记录的颗粒度值 |
SmGeometry | BYTEA | 长二进制数据,存储当前记录的空间数据 |
SmLibTileID | INTEGER | 图库索引ID |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
SmArea | DOUBLE | 当前记录的多边形面积 |
SmPerimeter | DOUBLE | 当前记录的多边形周长 |
2、Line类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 空间数据记录的ID |
SmKey | INTEGER | 空间索引值 |
SmSDRIW | DOUBLE | 当前记录的左边界 |
SmSDRIN | DOUBLE | 当前记录的上边界 |
SmSDRIE | DOUBLE | 当前记录的右边界 |
SmSDRIS | DOUBLE | 当前记录的下边界 |
SmGranule | DOUBLE | 当前记录的颗粒度值 |
SmGeometry | BYTEA | 长二进制数据,存储当前记录的空间数据 |
SmLibTileID | INTEGER | 图库索引ID |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
SmLength | DOUBLE | 当前记录的线长度 |
SmTopoError | INTEGER | 当前记录的拓扑错误信息 |
3、Point类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 空间数据记录的ID |
SmX | DOUBLE | 当前记录的点的横坐标值 |
SmY | DOUBLE | 当前记录的点的纵坐标值 |
SmLibTileID | INTEGER | 图库索引ID |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
4、Text类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 空间数据记录的ID |
SmKey | INTEGER | 空间索引值 |
SmSDRIW | DOUBLE | 当前记录的左边界 |
SmSDRIN | DOUBLE | 当前记录的上边界 |
SmSDRIE | DOUBLE | 当前记录的右边界 |
SmSDRIS | DOUBLE | 当前记录的下边界 |
SmGranule | DOUBLE | 当前记录的颗粒度值 |
SmGeometry | BYTEA | 长二进制数据,存储当前记录的空间数据 |
SmLibTileID | INTEGER | 图库索引ID |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
5、Grid/DEM/Image类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmRow | INTEGER | 当前Block的行ID |
SmColumn | INTEGER | 当前Block的列ID |
SmSize | INTEGER | 当前Block的Size |
SmRaster | BYTEA | 当前Block的二进制数据 |
6、Network类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
Network主数据集字段详细信息 | ||
SmID | INTEGER | 空间数据记录的ID |
SmKey | INTEGER | 空间索引值 |
SmSDRIW | DOUBLE | 当前记录的左边界 |
SmSDRIN | DOUBLE | 当前记录的上边界 |
SmSDRIE | DOUBLE | 当前记录的右边界 |
SmSDRIS | DOUBLE | 当前记录的下边界 |
SmGranule | DOUBLE | 当前记录的颗粒度值 |
SmGeometry | BYTEA | 长二进制数据,存储当前记录的空间数据 |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
SmEdgeID | INTEGER | 线标识字段 |
SmFNode | INTEGER | 当前线的起始点ID |
SmTNode | INTEGER | 当前线的终止点ID |
SmResistanceA | DOUBLE | 正方向阻力 |
SmResistanceB | DOUBLE | 负方向阻力 |
SmLength | DOUBLE | 线的长度 |
SmTopoError | INTEGER | 拓扑错误信息 |
Network子数据集字段详细信息 | ||
字段名称 | 字段类型 | 描述 |
SmID | INTEGER | 空间数据记录的ID |
SmX | DOUBLE | 当前记录的点的横坐标值 |
SmY | DOUBLE | 当前记录的点的纵坐标值 |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
SmLibTileID | INTEGER | 图库索引ID |
SmNodeID | INTEGER | 节点ID |
7、Model类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 数据记录的ID |
SmSDRIW | DOUBLE | 当前记录的左边界 |
SmSDRIN | DOUBLE | 当前记录的上边界 |
SmSDRIE | DOUBLE | 当前记录的右边界 |
SmSDRIS | DOUBLE | 当前记录的下边界 |
SmGeometry | BYTEA | 长二进制数据,存储当前记录的空间数据 |
SmLibTileID | INTEGER | 图库索引ID |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
8、Mosaic类型数据集
字段名称 | 字段类型 | 描述 |
---|---|---|
SmID | INTEGER | 数据记录的ID |
SmKey | INTEGER | 空间索引值 |
SmSDRIW | DOUBLE | 当前记录的左边界 |
SmSDRIN | DOUBLE | 当前记录的上边界 |
SmSDRIE | DOUBLE | 当前记录的右边界 |
SmSDRIS | DOUBLE | 当前记录的下边界 |
SmGranule | DOUBLE | 当前记录的颗粒度值 |
SmGeometry | BYTEA | 长二进制数据,存储当前记录的空间数据 |
SmLibTileID | INTEGER | 图库索引ID |
SmUserID | INTEGER | 用户ID,不列为系统字段 |
SmRow | INTEGER | 当前Block的行ID |
SmColumn | INTEGER | 当前Block的列ID |
SmSize | INTEGER | 当前Block的Size |
SmRaster | BYTEA | 当前Block的二进制数据 |
四、SuperMap产品中主流数据库的使用方式
SuperMap 产品支持打开和新建多种数据源类型,分为文件型数据源、数据库型数据源、 Web 型数据源以及内存型数据源。
文件型数据源将空间数据和属性数据直接存储到文件中。存储扩展名为 *.udb 或*.udbx 的文件。在小数据量情况下使用文件型数据源地图的显示更快,且数据迁移方便。
Web型数据源将数据源存储在网络服务器中,OGC、GoogleMaps、超图云服务、REST 地图服务和天地图地图服务数据源属于 Web 数据源。
内存型数据源数据源中的数据都保存在内存中,为临时数据源,不支持保存。一些分析的中间结果可以存储在该数据源中,有利于提高分析的效率,当得到最终数据时可从内存数据源导出为本地数据。
数据库型数据源将数据源存储在数据库中,目前桌面产品提供 OraclePlus、Oracle Spatial、SQLPlus、PostgreSQL、DB2、KingBase、MySQL、BeyonDB、HighGoDB、KDB 、DM 、PostGIS和 MongoDB 十余种数据库型数据源功能。一般常用于数据量较大的数据存储,便于数据的管理和访问,且支持并发操作便于修改和数据同步。用户在于访问数据库需要本地配置相关的数据库环境和客户端。下文将根据支持经验介绍六种主流数据库的使用方式。
1、Oracle数据源
Oracle 数据库( 11g 版本)下载地址:
https://pan.baidu.com/s/1sNEhufsRdi-ztV1gZg4b9g?pwd=1nxk
Oracle 数据库( 11g 版本)服务端安装教程:
https://www.cnblogs.com/qfb620/p/4577255.html
Oracle 数据库客户端连接配置:1)必须安装客户端;2)环境变量配置正确
(1)打开SQL Plus输入安装时的用户名和密码连接到数据库
(2)创建表空间
create tablespace supermap datafile'D:\app\Carlo\oradata\orcl\supermap.dbf' size 20M autoextend on next 20M;
(3)创建用户,并将用户赋给刚刚创建的表空间上
create user dbtest identified by supermap default tablespace supermap;
(4)由于创建的新用户是没有数据库的权限,这是需要给新建的用户赋予对数据库的读写权限
grant connect,resource to dbtest;
(5)打开SuperMap iDesktopX软件,右键数据源节点–新建数据库型数据源
(6)在弹出框中选择OraclePlus,在右侧界面输入实例名(如果是远程连接数据库填写规则为ip地址:端口号/实例名)、用户名和密码,新建数据库型数据源
2、DM数据源
DM 数据库( 7.6 版本)下载地址:
https://pan.baidu.com/s/1yLEum6NNhgtRdexWOSTQsw?pwd=khvq
DM 数据库( 7.6 版本)服务端安装教程:
https://blog.csdn.net/weiwu13/article/details/127537589
DM 数据库客户端连接配置:1)必须安装客户端;2)环境变量配置正确
扩展知识:
DM8版本的安装使用和DM7版本是一致的,但是需要注意的是,DM8不包含依赖库:libdmoci.so(Linux版本)/dmoci.dll(Windows版本)。检查是否包含依赖库方法:到【达梦安装目录】/bin/目录下查找是否有libdmoci.so/dmoci.dll这个依赖库,如果有的话就手动将其拷贝到【iDesktopX安装目录】/bin/目录下,然后再重启iDesktopX即可正常连接达梦数据库型数据源了。
(1)在DM目录下的bin目录下执行cmd命令:
(2)输入命令登录,账号密码为安装数据库时创建的
DIsql.exe SYSDBA/123456@10.10.0.102
(3)创建一个自动扩展的表空间,用于创建超图的达梦数据源
create tablespace "SUPERMAPDATASOURCE" datafile 'D:\dmdbms\data\DAMENG\SUPERMAPDATASOURCE.DBF' size 32 autoextend on next 64 maxsize 16777215 CACHE = NORMAL;
(4)创建一个用户,设置密码
create user "SUPERMAP" identified by "supermap@123" default tablespace "SUPERMAPDATASOURCE";
(5)给创建的用户赋予相关权限
grant "DBA","PUBLIC","RESOURCE" to "SUPERMAP";
(6)打开SuperMap iDesktopX软件,右键数据源节点–新建数据库型数据源
(7)在弹出框中选择DMPlus,在右侧界面输入服务器名称(如果是远程连接数据库填写规则为ip地址:端口号/实例名)、用户名和密码,新建数据库型数据源
3、MySQL数据源
MySQL 数据库( 8.0 版本)下载地址:
https://pan.baidu.com/s/1X_h1YvSaeZVtHDdKljPx0w?pwd=z7ip
MySQL 数据库( 8.0 版本)服务端安装教程:https://blog.csdn.net/qq_54796785/article/details/125215507
MySQL 数据库客户端连接配置:远程服务端必须保证本机有访问权限,如果没有权限可以按照下面步骤(3)来创建用户,其中%可以换成具体的IP,%代表任何客户端都可以连接
(1)打开MySQL 8.0 Command Line Client输入安装时的密码连接到数据库
(2)创建数据库supermap
create database supermap;
(3)创建用户dbtest
create user 'dbtest'@'%' IDENTIFIED BY '123456';
(4)将数据库的所有权限都赋予dbtest
grant all privileges on \*.\* to 'dbtest'@'%';
(5)设置密码(MySQL8.0采用了新的更安全的验证方式,需要用户按照mysql_native_password这种方式来连接)
alter user 'dbtest'@'%' IDENTIFIED WITH mysql\_native\_password BY '123456';
(6)刷新权限
FLUSH PRIVILEGES;
(7)打开SuperMap iDesktopX软件,右键数据源节点–新建数据库型数据源
(8)在弹出框中选择MySQL,在右侧界面输入服务器地址(如果是远程连接数据库填写规则为ip地址:端口号)、数据库名称、用户名和密码,新建数据库型数据源
4、PostgreSQL数据源
扩展知识:
PostGIS 是 PostgreSQL 关系数据库的空间操作扩展。它为 PostgreSQL 提供了存储、查询和修改空间关系的能力。
PostgreSQL 是开源空间数据库,构建在其上的空间对象扩展模块PostGIS使其成为一个真正的大型空间数据库。SuperMap 新增 SDX+ for PostGIS 引擎,可以直接访问 PostgreSQL 空间数据库,充分利用空间信息服务数据库的能力,如空间对象、空间索引、空间操作函数和空间操作符等,实现高效地管理和访问空间数据。
PostGIS 空间数据的管理一般包括:创建数据库、创建/删除数据源、创建/删除数据集、添加/删除记录(几何对象)、数据集中添加/删除字段、更新字段值以及查询数据等。
PostGIS需要和PostgreSQL版本兼容,例如:PostgreSQL为9.6版本对应的PostGIS为2.4.2版本,创建 PostGIS 数据库型数据源时,既可指定一个已有的 PostgreSQL 数据库名称,创建数据源;也可以指定一个新的数据库名称,创建数据源时,将先创建对应的 PostgreSQL 数据库,再创建数据源。一个 PostgreSQL 数据库只能创建一个 PostGIS 数据库型数据源。
PostgreSQL 数据库( 9.6.4 版本)下载地址:https://pan.baidu.com/s/1oY45mlPa0tgeLvT4Qxn1wQ?pwd=mz5g
PostgreSQL 数据库( 9.6.4 版本)服务端安装教程:
https://www.runoob.com/postgresql/windows-install-postgresql.html
PostgreSQL 数据库客户端连接配置:远程服务端必须保证本机有访问权限,如果没有权限,到服务端数据存储路径下修改/data/pg_hba.conf文件添加host all all 0.0.0.0/0 trust,重启服务。
(1)打开SQL Shell(psql)输入安装时的用户名和密码连接到数据库
(2)创建用户dbtest
CREATE USER dbtest WITH PASSWORD '123456';
(3)创建数据库exampledb
CREATE DATABASE exampledb OWNER dbtest;
(4)将exampledb数据库的所有权限都赋予dbtest
GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbtest;
(5)打开SuperMap iDesktopX软件,右键数据源节点–新建数据库型数据源
(6)在弹出框中选择PostgreSQL,在右侧界面输入服务器地址(如果是远程连接数据库填写规则为ip地址:端口号)、数据库名称、用户名和密码,新建数据库型数据源
5、Kingbase数据源
人大金仓数据库管理系统(KingbaseES)是我国自主研制开发的具有自主知识产权的通用关系型数据库,也是唯一入选国家自主创新产品目录的数据库产品。目前在信创项目中使用比较多的国产数据库就是Kingbase,目前Kingbase发布的最新版本是Kingbase V8R6版本,下面介绍一下该版本依托PostGIS数据库的安装方式以及SuperMap iDesktopX如何连接Kingbase数据源。
KingbaseES ( V8R6 版本)下载地址 :
https://pan.baidu.com/s/1ypD17Jox-o-7N2BqTBwxrg?pwd=swsg
Kingbase 数据库客户端连接配置:1)必须安装客户端;2)环境变量配置正确
安装KingbaseES数据库不能使用root用户,必须得使用普通用户
(1)创建普通用户kingbase,创建成功后会在home目录创建kingbase目录,后续可以将kingbase安装在该目录,可以避免在安装过程中出现权限问题(kingbae官方要求有个默认目录为 /opt/Kingbase/ES/V8,如果需要安装在此目录需要修改该目录用户组为kingbase并且设置可写权限)
groupadd kingbase
useradd kingbase -m -g kingbase
passwd kingbase
(2)解压kingbase安装包
mount -t iso9660 -o loop xxx.iso /opt/kingbase/
(3)安装kingbase,kingbase提供了命令行安装和图形化界面安装。此处采用图形化安装的方式。
进入第二步挂载的目录下执行setup.sh
cd /opt/kingbase///进入挂载目录
./setup.sh //执行安装命令
(4)选择安装模式为完全安装:
(5)选择授权文件,可以找kingbase技术或者销售获取三个月的试用许可
(6)选择安装目录:
(7)选择数据存储目录
(8)初始化数据库:此处的各项设置为数据库实例的基本设置,依据部署应用不同的需求就行设置。设置好端口、管理员用户名以及密码,最重要的两步是设置当前数据库是PostGIS而非Oracle,以及是否忽略大小写,此处设置为忽略大小写。
(9)注册数据库服务为系统服务:安装好数据库后可以根据需求将服务注册为系统服务,需要切换到root用户执行该命令
sh /home/kingbase/KingbaseTest/install/script/root.sh
(10)设置环境变量
vi ~/.bashrc
#添加两行变量:
export LD\_LIBRARY\_PATH=/home/kingbase/KingbaseTest/Server/lib:$LD\_LIBRARY\_PATH
export PATH=/home/kingbase/KingbaseTest/Server/bin:$PATH
#使环境变量生效
source ~/.bashrc
(11)启动数据库
#进入Server的bin目录
cd /home/kingbase/KingbaseTest/Server/bin
#启动数据库
./kingbase -D /home/kingbase/KingbaseTest/data/
(12)SuperMap iDesktopX软件,右键数据源节点–新建数据库型数据源,在弹出框中选择PostGIS,在右侧界面输入服务器地址(如果是远程连接数据库填写规则为ip地址:端口号)、数据库名称、用户名和密码,新建数据库型数据源。
6、HighGo数据源
HigoDB ( RPM 包 6.0.4 版本) 下载地址
https://pan.baidu.com/s/1gV0u4MAHXm2vT3BNy7Umeg?pwd=smap
对应 PostGIS 拓展下载地址
https://pan.baidu.com/s/1SEjrl-ftcvR-28HF17Qvfg?pwd=smap
HighGo 数据库客户端连接配置:远程服务端必须保证本机有访问权限,如果没有权限,到服务端数据存储路径下修改/data/pg_hba.conf文件添加host all all 0.0.0.0/0 md5,重启Highgo服务。
(1)通过root用户执行以下命令,安装第一个下载地址提供的安装包。
rpm -ivh 1b73693f2c91fd7f38acbc7d3882cf6c.rpm
(2)安装完毕后会在/opt/HighGo6.0.4-cluster/etc 目录下生成一个名为highgodb.env 的文件,内容如下所示,执行 source 命令使之生效。
#切换 highgo 用户
[root@hgdb bin]# su - highgo
[highgo@hgdb etc]# cat highgodb.env
export PATH=/opt/HighGo6.0.4-cluster/bin:$PATH
export LD\_LIBRARY\_PATH=/usr/lib64:/opt/HighGo6.0.4- cluster/lib:$LD\_LIBRARY\_PATH
export HGDB\_HOME=/opt/HighGo6.0.4-cluster
export HG\_BASE=/opt/HighGo6.0.4-cluster
export PGPORT=5866
export PGDATA=/opt/HighGo6.0.4-cluster/data
[highgo@hgdb etc]# source highgodb.env
#检查环境变量是否生效
[highgo@hgdb etc]# echo $PGDATA
/opt/HighGo6.0.1-cluster/data
(3)手动初始化数据库
[highgo@hgdb bin]$ initdb -D ../data \>/opt/HighGo6.0.4-cluster/bin/initdb.log
#设置 highgo 用户密码
Enter new superuser password:
Enter it again:
initdb: warning: enabling "md5" authentication for local connections
You can change this by editing pg\_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
[highgo@hgdb bin]$
(4)启动数据库
#启动数据库
[highgo@hgdb bin]$ pg\_ctl start
... server started
#登录数据库
[highgo@hgdb etc]$ psql -U highgo -d highgo
(5)如果验证正常,之后通过第二个rpm包安装PostGIS拓展
rpm -ivh postgis3.0-6.0.4-enterprise-centos7-x86-64-20220127.rpm
(6)安装步骤到这里就结束了,之后再创建用户名、密码及授权
[highgo@localhost bin]$ psql
用户 highgo 的口令:
psql (HighGo Database 6 Release 6.0.4-64-bit Production)
PSQL: Release HighGo Database 6 Release 6.0.4-64-bit Production
输入 "help"来获取帮助信息.
highgo=# CREATE USER dbtest WITH PASSWORD 'Supermap@123';
highgo=# CREATE DATABASE exampledb OWNER dbtest;
highgo=# GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbtest;
#只有超级用户才可以创建PostGIS拓展
highgo=# ALTER USER dbtest WITH SUPERUSER;
(7)SuperMap iDesktopX软件,右键数据源节点–新建数据库型数据源,在弹出框中选择HighGoDB,在右侧界面输入服务器地址(如果是远程连接数据库填写规则为ip地址:端口号)、数据库名称、用户名和密码,新建数据库型数据源
五、数据库之间的迁移
项目实际运维过程中,经常会遇到数据库升级改造、服务器设备替换更新,这就需要将旧的数据库中的数据迁移到新的数据库中存储。如果是数据库型的工作空间,整库迁移是可以同时把数据、地图、场景和工作空间一并迁移的。
同类型数据库之间的迁移可以通过数据库自带的命令行的形式实现,操作简单,便于实现,下文的1、2、3部分均采用此方式;而不同数据库之间的迁移,因为不同类型的数据库存储数据方式有所区别,内部表结构更是复杂,一般建议通过复制数据集的方式同步数据,但是这种方式很繁琐,因此我们自行制作了SuperMap iDesktopX 11i 桌面产品的"工作空间迁移"插件,将PostgreSQL / PostGIS数据库存储的数据整体进行迁移到DM数据库,从而减少工作量,节省时间,下文的4部分即采用此方式。
1、Oracle(11.2)->Oracle(12.1)
- Oracle 命令行导出数据库:
(1)在Oracle目录下的bin目录下执行cmd命令:
(2)输入命令导出数据库,主要有如下几种操作:
1)导出数据库全部数据
仅输入数据库连接串和文件导出路径就可以执行导出,导出文件后缀为dmp
exp 用户名/密码@IP FILE=导出文件路径
2)按用户名导出
可支持多用户同时导出
exp 用户名/密码@IP FILE=导出文件路径 OWNER=(用户名1,用户名2)
3)按表名导出
可支持多表同时导出
exp 用户名/密码@IP FILE=导出文件路径 TABLES=(表名1,表名2)
4)按查询条件导出
QUERY指定查询条件
exp 用户名/密码@IP FILE=导出文件路径 TABLES=表名 QUERY=(where column\_name1=1 and column\_name2=2)
此处采用操作1)来导出用户名Oracle管理的数据库
exp Oracle/123456@10.10.0.102:1521/orcl FILE=D:\TEST\test.dmp
(3)查看D盘TEST文件夹会发现有新生成的test.dmp文件
- Oracle 命令行导入数据库:
(1)将test.dmp文件拷贝到需要迁移的Oracle数据库所在的机器目录下
(2)同"Oracle命令行导出数据库"步骤(1)一样的操作命令行进入Oracle目录下的bin文件夹
(3)在Oracle中新建一个数据库、用户及密码,步骤参考文档模块四
//创建用户及密码
create user zpp identified by 123456;
//授权
grant connect,resource to zpp;
(4)导入test.dmp文件,并且没有提示错误即还原成功
(5)验证导入是否成功
在桌面打开数据库型数据源,填写步骤(3)导入的数据库连接参数
查看原始数据库里面的数据以及迁移成功后的数据库里面的数据对比
2、Mysql(5.6)->Mysql(8.0)
- MySQL 命令行导出数据库:
(1)命令行进入MySQL目录下的bin文件夹,可以使用以下两种方式:
1)在cmd中输入的命令行:
d:
cd D:\数据库\mysql-5.6.40-winx64\bin
2)找到MySQL目录下的bin文件夹,执行cmd命令:
(2)输入命令导出数据库,主要有如下几种操作:
1)导出整个数据库(包括数据库中的数据):
mysqldump -u username -p dbname \> dbname.sql
2)导出数据库中的数据表(包括数据表中的数据):
mysqldump -u username -p dbname tablename \> tablename.sql
3)导出数据库结构(不包括数据,只有创建数据表语句):
mysqldump -u username -p -d dbname \> dbname.sql
4)导出数据库中数据表的表结构(不包括数据,只有创建数据表语句):
mysqldump -u username -p -d dbname tablename \> tablename.sql
//参数说明
mysqldump:mysql用于转存储数据库的实用程序,它主要产生一个SQL脚本
-u:用户名
-p:密码
dbname:数据库名称
此处采用操作1)来导出整个数据库dongyx,默认导出到MySQL目录下的bin文件夹
mysqldump -u root -p dongyx \> dongyx.sql;
(3)查看MySQL目录下的bin文件夹会发现有新生成的dongyx.sql文件
- MySQL 命令行导入数据库:
(1)将dongyx.sql文件拷贝到需要迁移的MySQL数据库的bin目录下
(2)同"MySQL命令行导出数据库"步骤(1)一样的操作命令行进入MySQL目录下的bin文件夹
(3)在MySQL中新建一个数据库、用户及密码,步骤参考文档模块四
//创建数据库testdong
create database testdong;
//创建用户dongyx
create user 'dongyx'@'%' IDENTIFIED BY '123456';
//将数据库的所有权限都赋予dbtest
grant all privileges on \*.\* to 'dongyx'@'%';
//设置密码
alter user 'dongyx'@'%' IDENTIFIED WITH mysql\_native\_password BY '123456';
//刷新权限
FLUSH PRIVILEGES;
(4)使用刚创建的数据库来存储导入的数据
use testdong;
(5)导入dongyx.sql文件再次出现"mysql>"并且没有提示错误即还原成功。
source dongyx.sql;
(6)验证导入是否成功
在桌面打开数据库型数据源,填写步骤(3)创建的连接参数
查看原始数据库里面的数据以及迁移成功后的数据库里面的数据对比
3、PostgreSQL(9.6)->PostgreSQL (14.0)
- PostgreSQL 命令行导出数据库:
(1)在PostgreSQL目录下的bin目录下执行cmd命令:
(2)输入命令导出数据库test,默认导出到PostgreSQL目录下的bin文件夹:
pg\_dump -U postgres -p 5432 -d test -f test12.sql
//参数说明:
Pg\_dump :是安装时候的一个执行文件,主要就是把数据导出成sql(或者dump)文件;
-U:对应的用户名 postgres
-p:对应的端口号 5432
-d :导出库的名称;
-f:对应导出的sql存放路径
(3)查看PostgreSQL目录下的bin文件夹会发现有新生成的test12.sql文件
- PostgreSQL 命令行导入数据库:
(1)将test12.sql文件拷贝到需要迁移的PostgreSQL数据库的bin目录下
(2)同"PostgreSQL命令行导出数据库"步骤(1)一样的操作命令行进入PostgreSQL目录下的bin文件夹
(3)在PostgreSQL中新建一个数据库、用户及密码,步骤参考文档模块四
//创建数据库zpp
CREATE DATABASE zpp OWNER postgres;
//将zpp数据库的所有权限都赋予postgres
GRANT ALL PRIVILEGES ON DATABASE zpp TO postgres;
(4)导入test12.sql文件,并且没有提示错误即还原成功
psql -d zpp -U postgres -f test12.sql
//参数说明:
-d :导入库的名称
-U:对应的用户名 postgres
-f:对应导入的sql存放路径
(5)验证导入是否成功
在桌面打开数据库型数据源,填写步骤(3)导入的数据库连接参数
查看原始数据库里面的数据以及迁移成功后的数据库里面的数据对比
4、PostgreSQL / PostGIS->DM(V8)
PostgreSQL / PostGIS 数据库与数据源之间的关系:
DM 数据库与数据源之间的关系:
从 PostgreSQL / PostGIS 整体迁移到 DM(V8),包含迁移:工作空间、数据源、数据集、地图、场景、布局、图表、模型、视频地图、大屏、表格 以及 资源 等共计 12 类。
迁移流程如下所示:
(1)根据输入的 PostgreSQL / PostGIS 数据库连接信息获取待迁移的工作空间;
(2)选择指定工作空间或者批量迁移;
(3)迁移工作空间中关联的数据源、数据集;
(4)迁移工作空间中存储的地图信息;
(5)迁移工作空间中存储的场景信息;
(6)迁移工作空间中存储的布局信息;
(7)迁移工作空间中存储的资源;
(8)迁移工作空间中存储的其他信息,包括:图表、模型、视频地图、大屏以及表格等;
(9)将上述迁移完成的工作空间另存为目标数据库的 DM 数据库型工作空间。
关于 SuperMap iDesktopX 11i "工作空间迁移"插件详细使用说明可以参考技术博客:《SuperMap iDesktopX 11i 工作空间迁移插件使用说明》。
六、瓦片在MongoDB数据库中的管理
MongoDB 数据库( 3.4.2 版本)下载地址:
https://pan.baidu.com/s/1sNEhufsRdi-ztV1gZg4b9g?pwd=1nxk
MongoDB 数据库( 4.4.2 版本)下载地址:
https://pan.baidu.com/s/1rtILb77_YA76rSSCim6ijA?pwd=0ywo
MongoDB 数据库( 4.4.2 版本)安装教程:
https://www.runoob.com/mongodb/mongodb-window-install.html
1、用户验证方式启动MongoDB
(1)MongoDB 2.0版本
1)进入MongoDB数据库的bin目录下,执行cmd命令,按顺序执行以下命令:
//创建数据库命令:
use test
//创建对应的用户及密码;
db.addUser("map","map")
2)以验证方式重启 MongDB 服务
mongod.exe --dbpath C:\MongoDB\data --logpath C:\MongoDB\log\log.txt -auth
更多详细步骤可以参考帮助文档: https://help.supermap.com/iDesktop/zh/tutorial/TechDocument/MongoDBDatabaseGuide
(2)MongoDB 3.4版本
1)进入MongoDB数据库的bin目录下,执行cmd命令,按顺序执行以下命令:
use admin
db.system.version.insert({'\_id':'authSchema'},{$set:{'currentVersion':3}})
db.system.version.update({'\_id':'authSchema'},{$set:{'currentVersion':3}})
2)db.system.version.find() # 查看系统的信息,可以看到认证方式已经变为3了
3)创建数据库并创建用户
//创建数据库命令:
use Map
//为上面创建的数据库创建对应的用户;
db.createUser({user: "supermap",pwd: "123456",roles: [{role: "dbOwner", db: "Map"}]})
4)查看用户是否创建成功,已经查看用户信息,可以发现用户认证方式为MONGODB-CR
use admin
db.system.users.find({user:'supermap'})
5)停掉服务,然后以认证方式启动服务
mongod --dbpath D:\MD3.4\mongodb\data\db --setParameter authenticationMechanisms=MONGODB-CR --auth
更多详细步骤可以参考技术博客: https://blog.csdn.net/supermapsupport/article/details/122128422
(3)MongoDB 4.4版本
1)在MongoDB的安装目录下找mongod.cfg文件,打开该文件后找到安全认证的设置,去掉注释即为开启认证模式。
2)重启MongoDB服务,让修改配置项生效
3)验证是否开启认证模式
在MongoDB\Server\4.4\bin目录下打开cmd命令运行mongo.exe,查看数据库dbs,发现查询结果为空则代表开启认证模式成功
//进入mongo
mongo.exe
//查看数据库
show dbs
4)创建认证模式下的用户及密码
//创建数据库
use map
//为上面创建的数据库创建对应的用户及密码
db.createUser({user: "supermap",pwd: "123456",roles: [{role: "root", db: "admin"}]})
5)查看用户是否创建成功
//查看当前使用的数据库
db
//查看当前数据库下的用户
show users
6)验证用户是否可以访问数据库
//以认证模式登录数据库
db.auth("supermap","123456")
//查看数据库
show dbs
更多详细步骤可以参考技术博客 :https://blog.csdn.net/supermapsupport/article/details/127766208
2、MongoDB 二维瓦片管理
当瓦片储存类型为 MongoDB 型时,生成的瓦片切片文件,以分布式格式存储在服务器的数据库中,而本地会生成一个索引文件(*.sci)。MongoDB 类型的分布式切图服务,只支持5.0版本的瓦片。
与其他类型相比,MongoDB 型存储方式有以下优势:
- 切片存储于服务器中,地图切片的存取速度较快。
- 以分布式格式进行存储,便于数据分享与发布。
- MongoDB 中存储的瓦片数据支持直接进行拷贝提取,可将数据从一个 MongoDB 服务器拷贝到另一个 MongoDB 服务器,有利于数据传输与备份。
同时支持对瓦片数据进行管理,通过可视化界面,加载并查看不同瓦片数据的比例尺、坐标系、瓦片类型、瓦片范围等瓦片信息,同时支持合并、提取、类型转换等管理操作。
(1)二维瓦片在MongoDB中的表结构说明
1)metadatas结构
字段名称 | 字段类型 | 描述 |
---|---|---|
scaleDenominators | DOUBLE | 切图比例尺分母数组 |
originalPoint | POINT2D | 切图索引的起始,计算瓦片行列号的起始坐标点,默认为地图左上角。 |
resolutions | DOUBLE | 地面分辨率数组,单位是"坐标系单位/像素" |
tileWidth | INT32 | 瓦片宽度,单位"像素" |
mapStatusHashCode | STRING | 地图状态相关参数的哈希码 |
transparent | BOOLEAN | 图片是否透明 |
mapParameter | NULL | 原始地图的地图参数 |
tileType | STRING | 瓦片的类型 |
tileFormat | STRING | 缓存图片格式 |
bounds | RECTANGLE2D | 瓦片范围 |
tileRuleVersion | STRING | 瓦片规则的版本 |
prjCoordSys | OBJECT | 瓦片的坐标系 |
mapName | STRING | 原始地图名 |
tileHeight | INT32 | 瓦片高度,单位"像素" |
tilesetName | STRING | 瓦片集名称,是瓦片集的唯一标志 |
tileversions | ARRAY | 切片版本数组,一个切片集中可以有多个切片版本 |
indexBounds | OBJECT | 索引范围 |
highResolution | BOOLEAN | 是否为高分辨率 |
2)tiles_{tilesetName}结构
字段名称 | 字段类型 | 描述 |
---|---|---|
resolution | DOUBLE | 瓦片的分辨率,精确到小数点后6位 |
tile_column | LONG | 瓦片的列号,是瓦片在x方向上的索引 |
tile_row | LONG | 瓦片的行号,是瓦片在y方向上的索引 |
tile_id | STRING | 瓦片内容的唯一id,该id关联images_{tilesetName}集合的tile_id的字段,用于定位瓦片的二进制 |
create_time | LONG | 瓦片创建的时间戳 |
name | STRING | 图片名称 |
tile_formatName | STRING | 图片的类型 |
3)images_{tilesetName}结构
字段名称 | 字段类型 | 描述 |
---|---|---|
tile_id | STRING | 瓦片内容的唯一id ,该id 关联tiles_{tilesetName}集合的tile_id的字段,用于定位瓦片的二进制 |
tile_data | BYTE | 瓦片的二进制 |
4)styles_{tilesetName}结构
字段名称 | 字段类型 | 描述 |
---|---|---|
name | STRING | 风格名称,桌面生成时默认与mapName相同,如果设置同名时会被覆盖。 |
version | STRING | 此风格对应的版本标识 |
description | STRING | 用于对风格进行描述 |
style | BYTE | 风格内容(json风格文件) |
sprite_image | BYTE | 点符号,栅格填充符号集合 |
sprite_json | STRING | 点符号,栅格填充的符号描述信息 |
sprite_image_x2 | BYTE | 内容与sprite_image一样,只是放大2倍,在高分屏中使用该符号进行显示 |
sprite_json_x2 | STRING | 内容与sprite_json格式一样,只是时针对sprite_image_x2进行描述的 |
thumbnail | BYTE | 该风格的缩略图 |
(2)生成MongoDB瓦片
1)服务器名称:用于设置 MongoDB 服务器地址,例如:192.168.120.42。
2)数据库名称:用于设置数据库名称。若服务器是以非用户验证方式启动 MongoDB,则可单击下拉按钮选择服务器中已存在的数据库,或直接输入新数据库名称创建一个数据库;若服务器以用户验证方式启动 MongoDB,则不支持新建数据库,也不能读取到已有的数据库名称,只能在文本框中输入已存在数据库名称。同时在用户验证模式下启动数据库服务,可以在"用户名"和"密码"中输入管理员用户名和密码,这样数据库名称下拉项中就可以看到库中已存在的数据库名称。
3)用户名称/密码:若数据库已存在,则需输入该数据库对应的用户名称和密码;若为新建的数据库,则需用户设置数据库用户名称和密码。
(3)生成MongoDB(多版本)瓦片
多版本瓦片,一般是同一区域的不同时刻、不同内容的瓦片,应用于多时态数据,即通过生成多版本瓦片的方式来管理不同时刻不同内容的瓦片。通过版本控制当前只显示一个瓦片内容,从而展现一个地理空间数据随时间变化的动态效果。
传统瓦片只是研究某一个区域空间数据当下的空间信息,只反应数据当前的一个情况,是静态的,不能回看历史,也不能预测未来。多版本瓦片加入了时间的元素,可以展示地理实体或者现象的空间、属性随时间的变化而变化。研究该地理实体和现象的发展过程,以及分析其变化规律。
多版本瓦片特征:
- 多版本瓦片的重要特征之一是具有版本标识,在生成瓦片的同时要为该瓦片指定一个对应的版本名称,用以标识该瓦片。
- 生成多版本瓦片,瓦片只支持存储在 MongoDB 数据库中。
1)存储类型:在生成多版本瓦片中,需设置存储类型为"MongoDB(多版本)";
2)版本名称:为当前输出的瓦片指定一个版本名称,用来标识该瓦片。关于版本名称的写法完全由用户的需求而定,这里不做限制。如果在版本名称下拉框中选择已有瓦片版本名称,则可以对该版本已有瓦片进行更新。
-
若要放到一个多版本瓦片中管理,接下来的瓦片生成设置中,每个版本必须使用相同的瓦片配置文件名称和相同数据库名称,各版本的瓦片名称及数据库名称必须保持一致。
-
多个版本瓦片之间,需要比例尺和地图瓦片索引范围保持一致。如果用户设置上不保持一致,可能导致瓦片出现问题。
(4)瓦片提取
SuperMap iDesktopX 产品支持瓦片提取功能,通过指定特定比例尺及自定义提取范围,实现瓦片数据的提取管理。
应用场景:大范围瓦片数据的提取,可指定提取区域及瓦片比例尺,免去用户常规裁剪、提取等繁琐的操作过程。例如,当某省需要将高清影像数据提取给各区市县,只需要将区市县的行政边界作为提取范围,即可将瓦片提取至对应区域。同时还可指定提取比例尺,当精度过高的数据,在提取时需要限制数据精度级别,则可通过选择比例尺,无需重复切图,即可便捷快速的提取数据。
操作说明:
1)添加待提取瓦片 :添加 MongoDB 瓦片或本地瓦片。
2)提取瓦片 : 在瓦片管理面板单击工具条中的"提取"按钮。
3)弹出提取瓦片对话框,在对话框内设置如下参数:
-
瓦片名称 :通过下拉选项,选择待提取瓦片,默认显示为瓦片管理列表框内的第一条记录。
-
比例尺 :比例尺列表框中显示当前地图瓦片的比例尺,勾选复选框,确定提取比例尺。
-
提取范围 :对提取瓦片范围进行设置。应用程序提供四种设置方式:整幅地图、当前窗口、自定义范围以及复制粘贴范围。
当使用选择对象设置范围时,需先将范围面图层添加至当前瓦片管理窗口,才可使用选择对象选项,程序将按照选择对象的外接矩形作为提取范围。
- 结果设置 :设置存储提取数据的MongoDB数据库,包含服务器名称、数据库名称、瓦片名称等参数信息。
4)完成上述参数设置,即可执行提取瓦片的操作。
(5)瓦片合并
SuperMap iDesktopX 支持瓦片合并功能,将指定本地瓦片或者 MongoDB 瓦片转存到目标 MongoDB 数据库中,目标 MongoDB 数据库可以是已有,同时也支持转存至新建 MongoDB 数据库。
应用场景:整合不同区域的数据或同一区域不同时期的数据,避免了用户重复切图,提升了工作效率。
瓦片合并条件
在进行 MongoDB 瓦片合并前需确保本机启动了 MongoDB 服务,同时合并的瓦片还需要具备以下条件:
- 合并瓦片的坐标系一致。
- 瓦片块大小一致。
- 合并瓦片的源点坐标一致,源点坐标即索引范围一致,可在生成地图瓦片时对瓦片范围参数设置时调整成一致。
- 合并瓦片的图片类型相同。
注意 :合并瓦片必须同时满足以上四个条件,合并才能成功,否则将提示合并失败。
支持合并的瓦片类型
- 栅格瓦片:WEBP、PNG、DXTZ、GIF、JPG、JPG_PNG、PNG8。
- 矢量瓦片
合并方式
支持本地瓦片与 MongoDB 瓦片之间相互合并,具体分为:
- 支持本地瓦片与 MongoDB 瓦片之间进行合并;
- 支持 MongoDB 瓦片与 MongoDB 瓦片之间进行合并;
- 本地与本地瓦片合并存储为 MongoDB 瓦片。
瓦片合并重叠部分处理:
栅格瓦片合并
-
当选择合并的瓦片图片类型为 PNG 且背景透明时,瓦片重叠区域程序会做融合处理,可用于处理数据合并接边的问题。
-
当选择合并的瓦片类型为 JPG_PNG 格式时,对于包含无效数据像元的切片(地图边界处),其文件格式为 PNG,否则为 JPG 格式,瓦片重叠区域程序可根据瓦片是否包含无效数据像元来自动判断使用哪种格式,可用于解决瓦片接边处的白图问题。
-
除上述两种瓦片类型,其他类型合并瓦片的重叠区域均按照瓦片合并顺序进行覆盖操作。
矢量瓦片合并
-
矢量瓦片数据:合并重叠区域的矢量瓦片均按照瓦片合并顺序进行覆盖操作。
-
瓦片风格:若合并的矢量瓦片风格不一致,按照合并顺序,后一同名风格文件会被替换,不同名的风格文件会被保留。
操作说明:
1)添加瓦片 :支持添加 MongoDB 瓦片和本地瓦片。
2)合并瓦片 : 在瓦片管理面板单击工具条中的"合并"按钮。
3)弹出合并 MongoDB 瓦片对话框。
4)在对话框的左侧设置合并数据的存储方式,程序提供两种方式:
-
方式一: 合并至已有 ,即将多个版本的数据合并至已存在的某一版本的瓦片数据中,可单击右侧下拉框,在下拉列表中选择瓦片名称。
-
方式二: 合并至新建 ,即设置新的 MongoDB 数据库作为合并后数据的存放位置。输入以下MongoDB 瓦片参数:服务器名称、数据库名称、及设置合并后瓦片的名称(即瓦片根目录的名称)。
5)在对话框右侧设置区域,设置参与合并的瓦片、合并顺序以及合并后的目标版本:
-
参与合并版本:在瓦片列表前勾选参与合并的瓦片;
-
瓦片顺序:列表中瓦片的上下顺序影响合并结果,通过瓦片列表框上侧的顺序调整按钮,调整瓦片的合并顺序。合并操作顺序是由上到下依次进行。
6)目标版本 :支持将多版本合并为一个版本,同时支持合并至一个数据库下多个版本。
-
若要将多个版本合并为一个版本,此处目标版本的名称应设置为同一名称;例如将四川省和青海省两省的电子地图合并为一份数据,此处目标版本名称一致。
-
若是将不同数据库的不同版本合并至当前数据库的多版本,则可保持不同版本的名称,即为同一数据库下不同版本。例如将分别在5个数据库的不同月份的降水数据合并到一个数据库下的不同版本,此处保持不同版本名称。
7)边界数据集:当待合并瓦片为栅格瓦片时(除DXTZ、GIF格式外),支持添加边界数据集以提高重叠区域合并接边的效率。边界数据集需要包含待合并瓦片在重叠区域中的共同边界。注意:该功能目前仅在待合并瓦片均为MongoDB瓦片时生效。
8)开启多进程 :支持设置多进程进行瓦片合并,用户可根据机器资源合理设置进程数,提升合并性能。
9)单击确定按钮,执行合并操作,合并完成后,在输出窗口会给出合并成功的提示。可在瓦片管理界面重新添加,使用冲突检测功能检查合并后的瓦片数据。
(6)类型转换
瓦片类型转换支持本地原始瓦片、本地紧凑瓦片和MongoDB瓦片之间的相互转换。
应用场景:适应不同场景所需的存储瓦片类型,避免了用户重复切图,提升了工作效率。
操作说明:
1)添加待转换的瓦片。
2)类型转换 : 在瓦片管理面板单击工具条中的"类型转换"按钮。
3)弹出类型转换对话框,详细参数如下:
-
瓦片名称:选择待转换的瓦片名称
-
存储类型:选择目标转换类型,支持本地紧凑、本地原始、Mongo瓦片。
-
目标SCI路径:输入本地瓦片的本地路径。
-
服务器地址:输入存储地图瓦片的 MongoDB 服务器的地址。
-
数据库名称:输入存储地图瓦片的数据库名称。
-
瓦片名称:输入地图瓦片的名称,即瓦片根目录的名称。
-
用户名称/密码:若数据库设置了用户名和密码,则需输入该数据库对应的用户名称和密码。
-
开启多线程:支持设置多进程进行瓦片类型转换,用户可根据机器资源合理设置进程数,提升合并性能。
4)点击 确定,执行类型转换操作。
3、MongoDB 三维瓦片管理
SuperMap iDesktopX 产品支持将三维瓦片存储到MongoDB 库中,数据存入MongoDB 数据库后,会在指定路径生成配置文件。
(1)三维瓦片在MongoDB中的表结构说明
1)metadatas结构
字段名称 | 字段类型 | 描述 |
---|---|---|
TilesetName | STRING | 瓦片集名称,是瓦片集的唯一标志 |
Version | STRING | 瓦片版本号 |
DataType | STRING | 三维地理空间数据类型 |
FileType | STRING | 文件类型 |
RenderMode | STRING | 渲染模式 |
TileSplitType | STRING | 瓦片划分类型 |
AttributeExtentName | STRING | 属性扩展名称 |
VertexCompressionType | STRING | 顶点压缩类型 |
Position | STRING | 插入点,单位为度 |
GeoBounds | STRING | 地理空间范围 |
Crs | STRING | 瓦片参考坐标系 |
TileInfo | STRING | 瓦片信息 |
AttachFiles | STRING | 附加文件 |
PointCloudLayers | STRING | 点云数据 |
HeightRange | STRING | 高度范围 |
WDescript | STRING | w位描述信息 |
2)Tileset_{tilesetName}结构
字段名称 | 字段类型 | 描述 |
---|---|---|
Tileset_Key | STRING | 瓦片集根节点的信息 |
Tileset_Value | BINARY | 瓦片集根节点的信息 |
(2)连接MongoDB数据库
操作说明:
1)三维数据选项卡->三维瓦片->瓦片管理->连接数据库按钮,弹出连接数据库窗口。
2)连接信息:设置 MongoDB 服务器和数据库的相关信息,在使用该功能前,需先启动 MongoDB 服务,参数说明如下:
- 服务器名称:输入服务器的 IP 地址。
- 数据库名称:只能在文本框中输入已存在数据库名称。
- 用户名称:输入MongoDB 数据库的用户名称。
- 用户密码:输入进入 MongoDB 数据库的密码
3)连接MongoDB数据库成功后,会在瓦片管理界面显示当前数据库中已有的瓦片数据。
(3)三维瓦片查删操作
连接数据库后,在瓦片管理界面中选中瓦片数据节点,单击右键,将瓦片数据添加到场景中或删除。
注意: 对 MongoDB 数据库中瓦片的删除操作是不可恢复的。
(4)三维瓦片保存到MongoDB
操作说明:
1)三维数据选项卡->三维瓦片->瓦片管理->保存到MongoDB 按钮,弹出保存到MongoDB 窗口。
2)文件列表:显示添加的配置文件。从左到右图标使用方式为:添加配置文件、删除列表中已选的配置文件、设置是否显示配置文件的绝对路径。
3)连接信息:设置 MongoDB 服务器和数据库的相关信息,在使用该功能前,需先启动 MongoDB 服务,参数说明如下:
-
服务器名称:输入服务器的 IP 地址。
-
数据库名称:只能在文本框中输入已存在数据库名称。
-
用户名称:输入MongoDB 数据库的用户名称。
-
用户密码:输入进入 MongoDB 数据库的密码
4)输出配置文件:设置参数说明如下:
-
目标路径:用于设置新生成的 *.scp 文件保存路径,可单击该组合框右侧按钮,选择文件保存路径,或在文本框中直接输入保存路径。目标文件的默认保存路径与源配置文件的路径一致。
-
数据名称:用于设置和显示倾斜摄影数据在 MongoDB 数据库中的保存名称。
-
纹理压缩格式:当倾斜摄影数据保存到MongoDB 数据库时,此参数控件才会显示。目前支持七种压缩类型:WebP、DXT(PC设备)、PVRTC(iOS系列设备)、ETC(Android系列设备)、CRN_DXT5(PC设备)、标准CRN、KTX2.0,默认为DXT(PC设备)。对于不同用途的数据,采用不同的纹理压缩方式,可以减少纹理图像所使用的显存数量。
(1)WebP:适用于 Web端/PC机上通用的压缩纹理格式。数据总量减少,提高传输性能。
(2)DXT(PC设备):适用于 PC 机(个人计算机)上通用的压缩纹理格式。显存占用减少,提升渲染性能,但是数据总量会增加。
(3)CRN_DXT5(PC设备):显存占用少许减少,数据总量大幅度减少,但是需要较长的处理时间。
(4)标准CRN:显存占用少许减少,数据总量大幅度减少。处理相同数据,所需时间比CRN_DXT5长。
(5)KTX2.0:显存占用少许减少,数据总量大幅度减少。处理相同数据,所需时间比标准CRN长。
5)设置完以上参数后,单击"确定"按钮,即可执行数据保存到MongoDB数据库的操作。
七、可能遇到的报错及解决办法
1、Oracle类
问题一:Oracle报错:ORA-12541: TNS:no listener
解决办法:
(1)检查监听地址是否正确:打开"开始"菜单,找到Oracle的Net Manager,找到LISTENER,检查地址是否包含:本地访问127.0.0.1
(2)检查服务是否启动:打开"服务",找到OracleOraDb11g_home1TNSListener,如果没有运行请手动启动,如果已经在运行则重启该服务。
问题二:桌面软件中打开Oracle数据源的按钮显示为灰色不可用,是什么原因?
解决办法:
1.安装Oracle客户端;
2.Oracle位数和iDesktop一致;
3.使用第三方工具检查是否可以连接;
4.检查环境变量的PATH路径是否有Oracle安装路径,如果没有,手动添加进去
问题三:直接在Oracle数据库中成功删除某条数据,但是桌面软件打开数据集查看属性表会出现一条空的记录?
解决办法:
直接在Oracle数据库中删除数据表只会删除数据的属性、空间关系等,但是不会删除数据的记录条数,这是由另一张表SmRegister里面的smrecordcounts字段控制的,还需要修改这个值才可以。
问题四:打开Oracle数据源失败,提示"无系统表,且非扩展展开"
解决办法:
无系统表说明该用户名没有在桌面中创建数据源,需要先新建数据库型数据源。
问题五:创建Oracle数据源失败,提示"该用户名已存在数据源"
解决办法:
这个错误说明该用户名已经是我们的数据源了,可以直接打开,需要注意的是Oracle是一个用户名对应一个数据源,如果需要创建多个数据源可以新建多个用户名。
2、MySQL类
问题一:MySQL报错:保存工作空间失败,sxwu中读取XML信息失败,MySQL Got a packet bigger than ‘max_allowed_packet’ bytes,如何修改?
解决办法:
my.ini中max_allowed_packet这个默认值太小了数据没法传输进去,导致保存失败了,将值改大一些,再重启服务。
问题二:MySQL数据源不支持保存中文名称的数据集吗?
解决办法:
可以支持中文名称,以保证不乱码,需要在my.ini文件里面设置一下默认的字符集编码为utf8,然后重启服务。
问题三:MySQL每隔8小时就会自动断开,怎么解决?
解决办法:
修改MySQL配置参数wait_timeout,其默认值为 28800秒(8小时)。其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL会主动断开这个连接。
问题四:桌面软件新建MySQL数据库型数据源失败是什么原因?
具体报错:
[error] 值域表 SmDomains 创建失败,
[error] Failed Exec strSQL : SELECT a.DomainID,a.DomainName,a.DomainDescription,a.DomainType,b.FieldType,b.DomainRangeInfos FROM kjsj.SmDomains a, kjsj.SmRangeDomains b WHERE a.DomainID=b.DomainID-Unknown error 1146,
[error] Failed Exec strSQL : CREATE TABLE kjsj.SmDomains(DomainID INT NOT NULL PRIMARY KEY,DomainName VARCHAR(64) NOT NULL,DomainDescription VARCHAR(256),DomainType INT NOT NULL) ENGINE = MyISAM-Unknown error 3161
问题原因:
客户部署的MySQL使用的innodb引擎,iDesktop默认MySQL使用myisam引擎,导致创建系统表时失败。
解决办法:
打开在iDesktop安装目录的Bin文件夹下面的SuperMap.xml配置文件,修改MySQLEngineType参数为对应引擎,重启iDesktop,重新新建数据库型数据源即可。MySQLEngineType参数如下:
<!–MYISAM:1, InnoDB:2MEMORY:3,NDB:4 after 802–>
<MySQLEngineType>1</MySQLEngineType>
3、DM类
4、PostgreSQL类
问题一:桌面软件新建PostgreSQL数据源报错:“relation “sm_seq_datasource” already exists”,如何解决?
解决方法:
该报错为有库或表重复问题,具体可以从以下三方面排查:
(1)检查用户操作是否合法,是否已存在库名和新建数据源名称一样;
(2)PostgreSQL区分大小写,PostgreSQL对大小写敏感,PostgreSQL官方推荐命名方式都是小写+下划线,比如系统索引表命名:pg_indexes;
(3)检查是否因为主键约束名等于表名,创建主键约束期间触发了错误"关系已存在"
4、其他
问题一:桌面打开数据库型数据源报错could not create index “idx_smregister”,如何解决?
解决方法:
连接对应的数据库,找到smregister表,删除表中的重复数据。