SuperMap Object 基本编程,在转载的基础上,进行个人整理。

一. 工作空间

1.打开工作空间

SuperWorkSpace.open(); ,有文件和数据库的区别

说明:打开工作空间时,会自动打开对应的数据源;但如果对应的数据源,因数据库服务器信息调整等原

因,没有自动打开时并不强制报错,可以检查是否正确,并用程序调整数据源的连接信息等,以后会重新

自动打开。

2.工作空间的保存

SuperWorkSpace.save();

3.工作空间的保存

SuperWorkSpace.saveAs(); ,有文件和数据库的区别

说明:保存工作空间时,会自动保存对应的数据源;数据库型时,工作空间数据库,可以是空库,SM会自

动建立SmWorkspace数据表,每个工作空间对应一条记录。

二. 数据源

1.

创建数据源

SuperWorkSpace.createDataSource() 有文件和数据库的区别

2. 打开数据源

SuperWorkSpace.openDataSource(),文件型

SuperWorkSpace.openDataSourceEx()数据库型

说明:

1)如果已经打开过工作空间,且还没有关闭,打开新的数据源时,该数据源会被附加到这个工作空间里。

2)无率是文件型,还是数据库型的工作空间,可以存在多个数据源,且允许是文件型或数据库型数据源。

3. 获得数据源

SuperWorkSpace.DataSource.item()

4. 关闭数据源,只是从工作空间中移出,并不真正删除。

SuperWorkSpace.DataSource.Remove()

SuperWorkSpace.DataSource.RemoveAll()

三. 数据集

1. 创建数据集

soDataSource.createDataset();

说明,每个数据集对应一个数据表,表名同数据集的名称。

2. 获得数据集

soDataSource.Datasets.Item();

SuperWorkspace.DataSources.Item(i).Datasets.Item(i)

SuperMap.Layers.Item(i).Dataset

SuperMap.Selection.item(i).Dataset

3. 删除数据集

SoDatasource.DeleteDataset()

4.显示数据集

soLayers.addDataset()

soLayers.Refresh()

5.与soDatasetVector 对象的关系,可以简单互相转换

soDatasetVector objDtv = (soDatasetVector)objDataset; 反向转换同理

5、从数据集加入到图层时,样式处理问题

1)点 击SuperWkspManager节点事件,应该写的是点击数据集的情况下,将数据集添加到地图窗口吧,数

据集肯定是不能展示风格,如果你希望每次打开 数据集时都有原来的风格,建议将之前的风格保存为XML

(TOXML),下次点击时调用XML(FROMXML)。

2)每个图层都可导入风格XML文件,地图是不需要设置的,因为地图中的图层保存了风格信息,但数据集

是不保存风格的。

3)读写都是XML字符串的方式,字符串的保存,以及与数据集的对应关系,需要自己处理;如数据库型时

要加表和字段,文件型时自己处理对应的文件和内容。

4)个人总结,尽量用CAD型保存数据,这样风格等的处理不麻烦;但调整样式时,需要按对象循环修改;

生成等值线等时,要先建立临时图层,将对象复制到允许的点或线图层。

四.基本操作

1. SuperMap.Action seAction 常量

SuperMap.Action=seAction.scaZoomIn地图放大

SuperMap.Action = seAction.scaZoomOut;地图缩小

SuperMap.Action = seAction.scaZoomOut;地图自由缩放

SuperMap.Action = seAction.scaPan;地图漫游

SuperMap.ViewEntire() 全幅显示地图

2. 编辑操作

SuperMap.Action = seAction.scaSelect;点击选择对象

SuperMap.Action = seAction.scaNull;取消工具选择

SuperMap.Action=scaEditCreatePoint

SuperMap.Action= scaEditCreatePolyline

SuperMap.Action= scaEditCreatePolygon

seAction中有手工画点、线、各种面、各种线、文字等功能,详细看帮助。

3. 跟踪层编辑

SuperMap.Action= scaTrackPoint

SuperMap.Action= scaTrackPolyline

