三方矢量数据直连读写指南
针对Shapefile、FileGDB、GeoPackage 及 ArcSDE_Oracle 矢量数据,SuperMap 平台提供的直连机制支持直接读取原始数据,并允许用户进行实时浏览、查询、编辑及空间分析等全套操作,同时处理结果可直接保存至第三方矢量文件中。该模式避免了传统流程中数据转换所耗费的时间与可能的信息失真,对于大体量矢量数据,能实现快速接入与高效处理,从而显著提升数据价值利用率。
表一:三方矢量数据直连功能概览
本表简要说明三方数据直连的支持情况。图例说明:“√”表表示支持,“×”表示不支持。
| 支持格式 | 读取 | 编辑 | 分析结果直存 | 备注 |
| ShapeFile | √ | × | √ |
采用矢量文件引擎(EngineType.VECTORFILE)连接。 |
| FileGDB | √ | √ | √ |
|
| GeoPackage | √ | √ | × | |
| ArcSDE_Oracle | √ | × | × |
表二:三方矢量数据直连功能详细说明
本表展示了各功能模块对第三方矢量数据的支持情况。图例说明:“√”表示支持,“×”表示不支持,“--”表示不涉及。
| 功能模块 | 功能名称 | FileGDB | Shapefile | GeoPackage | 备注 |
| 数据源连接 | 直接打开 FileGDB | √ | -- | -- | 打开 FileGDB,需指定FileGDB文件夹路径,打开 Shapefile、GeoPackage,需指定完整路径(包含 .shp、.gpkg 扩展名)。 |
| 直接打开 Shapefile | -- | √ | -- | ||
| 直接打开 GeoPackage | -- | -- | √ | ||
| 元数据读取 | 读取数据范围 | √ | √ | √ | |
| 读取坐标系定义 | √ | √ | √ | ||
| 读取几何类型 | √ | √ | √ |
|
|
| 读取字段结构 | √ | √ | √ | 支持的字段类型参考表四。 | |
| 几何与属性查询 | 空间查询 | √ | √ | √ | |
| 属性查询 | √ | √ | √ | ||
| SQL查询 | √ | √ | √ |
|
|
| 几何与属性编辑 | 编辑对象 | √ | × | √ |
|
| 新增字段 | √ | × | √ |
|
|
| 删除字段 | √ | × | √ | ||
| 修改字段信息(字段名、长度、默认值等) | × | × | × | ||
| 高级特性 | 值域 | × | × | × | |
| 子类型 | × | × | × | ||
| 条件值 | × | × | × | ||
| 附件管理 | × | × | × | ||
| 数据集分组 | √ | -- | -- |
|
|
| 版本管理 | × | × | × | ||
| 属性和空间索引 | √ | √ | √ |
|
|
| 分析结果直存 | 将分析结果直接保存为FileGDB | √ | -- | -- | |
| 将分析结果直接保存为Shapefile | -- | √ | -- | ||
| 将分析结果直接保存为GeoPackage | -- | -- | × | ||
| 数据集管理 | 新建、删除、复制、重命名数据集 | √ | -- | √ |
|
| 多进程/线程 | 多线程读取 | √ | √ | √ | |
| 多进程编辑 | × | × | × | ||
| 事务提交 | × | × | × |
表三:支持的数据集类型
本表展示了直连数据源中各类数据集的支持情况。图例说明:“√”表示支持读取和编辑,“只读”表示仅支持读取,“×”表示完全不支持或该格式不包含此数据集类型。
| 数据集类型 | FileGDB | Shapefile | GeoPackage |
| 二三维点线面 | √ | 只读 | √ |
| 多点 | 只读 | 只读 | × |
| 属性表 | √ | × | √ |
| 文本 | 只读 | × | × |
| 关系类 | × | × | × |
| 网络 | × | × | × |
|
拓扑 |
× | × | × |
表四:支持的字段类型
本表展示了数据集中支持的字段类型。图例说明:“√”表示支持读取和编辑,“只读”表示仅支持读取,“×”表示完全不支持或该格式不包含此数据集类型。
| 数据集类型 | FileGDB | Shapefile | GeoPackage |
| INT16 | √ | 只读 | √ |
| INT32 | √ | 只读 | √ |
| INT64 | 只读 | 只读 | 只读 |
| DOUBLE | √ | 只读 | √ |
| SINGLE | √ | 只读 | √ |
| TEXT | √ | 只读 | √ |
| WTEXT | × | × | × |
| JSONB | × | × | × |
| CHAR | × | × | × |
| BOOLEAN | × | 只读 | 只读 |
| DATETIME | √ | 只读 | √ |
| DATE | × | × | × |
| TIME | × | × | × |
| BYTE | × | × | × |
| LONGBINARY | √ | × | √ |
表五:支持的SQL查询功能
本表展示了 SQL 查询功能中关键字的支持情况。图例说明:“√”表示支持,“×”表示不支持。
| SQL查询类别 | SQL关键字 | 支持情况 |
| 条件查询 | WHERE clause 语句 | √ |
| DISTINCT 去重 | √ | |
| LIKE 模糊匹配 | √ | |
| IN 值列表匹配 | √ | |
| BETWEEN 范围匹配 | √ | |
| 聚合与分组 | GROUP BY 分组 | √ |
| COUNT()、SUM()、AVG()等聚合函数 | √ | |
| HAVING 分组后过滤 | × | |
| 排序与分页 | ORDER BY 排序 | √ |
| LIMIT 分页 | × | |
| 高级查询 | JOIN 多表关联查询 | × |
| SELECT 嵌套查询 | × | |
| UNION 联合查询 | × | |
| AS 别名 | √ | |
| 存储过程/函数 | × |
注意事项:
- Geopackage 文件打开失败,可能是因为包含了 MultiCurve、CurvePolygon、CompoundCurve 几何类型的数据,当前 Geopackage 不支持参数化对象。
- 新建数据集未设置数据集范围,新增对象的坐标值不允许小于 -2147483647(即不小于 INT32 位的最小取值),否则会导致对象创建失败。如果已预先设置了有效的数据集范围,则新增对象的坐标值不受此限制影响。
- 复制数据集到矢量文件,如果源数据集存在 INT64 位字段,复制到矢量文件后 INT64 字段会丢失,因为当前版本不支持创建 INT64 字段。
- Geopackage 的日期(DATETIME)字段进行 SQL 查询时,如果您输入的查询条件值(如 "2025/08/21 17:08:07"),需要修改为文件中实际存储的日期格式("2025-08-21T17:08:07",日期和时间改为"T"连接),才能成功查询出结果,否则查询失败,因为 Geopackage 文件中的 DATETIME 字段采用“YYYY-MM-DDT00:00:00”的格式存储。特别的,如果您使用 SuperMap 平台保存的日期值,这里的查询条件值需修改为 "2025-08-21T17:08:07.000",因为 SuperMap 平台保存的时间精度为毫秒。
- 在 FileGDB、Geopackage 中新建数据集不支持设置编码类型,这是因为 FileGDB 和 GeoPackage 的字符编码由数据格式自身规范统一管理,SuperMap 不单独维护数据集的编码属性。因此,当将其他数据源中的数据集(如 UDBX 数据源中的数据集)复制到 FileGDB 或 GeoPackage,复制完成后,在 SuperMap 中查看该数据集的编码类型将显示为“未编码”。
相关主题