SDB 存储体系结构
SDB 数据格式包括SDB 和SDD 两个文件,其中SDB 存储空间数据,SDD 为Access 数据库,存储属性数据。与其他软件文件格式不同,SuperMap Objects SDB 是双文件图库结构。一对SDB 和SDD文件可以存放多个数据集(Dataset)。即可以把多个Arc/Info Coverage 和MapInfo Tab 文件的数据存放在同一个SDB 数据源。
SDB 结构中包含两个顶级Storage,即Datasets 和Info。Info 目录下存放SDB 的属性信息,SDB 属性信息包括数据库版本号(Version)、坐标体系(Coordinate System)、坐标单位(Coordinate Unit)、距离单位(Distance Unit)、投影(Projection)、描述信息(Description)等。同一空间数据库中各数据集具有相同的坐标体系、坐标单位、距离单位和投影方式。Datasets 则是各数据集的集合。数据集(Dataset)是SDB 空间数据库组织、存储和管理空间数据的基本单元。每个数据集作为Datasets 目录下单独的目录(Storage)存在,以数据集名称作为Storage 名。
在SDB 中,数据集一般由如下六部分组成:几何数据表(Geometry),存储空间数据的类型、大小、边界、以及坐标数据等信息;信息表(Info),存储数据集的常用信息。如:类
型、选项、元素个数、数据集边界(Dataset Bounds)、空间索引边界、空间索引层数等;元数据表(Metadata),存储描述数据集的操作和其它信息,一条元数据记录包括一个元数据头(Title)和一个元数据内容(Content)。索引表(Index),存储几何对象空间索引信息,如对象ID 和空间索引号。在文件型空间数据库(SDB)的索引表还应存储该对象的线性(Linear)索引号;调板表(Palette),存储影像数据集的调板信息;属性数据表(Property),存储其它与几何信息无关的属性信息。
SuperMap 与SuperWorkspace 的连接
在SuperMap Objects 软件中,SuperMap 控件与SupreWorkspace 控件都属于核心控件,SuperWorkspace 控件负责管理数据,SuperMap 控件负责显示和编辑数据,这些数据就来自于SuperWorkspace,为了确保数据的正确使用,SuperMap Objects 规定在使用数据之前,必须建立两者之间的连接,数据使用完毕,关闭SuperMap 控件之前要断开连接。
建立连接的语句是:
SuperMap1.Connect(SuperWorkspace1.CtlHandle); //建立SuperWorkspace与SuperMap之间的联系
断开连接的语句是:
SuperMap1.Disconnect(); gridview不显示
在SuperWorkspace 控件中包括五种基本对象:数据源集合(soDataSources)、地图集合(soMaps)、布局集合(soLayouts)、三维场景集合(soScenes)、资源(Resources),它保存的内容主要包括:当前打开的数据源(位置、别名和打开方式)、地图、布局、符号库、线型库、填充模式库等。这其中与SuperMap 控件关系最密切的是地图集合(soMaps),对于地图对象的保存(SaveMap)、另存为(SaveMapAs)、打开(OpenMap)、关闭(Close)和获取当前地图对象的名称(MapName)的方法都是由SuperMap 控件提供。SuperMap 控件是地图显示的窗口,可以加载一个或者多个数据集进行显示;也可以加载工作空间中的地图来显示。
SuperMap Object 基本编程
一. 工作空间
1.打开工作空间
SuperWorkSpace.open(); ,有文件和数据库的区别
说明:打开工作空间时,会自动打开对应的数据源;但如果对应的数据源,因数据库服务器信息调整等原因,没有自动打开时并不强制报错,可以检查是否正确,并用程序调整数据源的连接信息等,以后会重新自动打开。
2.工作空间的保存
SuperWorkSpace.save();
3.工作空间的保存
SuperWorkSpace.saveAs(); ,有文件和数据库的区别
说明:保存工作空间时,会自动保存对应的数据源;数据库型时,工作空间数据库,可以是空库,SM会自动建立SmWorkspace数据表,每个工作空间对应一条记录。
二. 数据源
1.
创建数据源
ateDataSource() 有文件和数据库的区别
2. 打开数据源
SuperWorkSpace.openDataSource(),文件型
SuperWorkSpace.openDataSourceEx()数据库型
说明:
1)如果已经打开过工作空间,且还没有关闭,打开新的数据源时,该数据源会被附加到这个工作空间里。
2)无率是文件型,还是数据库型的工作空间,可以存在多个数据源,且允许是文件型或数据库型数据源。
3. 获得数据源
SuperWorkSpace.DataSource.item()
4. 关闭数据源,只是从工作空间中移出,并不真正删除。
SuperWorkSpace.DataSource.Remove()
SuperWorkSpace.DataSource.RemoveAll()
三. 数据集
1. 创建数据集
ateDataset();
说明,每个数据集对应一个数据表,表名同数据集的名称。
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论