SuperMap.Action= scaTrackPolygon

五. 图层管理

可以通过SuperLegend控件实现可视化的管理。更新后SuperMap.Refresh()

也可以通过图层的soLayer.Editable ,soLayer.Selectable,soLayer.Snapable,soLayer.Visible 来

进行设置。

1. 点线面等简单类型图层的风格设置: 只能按图层设置统一的风格,且必须保存地图,用时要打开地图

supermap.layers(i).style

supermap.showstylePicker(soStyle, Dimension)

说明,CAD等复杂类型的图层,风格必须按对象设置,不用保存地图。

2. 文本层的图层风格:

SuperMap.ShowTextStylePicker()

3. 地图的操作:

SuperMap.SaveMapAs() 另存地图,首次建立一个地图文件时用此,要指定虚拟的文件名。

SuperMap.SaveMap() 保存当前地图

SuperMap.OpenMap() 打开指定的地图

注意,

1)简单图层的样式、地图的背景、图层的选择、专题图等信息是保存的地图文件中的。

2)保存工作空间时,必须保存地图;打开工作空间时,必须打开地图;否则以上信息会丢失,或不显示。

3)地图文件是保存在工作空间中的,不是真正的单独存储。

4)一个工作空间允许保存多个地图文件,这样相对灵活。

4. 按指定的比例尺显示:soLayer.VisibleScaleMax, soLayer.VisibleScaleMin

按对象大小进行过滤显示,象素显示,filterk可以进行筛选显示。

5.说明,图层名称 = 数据集名称 + "@" + 数据源别名

六. 记录集 soRecordSet

1. 获得记录集

soDatasetVector.Query(sql,true) sql为查询语句,相当于where条件,但通配符与标准SQL不同,要查

帮助。

soRecordset soDatasetVector.Query(strSQLFilter,bHasGeometry,[objFields], [strOptions])

bHasGeometry一般不用,直接写false;Fields为指定要获取的字段,否则为全部字段;strOptions为排

序或分组等,与SQL 语句同。

soDatasetVector.QueryEx(sql,true)

soDatasetVector.QueryByDistance(sql,true)

soSelection.toRecordset()

2. 添加记录:

soRecordset.addNew()

纯属性表的添加 soRecordSet.AddNew(nothing)

3. 几何对象的添加:soGeometry

RecordSet.getGeomotry()

Recordset.setGeometry()

从事件获得:Geometry_Selected()

SuperMap.AfterGeometryAdded()

4. 选择集与记录集

selection.toRecordset() 根据地图选择的对象,生成记录集,以便程序修改或调整风格等。

selection.FromRecordset() 根据记录集,自动选择地图上的对象,避免用户一个个的手工选择。

5. 不选中到选中

soSelection.Remove

soSelection.RemoveAll

6. 通过地图查询属性的过程

选取对象()->得到记录集->取值显示

selection.toRecordset()->soRecordset.GetFieldValue

7. 通过属性查询地图的过程

查询条件的设置->获得查询记录集->添加到选择集

layer.Dataset->soDatasetVector->soDatasetVector.Query(sql,true) -> selection.FromRecordset()

七. 跟踪层

跟踪层是所有图层的最上面一层,有Layer才有TrackingLayer

跟踪层临时放在内存中,关掉Layer,则TrackingLayer随之消失

跟踪层速度比较快,可以动态更新空间对象

1. 添加对象到跟踪层

soTrackingLayer.AddEvent(objGeometry ,objStyle,string)

分别设置Geometry,风格和标签

2. 获得跟踪层上面的对象

soTrackingLayer. Event

3. 删除跟踪层上面的对象

soTrackingLayer.ClearEvents()

4. 移动跟踪层上面的对象

soGeoevent.move()

soGeoevent.moveTo()

5. 几何对象和文本对象的风格之不同

1)几何对象的风格对应为soStyle,适用于点、线、面等对象。

2)文本对象对应的风格是soTextStyle,适用于普通文本对象、专题图的文本对象。

