博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle业务表和视图在SuperMap中的应用
阅读量:4163 次
发布时间:2019-05-26

本文共 3103 字,大约阅读时间需要 10 分钟。

作者:皇皇

一、 业务表和视图跟数据集表的不同

SuperMap中Oracl数据是通过Oracl数据源(Datasource:是存储空间数据的场所)统一管理的,所以客户直接在数据库里面创建的业务表和视图就无法在打开的Oracl数据源里面查看到。
用SuperMap iDesktop 7C打开Oracl数据源,可以查看到点数据集Capital,但无法找到业务表,如图一。
这里写图片描述
图一
在PL/SQL工具中,用Oracl数据源相同的用户打开数据库,可以查询到业务表BUSINESSTABLE1和BUSINESSTABLE1, 如图二。
这里写图片描述
图二

二、 关联业务表或者视图做专题图

虽然数据源里面找不到业务表,但是我们依然可以在SuperMap中使用。
下面我们用业务表BUSINESSTABLE1的COUNTRY_CH字段值给点数据集Capital制作标签专题图为例,给大家演示如何在SuperMap中使用业务表。
1. 关联业务表制作标签专题图
通过SQL语句”select * from BUSINESSTABLE1”查询可以看见业务表BUSINESSTABLE1的内容: COUNTRY_CH字段的值;
Capital表和业务表BUSINESSTABLE1的关联字段是smid。如图三。
这里写图片描述
图三
以下代码示范如何用关联字段smid构造一个连接信息类,用业务表的COUNTRY_CH字段值制作标签专题图。结果如图四。

public void JoinItemSample()        {            // 从数据源里得到名为 “Capital”的数据集            Dataset dataset = workspace.Datasources[0].Datasets["Capital"];            // 构造连接信息类对象,获得用于连接的表名            JoinItem joinitem = new JoinItem();            // 设置连接信息类的属性            String  foreignTableName = "BUSINESSTABLE1";             joinitem.ForeignTable = foreignTableName;            joinitem.JoinFilter = "Capital.smid =" + foreignTableName + ".smid";            joinitem.JoinType = JoinType.LeftJoin;            joinitem.Name = "连接";            // 设置连接信息集合类,将连接信息加入到连接信息集合中            JoinItems joinitems = new JoinItems();            joinitems.Add(joinitem);            QueryParameter queryParameter = new QueryParameter();            queryParameter.JoinItems = joinitems;            //生成默认的标签专题图            ThemeLabel themeLabel = new ThemeLabel();            //设置表达式            themeLabel.LabelExpression = foreignTableName +".COUNTRY_CH";            //添加标签图层            Layer layerThemeLable = this.mapControl.Map.Layers.Add(dataset, themeLabel, true);            layerThemeLable.DisplayFilter = queryParameter;            mapControl.Map.Refresh();        }

这里写图片描述

图四
2. 关联视图做专题图
如果我们用到的数据不在同一张业务表,就需要先把业务表按照要求创建视图再用上面的方法在SuperMap中使用。
以下示范如何把两张业务表用SQL语句创建视图,然后用视图制作标签专题图。
要求:是把业务表BUSINESSTABLE1的COUNTRY_CH字段值和业务表BUSINESSTABLE2的CAPITAL_CH字段值组成一个字段值VWNAME,用以创建标签专题图。
创建视图的SQL语句:
create view vw_CAPITAL as select BUSINESSTABLE1.SMID, (BUSINESSTABLE1.COUNTRY_CH || BUSINESSTABLE2.CAPITAL_CH) as vwname from BUSINESSTABLE1 join BUSINESSTABLE2 on BUSINESSTABLE1.Smid=BUSINESSTABLE2.SMID;
这里写图片描述
业务表BUSINESSTABLE1
这里写图片描述
业务表BUSINESSTABLE2
这里写图片描述
创建的视图vw_CAPITAL
创建的视图vw_CAPITAL使用方法和业务表一样。结果如图五
这里写图片描述

三、 关联业务表或者视图进行SQL查询

除了制作专题图之外,我们还可以关联外部表和视图进行查询
以下代码示范如何构造一个连接信息类,关联视图进行SQL查询。

JoinItem joinitem = new JoinItem();String foreignTableName = "vw_CAPITAL";// 设置连接信息类的属性joinitem.ForeignTable = foreignTableName;joinitem.JoinFilter = "Capital.smid=" + foreignTableName + ".smid";joinitem.JoinType = JoinType.LeftJoin;joinitem.Name = "连接";// 设置连接信息集合类,将连接信息加入到连接信息集合中JoinItems joinitems = new JoinItems();joinitems.Add(joinitem);// 设置查询参数QueryParameter parameter = new QueryParameter();parameter.JoinItems = joinitems;//连接外部表parameter.CursorType = CursorType.Static;parameter.HasGeometry = false;parameter.ResultFields = new String[] { "Capital.*",foreignTableName + ".vwname" };Recordset rec = dtv_C.Query(parameter);

查询结果保存在Recordset里面,再用于其他操作,业务表查询方法相同。我们把查询结果用表格展示出来。未关联视图时SQL查询结果如图六,关联视图时SQL查询结果如图七。

这里写图片描述
图六
这里写图片描述
图七

注意:做以上操作首先保证这些表格都在同一个用户下,再者需要有关联字段。

你可能感兴趣的文章
信息类产品检测培训讲义-EN55022
查看>>
信息类产品检测培训讲义-EN55024
查看>>
PHY管理接口(MDIO)
查看>>
高速信号端接技术
查看>>
嵌入式ARM微处理器选型指南
查看>>
硬件芯片选型原理图设计
查看>>
对通用输入输出GPIO的深入理解
查看>>
单片机IO引脚驱动能力的提高
查看>>
巧妙的处理 spring boot中的静态资源
查看>>
MySQL5.7版本sql_mode=only_full_group_by问题解决办法
查看>>
springboot 打包运行
查看>>
springboot 中日志使用记录
查看>>
Windows系统下查看电脑已经连接的WiFi的密码
查看>>
java注解学习
查看>>
java代码一些注意提升技巧
查看>>
安装docker以及docker常用命令
查看>>
java解决下载文件出现中文乱码问题
查看>>
docker 安装以及部署springboot项目和连接mysql
查看>>
docker安装nginx并部署一个静态项目
查看>>
钉钉开发之业务事件回调
查看>>