SuperMap Objects 心得(1)
2008-05-20 13:47阅读:
一、
SuperMap Objects开发包:
SuperMap主要由12个控件为主要入口的开发包组成。
SuperMap Objects 是以COM/ActiveX
技术规范为基础的全组件式GIS,总共包括十二个控件,
其中包含两个核心控件:工作空间控件和地图控件,用于排版输出地图的布局控件,用于三维模型分析处理的三维控件,用于数据拓扑处理的拓扑控件,用于显示图例的图例控件,还有多个用于图例显示、属性数据显示、加密信息控制的辅助性控件。
二、
主要控件的详细介绍:
l
SuperWorkspace
工作空间控件
1、工作空间控件概述
SuperWorkspace 控件为 SuperMap
Objects 组件式 GIS
的核心控件之一,主要完成数据的组织、管理、处理。包括打开、关闭、新建、保存工作
空间文件(*.smw);新建、打开数据源文件(*.sdb);修复、压缩数据源文件,字体文件的载入,卸载等等。在
SuperMap
Objects
中,工作空间(Workspace)是一个重要的概念,工作空间是一个工程项目中所有的数据源集合(
soDatasources)、资源集合(
soResources)、布局集合(
soLayouts)等数据的组织关系的集合。SuperWorkspace
控件还提供SDB(本地文件)、SDX(数据库)、DGN(CAD格式的数据)等数据引擎。
2、工作空间控件的主要作用:
打开一个工作空间(一个smw文件):SuperWorkspace.Open()。
保存一个工作空间(一个smw文件):SuperWorkspace.Save()。
创建一个工作空间(一个smw文件):SuperWorkspace.Create();
打开一个数据源:SuperWorkspace.OpenDataSource();
创建一个数据源:SuperWorkspace. CreateDataSource
();
获取工作空间里数据源集合(soDatasources):SuperWorksapce.Datasources;
获取工作空间里布局集合(soLayouts):SuperWorksapce.Layouts;
获取工作空间里地图集合(soMaps):SuperWorksapce.Maps;
3、工作空间控件和SuperMap控件之间的连接
工作空间相当于存放数据源,地图,资源等的“容器”,所谓“容器”和真正的容器是有很大区别的,那就是并不是所有的数据源,地图,资源都存放在工作空间文件中,工作空间文件中只是存放在数据源,地图,资源等的链接和组织情况。既然有了容器,那肯定还要有一个“窗口”来展示“容器”里面的内容,在SuperMap
Objects中这个“窗口”就是SuperMap控件。
工作空间控件的主要作用是管理工作空间的,当前状态下最多有一个工作空间。
“容器”和“窗口”要有一个关连,关连的方法:
SuperMapWorkspace.Connect(Supermap.CtlHandle);
4、工作空间控件和数据源(soDatasources)、资源(soResources)、布局(soLayouts)
之间的关系
SuperMapWorkspace对象和数据源(soDatasources)、资源(soResources)、布局(soLayouts)之间的关系从面向对象的角度来说是聚合的关系,也就是整体与部分的关系,
l
SuperMap
控件
1、SuperMap
控件概述
SuperMap 控件为 SuperMap Objects
组件式 GIS
核心控件之一。用于显示地图,地图图层管理,地图放大、缩小、全图等基本的地图浏览操作。SuperMap
控件亦用于完成地图编辑以及其他与地图有关的操作。同一个工程中可以有多个 SuperMap
控件。
2、SuperMap
控件的主要作用:
设置地图控件的当前工具:
设置地图控件的当前工具,可以通过设置地图控件的Action属性实现。通过设置 Action
属性可以完成与鼠标有关的操作,当 Action
的值为零时,表示不进行任何操作。通常与地图显示有关的操作如地图的放大、缩小、自由缩放、平移以及简单的编辑操作如画点、画线、画面等都可以通过设置
SuperMap 控件的 Action 属性完成:
SuperMap.Action = seAction常量
scaPan 1
地图漫游
scaZoomIn 2 地图放大
scaZoomOut 3 地图缩小
scaZoomFree 4 地图自由缩放
scaSelect 5
单点方式选择目标
scaRectSelect 6 矩形方式选择目标
scaCircleSelect 7
圆形方式选择目标
scaRegionSelect 8
区域方式选择目标
seAction其他常量可以从《联机帮助》查找。
选择集对象(soSelection):
返回/设置 SuperMap
地图窗口中被选中的空间对象集合。
该对象隶属于SuperMap.ocx控件。在 SuperMap
地图窗口中,可以有多个图层同时处于被选择状态,但当前被选择图层只能有一个,即SuperMap.Selection
只能包含同一个图层上的空间对象。
SuperMap.Selection
图层集对象(soLayers):
返回地图窗口的图层集合。
在SuperMap地图窗口中,可以叠加显示多个图层,通过该属性可以返回图层集合对象;通过这个对象来添加图层,删除图层,管理图层的叠置顺序,可编辑状态等,以及引用所有的图层对象。
添加图层:
SoLayers.AddDataset()
调整图层的顺序:
SoLayers.MoveBottom()
SoLayers.MoveDown
()
SoLayers.MoveTo
()
SoLayers.MoveTop
()
SoLayers.MoveUp
()
设置图层是否可编辑:
SoLayers.DisableEdit
()
SoLayers.SetEditableLayer
()
删除图层:
RemoveAll()
RemoveAt ()
Remove ()
跟踪层对象(soTrackingLayer)
该图层位于地图窗口最顶层。跟踪层主要用于显示动态目标,因为这个图层是单独显示的,有独立的 Refresh
方法,跟踪层的刷新不需要整个地图刷新,所以速度快,适合用于显示动态目标。
跟踪层的主要作用:
(1)、当不想往记录集中添加几何对象,而又需要这个几何对象的时候,就可以把这个几何对象临时添加到跟踪图层上,用完该几何对象之后清除跟踪图层即可。例如,当需要测量距离时,需要在地图上拉一条线,但是这一条线在地图上并不存在,此时就可以使用跟踪图层来实现。
(2)、当需要对目标进行动态跟踪的时候,如果把目标放到记录集中,要实现动态跟踪就得不断地刷新整个图层,这样会大大影响效率,如果将这个需要进行跟踪地目标放到跟踪层上,这样就只需要刷新跟踪图层即可实现动态跟踪。
(3)、当需要进行批量地往记录集中添加几何对象地时候,可以先将这些对象临时放在跟踪图层上,确信需要添加之后在把跟踪图层上地几何对象批量地添加到记录集中。
增加一个临时几何事件对象:
SuperMap1.TrackingLayer.AddEvent()
清除跟踪图层上的几何事件对象
SuperMap1.TrackingLayer.ClearEvents()
SuperMap1.TrackingLayer.RemoveEvent
()
3、建立SuperMap控件和SuperMapLegend控件之间连接
SuperMap控件相当于展示地图数据的“窗口”,而对SuperMap里面图层的说明来要有图例控件配合完成才能达到较好的效果。这样就要在SuperMap控件和SuperMapLegend控件之间建立一个关连,关连的方法:
SuperMapLegend.Connect(Supermap.CtlHandle);
需要注意的是:SuperMap地图控件里的内容发生变化时,如增加,删除,改变地图控件里某个图层的风格时,地图控件刷新的同时,图例控件也要刷新,这样才能保持地图控件和图例控件里面的内容一致。