八.布局对象SuperLayout

1. 布局窗口中选中的对象SuperLayout.Selection

2. 布局窗口中的元素SuperLayout.Elements

3. 布局窗口的鼠标事件SuperLayout.LytAction

4. SuperLayout 中的地图对象,soLytMap

5. SoLytMap.MapHold 锁定地图可以用soLytMap.MapAction进行放大缩小

九. 地图控件的关联

–SuperLegend1.connect SuperMap1.handle

–SuperMap1.connect SuperWorkspace1.handle

–SuperLayout1.connect Superworkspace1.handle

–SuperWkspManager1.connect Superworkspace1.handle

–SuperGridView1.connect objRecordset

十. 地图控件的释放顺序

–SuperLegend1.disconnect

–SuperMap1.close

–SuperMap1.disconnect

–SuperLayout1.disconnect

–SuperWkspManager1.disconnect

–SuperWorkspace1.close

十一.应用举例

1、工作空间另存时,数据源仍是原始工作空间的数据源,原理和解决办法

1)如文件型的工作空间和数据源,另存为数据库型工作空间时,对应的数据源仍是本地文件,这样无法达

到共享的目的;反之,数据库型另存为本地文件时,数据源为SQL的,也无法达到备份或个人调整的目的

2)解决方法,打开另存的工作空间,增加数据库型的新数据源,在旧的数据源中按记录集(Dataset)循环

,用.CopyDataset将数据复制到新的数据源中,再从工作空间中移除旧的数据源,保存工作空间即可。

2、地图的背景控制

1)用户临时指定

soStyle objStyle;
            objStyle = axSuperMap.BackStyle;

/*
                语法soStyle SuperMap.BackStyle
                说明,返回/设置 SuperMap 控件的背景风格(soStyle)。
                备注,该属性主要用于设置 SuperMap 控件的背景风格,系统默认背景颜色为白色。
            */

soResources objRss;
            soFillStyleLib objFlLib;
            objRss = axSuperWorkspace.Resources;
            objFlLib = objRss.FillStyleLib;
            objFlLib.ShowPicker(objStyle);

//保存工作空间时必须保存地图信息,否则界面的背景不会保存;打开时也必须打开对应的

地图,否则背景不显示。
            axSuperMap.Refresh();

Marshal.ReleaseComObject(objStyle);
            objStyle = null;
            Marshal.ReleaseComObject(objFlLib);
            objFlLib = null;
            Marshal.ReleaseComObject(objRss);
            objRss = null;

2)系统预先定义背景的方法,如直接定义背景色为X色,VB写的,不翻译了

Dim oStyle As soStyle

oStyle.BrushColor=vbRed
      Set oStyle = SuperMap1.BackStyle

.......

既然SuperMap1.BackStyle返回的是sostyle对象,那直接设置这个soStyle对象中相关的属性,再把它穿

回给SuperMap的背景色就可以

3、利用鼠标中轴进行地图的放大和缩小控制

private void axSuperMap_MouseWheelEvent(object sender,

AxSuperMapLib._DSuperMapEvents_MouseWheelEvent e)
        {
            //用鼠标中键进行地图的放大和缩小,操作步骤:
            //1、鼠标左键或右键点击一下地图控件的位置,2、前后移动鼠标中轮看变化。
            if (e.zDelta > 0)
            {
                //SuperMap.Zoom(dZoomRatio As Double),根据指定的比率缩放地图。
                this.axSuperMap.Zoom(1.5);
            }
            if (e.zDelta < 0)
            {
                this.axSuperMap.Zoom(1 / 1.5);
            }
            this.axSuperMap.Refresh();
        }

4、列表显示问题

建议,特殊情况下,将记录集数据一条条加入到微软的记录集中,并用微软的列表显示,这样排序、分页

尤其是数据的格式化问题,处理起来要容易许多。

SumperMap基本编程相关推荐

  1. C++核心编程(一)

    C++ 核心编程 本系类列博客都是根据黑马的C++视频做的笔记. 本阶段主要针对C++面向对象编程技术做详细记录,探讨C++中的核心和精髓. 1.内存分区模型 C++程序在执行时,将内存大方向划分为4 ...

  2. 【Spring】面向切面编程AOP

    AOP基础 什么是AOP [废话解释]在软件业,AOP全称Aspect Oriented Programming 即:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...

  3. python编程问题--第二次

    本质上grp 是一个dataframe 后面接一个[] 得到 series 两个[] 得到dataframe Groupby 如果后面放as_index=False 后面就能连续添加了 不加的话  同 ...

  4. OpenCL编程详细解析与实例

    OpenCL编程详细解析与实例 C语言与OpenCL的编程示例比较 参考链接: https://www.zhihu.com/people/wujianming_110117/posts 先以图像旋转的 ...

  5. C语言与OpenCL的编程示例比较

    C语言与OpenCL的编程示例比较 OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合.对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步. 在 ...

  6. LLVM一些编程语法语义特性

    LLVM一些编程语法语义特性 High Level Structure Module Structure LLVM 程序由Module's组成,每个 's 是输入程序的一个翻译单元.每个模块由函数.全 ...

  7. Structured Streaming编程 Programming Guide

    Structured Streaming编程 Programming Guide • Overview • Quick Example • Programming Model o Basic Conc ...

  8. TensorFlow编程结构

    TensorFlow编程结构 TensorFlow 与其他编程语言非常不同. 首先通过将程序分为两个独立的部分,构建任何拟创建神经网络的蓝图,包括计算图的定义及其执行.起初这对于传统程序员来说看起来很 ...

  9. MindSpore API编程概述

    MindSpore API编程概述 总体架构 MindSpore是一个全场景深度学习框架,旨在实现易开发.高效执行.全场景覆盖三大目标,其中易开发表现为API友好.调试难度低,高效执行包括计算效率.数 ...

最新文章

  1. Spring Cloud 学习笔记(四)-Spring Cloud Hystrix
  2. python怎么安装pandas模块-如何在Python 3中安装pandas包和使用数据结构
  3. Ajax处理函数模板
  4. tcp为什么需要3次握手和3次握手的过程
  5. 基于Keras的卷积神经网络用于猫狗分类(进行了数据增强)+卷积层可视化
  6. flowable实战(八)flowable核心数据库表详细表字段说明
  7. linux 清除mysql密码_linux重置mysql密码
  8. ajax跨域为什么会失败,ajax跨域请求失败是怎么回事?
  9. Syntax Error: Unexpected token 报错原因
  10. (c语言)编程输出二维数组中元素的最大值,要求用指针实现。
  11. Intellij IDEA Cannot resolve symbol XXX 问题解决办法汇总
  12. B - 小希的迷宫 (并查集判断是否存在环)
  13. [汇编] 十进制与十六进制互转
  14. Golang 入门 : 打造开发环境
  15. Linux系统下卸载jdk的步骤
  16. matlab color选取(颜色对照表)
  17. Chrome插件——一键保存网页为PDF1.1发布
  18. windows 清除记录ftp账号
  19. 【熟知水星无线路由器的安装步骤】
  20. Device模块管理设备信息,用于获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等

热门文章

  1. 论文笔记:See Better Before Looking Closer: WS-DAN for Fine-Grained Visual Classification
  2. 鼠标右键新建不显示文本文档的解决办法
  3. js textarea换行
  4. 思途旅游电商系统源码介绍
  5. jar文件运行时 Failed to load Main-Class manifest attribute from
  6. 万网虚拟机连接mysql_万网虚拟主机使用laravel5.1 htaccess
  7. 「 Java基础-Lambda 」试试Lambda表达式?通俗易懂得嘞
  8. 虚拟服务器连接不了,虚拟主机不能访问怎么办
  9. 突发奇想,在虚拟机中套娃,在Windows中安装MAC在安装Windows
  10. Arcgis制图之晕线效果