supermapobject复习
SuperMap论文
SuperMap Objects实习报告一.实习目的1.了解SuperMap Objects6.0基本特征2.利用SuperMap Objects构建GIS应用项目3.了解SuperMap GIS中数据组织方式,空间数据管理方式,并用SuperMap Objects对空间数据进行管理4.掌握数据交换,将SuperMap格式的数据导出成其他格式5.查询,通过属性和空间关系检索出目标地物6.掌握SuperMap Objects中拓扑处理的步骤7.掌握缓冲区分析、网络分析、叠加分析二.实习内容1.添加控件,进行地图浏览、放大、缩小、漫游、自由缩放、全副显示以及单击选择2.打开和保存工作空间,打开创建不同类型的数据源3.导入矢量数据、影像数据,并将它们导出成其他格式4.属性查询和空间查询5.设置图层风格,制作单值、标签、范围分段等专题图6.掌握SuperMap Objects中拓扑处理的步骤7.掌握连通性分析、最佳路径分析、服务区分析等三.实习流程(以第10章“拓扑”和第11章“缓冲区分析”为例说明)1)实验内容:了解拓扑处理的基本概念了解SuperMap Objects具有的拓扑处理功能掌握SuperMap Objects中拓扑处理步骤学会使用SuperTopo控件进行数据处理掌握创建缓冲区掌握缓冲区分析2)“拓扑”实验步骤1.数据准备DLJX 作业人员对图斑数据矢量化的线数据集DLTB1 该面数据集是其他作业人员已经处理好的数据集,它与DLJX数据集相邻2.业务流程第一步将数字化的线数据集转化为面数据集单击菜单下的“数据处理”→“线数据集拓扑处理”→“线数据集拓扑拓扑构面”生成RgnDT面数据集。
第二步将DLJX拓扑构面生成的数据集与原地类图斑DLTB1合在一起,检查出重复面。
将DLTB1面数据集和RgnDT面数据集托出来得到重复面。
第三步去除重复面单击菜单下的“分析”→“叠加分析”→“擦除”原数据数据集为DLTB1,叠加数据数据集为RgnDT,得到的结果数据数据集为NewDT。
GIS大赛组件概念回顾
打开数据源
Datasources.Open()
新建数据集
Datasets.Create()
8
SuperMap Objects .NET 培训课程
工作空间连接信息类
WorkspaceConnectBiblioteka onInfo数据源连接信息类
DatasourceConnectionInfo
矢量数据集信息类
DatasetVectorInfo
栅格数据集信息类
DatasetGridInfo
9
SuperMap Objects .NET 培训课程
技术支持
电话:400-8900866 技术资源中心
/
电子邮箱:
support@
地理信息系统论坛- SuperMap 专区:
/bbs/index.asp?boardid=4
10
SuperMap Objects .NET 培训课程
SuperMap Objects .NET 6R 概念回顾
北京超图软件股份有限公司
SuperMap Objects .NET 产品定位
回顾下SuperMap GIS的基本概念
数据库 (*.smwu/*.sxwu) (SQL Server /Oracle)
工作空间
数 据 源 地 图 布 局
数据引擎
SuperMap Objects .NET 培训课程
对象结简介(二)对象结构图
6
SuperMap Objects .NET 培训课程
Data模块主要对象结构图
7
SuperMap Objects .NET 培训课程
总结
打开工作空间
Workspace.Open()
GIS开发与应用讲义【打印】
GIS开发与应用——Super Map二次开发唐山师范学院·资源管理系2013年2月教学目的与要求该课程的教学目的是使学生对GIS技术有一个明确的认识,能够具备GIS技术的基本技能,包括GIS软件开发与应用。
该课程将主要讲授SuperMap Objects组件的二次开发应用,通过学习,加深对GIS基本原理的理解和领会,并能够熟练运用软件完成地理空间数据的处理和分析,使学生掌握基本的二次开发方法,能够利用GIS技术解决不同行业的具体应用需求,如地质、国土、水利等。
教学重点组件式GIS的特点、不同的GIS平台、SuperMap Objects功能特点、SuperMap Objects 基本概念、读取数据源、空间数据的显示开发、地图数据图层管理、查询功能,包括图形查询属性,属性查询图形、空间对象的编辑,包括几何对象的编辑,属性字段的编辑、跟踪图层的应用,包括添加几何对象,移动几何对象等、图层风格设置、地图的保存等教学难点SuperMap Objects功能结构、图形与属性双向查询开发、空间对象的编辑功能开发、地图的保存功能、跟踪层的应用8、《GIS工程师训练营:SuperMap Objects组件式开发》,SuperMap图书编委会,清华大学出版社,2011.4第1章组件式GIS概述本章目标:了解GIS软件技术体系的发展状况,掌握组件式GIS的特点,熟悉目前市场上流行的几种GIS软件平台。
1.1 GIS开发与应用概述1.1.1 GIS开发(1)含义用户根据特定需要,在一定的GIS开发平台基础上,经过二次开发而得到的功能扩展。
(2)开发策略A “自上而下”法(Top-bottom Method)B “自下而上”法(Bottom-top Method)C 综合方法(Comprehensive Method)D 企业系统规划法(Business System Planning,BSP)(3)开发步骤前期准备:立项、调研,可行性分析、用户需求分析;系统设计:总体设计、标准集的产生、系统详细设计、数据库设计;施工:软件开发、建库、组装、试运行、调试;运行:系统交付使用和更新(4)开发平台及功能1.1.2 GIS应用(1)含义GIS应用是指利用现成的或开发后的地理信息系统,分析、解决实际问题的一种技术手段,并产生一定的社会、经济效益。
第3章 SuperMapObjects开发基础
(1)矢量数据集与栅格数据集
第3章 SuperMap Objects开发基础
(2)属性数据集
第3章 SuperMap Objects开发基础
3.2.4 图层(soLayer)
赋予图层显示风格,如线型
图层本身有显示/隐藏 允许选择/不允许选择
允许编辑/不允许编辑
允许捕捉/不允许捕捉 调整叠加压盖顺序 设置显示比例尺范围
3.3 SuperMap Objects控件的加载、连接与断开
3.4 SuperMap Objects的对象结构图
3.5 功能开发过程
第3章 SuperMap Objects开发基础
3.4 SuperMap Objects的对象结构图
(1)工作空间控件
工作空间控件主要用于空间数 据的组织和管理; 工作空间中可以同时打开或存 储多个数据源通过其别名或索引可 以获得所需数据源,每个数据源中 可以有多个数据集,通过其名称或 者索引可获得所需数据集; GIS中用于分析的数据集多为
矢量数据集类型。每一个矢量数据
集都对应着相应的记录集进行存储 和管理。记录集中的每一条记录都 对应相应的几何对象及其属性。
第3章 SuperMap Objects开发基础
3.2.8 资源(soResources)
资源用于管理符号库(soSymbolLib)、线型库(soLineStyleLib) 和填充库(soFillStyleLib)。
3.2.9 记录集(soRecordset)
记录是处理和存储实体信息的基本单位,记录的集合叫记录集。 SuperMap Objects 空间数据组织和存储的基本单位仍然是记录。 SuperMap Objects中,每一个矢量数据集对应一个完整的记录集,每一 个空间几何对象对应一条记录。
SuperMap Objects .NET 6R 技术文档--叠加分析
附录 ..................................................................................................................................... 27
I
1
1 概述
本文包括矢量叠加分析的重要概念和实践内容,可以供 GIS 初学者或者有 GIS 二次开发经验的人进行 学习和参考。 本文主要分为五个部分,第一部分讲叠加分析的定义,第二部分讲叠加分析的目的和主要应用,第三部分 讲叠加分析的原理,第四部分讲叠加分析的 7 种模式和应用实例,第五部分是附录,主要是叠加分析的注意事 项。
SuperMap Objects .NET 6R 技术文档 ——叠加分析
北京超图软件股份有限公司 中国·北京
法律声明
本资料的版权为北京超图软件股份有限公司所有,受《中华人民共和国著作权法》和著作权国际公约的保 护。未经北京超图软件股份有限公司书面许可,不得以任何方式或理由对该资料的任何部分进行使用、复制、 修改、抄录、传播或与其它产品捆绑使用、销售,侵权必究。 “超图”、“ SuperMap ”以及 修改、传播或与其它产品捆绑使用、销售,侵权必究。 本资料并不代表供应商及其代理的承诺,北京超图软件股份有限公司可在不作任何声明的情况下对本资料 进行修改。 本资料中提到其他公司和产品的商标所有权为该公司所有。未经该权利人的书面同意,不得以任何方式或 理由进行使用、复制、修改、抄录、传播。 本资料中所涉及的软件产品及其后续升级产品均由北京超图软件股份有限公司研发、销售。 特此声明。 北京超图软件股份有限公司 地址:北京市朝阳区酒仙桥北路甲 10 号院 201 号楼 E 门 3 层 邮编:100015 电话:+86-10-59896655 传真:+86-10-59896666 技术支持与客户监督热线:400-8900-866 技术支持电子邮箱:support@ 客户监督电子邮箱:cs@ 网址: SuperMap 欢迎您的宝贵建议和意见。 为北京超图软件股份有限公司的注册商标,受法律保
SuperMap Objects三维功能
对于大地形数据一般通过多分辨率技术进行地形化简,再进行渲染。地形化简作为三维 网格简化技术在地学中的应用近几年成为国际上的研究热点,新的算法不断地提出。但这些 算法都是基于以下基本原理:距离视点远和相对比较平坦,起伏不大的部分,采用相对比较 低的分辨率,而对于距离视点比较近而起伏比较大的部分则采用比较高的分辨率。这样就大 大避免了不必要的计算,从而在在保证帧速率的条件下,也保证了渲染的质量。
视锥体剔除 如上所述,在一个复杂度较高的三维场景中,要对每个物体进行渲染对于现在的图形渲 染硬件来讲还是比较困难的,也是没有必要的。在渲染过程中,真正有意义的是处于视阈范 围内,真正可以看到的物体,看不到的物体则完全可以剔除。为此,图形学引入视锥体的概 念,用来表征视点对应的视域范围。视锥体是一个六面体,如果物体的任何一部分在视锥体 内则认为物体可见,反之,则认为不可见,如图六所示:物体 C 可见,而 A、B 则不可见。
自从 1992 年推出 OpenGL 以来,其在业界已被广泛应用,已经成为开发可移植交互式 2D 和 3D 图形的极佳选择。OpenGL 具有一组范围广泛的渲染函数,支持光照和阴影、雾化 纹理贴图、混合、透明度、动画以及许多其他特效和功能。开发人员可以在所有流行的桌面 和工作站平台上通过 OpenGL 来保证应用程序的广泛使用。
GIS 中的地形一般采用规则网格(GRID/DEM)和不规则网格(TIN)表示,地形简化也根据 不同的表示方式而采取不同的简化算法。但是由于 TIN 的数据结构比较复杂, 并且每调整 一次分辨率都要涉及到大量的三角剖分工作,计算量较大,所以在实际的应用中多采用 GRID/DEM 的规则网格表示。 剔除技术
2.SuperMap Objects .NET 快速入门
5
SuperMap Objects .NET 培训课程
打开World.smw中的第一张地图
Step4:添加按钮控件Button1,控件Name属性设置为 btnOpenMap,控件Text属性设置为“打开地 图” Step5:进入代码界面,添加SuperMap引用
using System; using System.Collections.Generic; using ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //添加以下代码 using SuperMap.Data; using SuperMap.Mapping; using SuperMap.UI;
World.smwu/sdb/sdd
Step3:将Workspace和MapControl控件加载到窗 体上
4
SuperMap Objects .NET 培训课程
加载控件
Step1:在ToolBox(工具箱)上找到SuperMap选 项卡 Step2:将名称为“Workspace”和“MapControl”的 组件添加 到窗体上 Step3:简单设计窗体界面
地理信息系统论坛- SuperMap 专区:
/bbs/index.asp?boardid=4
15
SuperMap Objects .NET 培训课程
8
SuperMap Objects .NET 培训课程
Step8:在“打开地图”按钮单击事件里添加代码
private void btnOpenMap_Click(object sender, EventArgs e) { //-----------------添加以下代码,打开地图-----------------// //构造工作空间连接对象 WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo(); //设置工作空间属性 workspaceConnectionInfo.Server = @"D:\ProgramFiles\SuperMap\SuperMap Objects .NET6R\SampleData\World\World.smwu"; workspaceConnectionInfo.Type = WorkspaceType.SMWU; //打开工作空间 workspace.Open(workspaceConnectionInfo); //打开地图 mapControl.Map.Open("世界地图"); //地图显示控制 mapControl.Map.ViewEntire(); } SuperMap Objects .NET 培训课程 9
1 SuperMap Objects整体介绍
讲师丁晓佩dingxiaopei@主要内容了解SuperMap Objects 的主要功能1充分利用各种帮助资源3熟悉SuperMap Objects 的对象结构图4了解SuperMap Objects 的开发基础2开发实战5空间数据获取与集成空间数据组织与管理主要功能空间编辑与处理查询统计与空间分析制图输出Sup erLeg endSup er Loc kInf oSup erT opoSup erM ap Sup er3DSup er Gri dVie w Super WorkspaceSup er Ana lystSup erW kspMan age rSup er Lay out基础组件核心组件(SuperWorkspace/ SuperMap) 工作控件管理、多数据源访问、地图管理;地图显示、查询;数据编辑;影像配准;矢量与栅格空间分析;线型与符号设计;叠加分析、最短、最佳路径分析等。
制图组件(SuperLayout)布局设计与输出,包括对地图、比例尺、图例、方向标、文字等各种布局对象的各种操作专业功能组件三维组件(Super3D)TIN和DEM建立;三维渲染与分层设色;立体透视图;正射三维影像图制作;纹理映像;显示、旋转和三维模型浏览;淹没模拟;三维的分割、填方挖方计算。
拓扑组件(SuperTopo)建立多边形、网络拓扑关系空间分析组件(SuperAnalyst)提供各种复杂和高级空间分析功能的控件。
可以完成地理空间数据的网络分析、栅格代数运算、地形表面分析等常用和专业的分析功能。
辅助组件工组空间管理器组件(SuperWkspManager) 工作空间中的数据集、地图、布局、线型库和符号库等的可视化管理工具图例组件(SuperLegend等)地图窗口的图例的生成、编辑、修改;图层控制、专题图接口;与制图模块结合生成地图二维表格组件(SuperGridView)二维表格显示与编辑工具,可以直接连接SuperMap定义的记录集对象(soRecordset)2、SuperMap Objects的开发基础 选择编程环境选择数据存储方式安装SuperMap Objects在开发环境中加载控件编程环境的选择SuperMap GIS 提供文件和数据库两种存储方案,可根据数据量、并发要求、保密要求等进行选择。
SuperMap Objects 开发教程(初级篇)
2.1 第一步:创建一个新工程:MyFirstSuperMap .................................................................... 3 2.2 第二步:加入 SuperMap Objects 控件..................................................................................3 2.3 第三步:打开地图、添加图层..............................................................................................6 2.4 第四步:地图浏览功能..........................................................................................................8 2.5 第五步:地图到属性查询......................................................................................................9 2.6 第六步:属性到地图查询.................................................................................................... 11
supermap iobjects java处理正射影像的例子 -回复
supermap iobjects java处理正射影像的例子-回复SuperMap iObjects是一款强大的地理信息系统(GIS)开发平台,提供了丰富的功能和工具,用于处理和管理地理数据。
其中,使用Java语言进行正射影像处理是其重要的应用之一。
本文将一步一步详细介绍如何使用SuperMap iObjects Java处理正射影像。
第一步:环境准备在开始处理正射影像之前,我们首先需要准备好开发环境。
首先,确保已经安装了Java Development Kit(JDK),以及SuperMap iObjects Java开发包。
其次,需要一张正射影像数据作为处理的对象。
可以从SuperMap官网、云服务或其他GIS数据提供商处获取合适的数据。
第二步:导入SuperMap iObjects库使用Java进行正射影像处理,我们需要将SuperMap iObjects库导入到项目中。
在Java开发环境中,选择项目并右击,然后选择“Properties”->“Java Build Path”。
在“Libraries”选项卡中,点击“Add External JARs”按钮,选择SuperMap iObjects Java库所在的路径,并将其导入项目。
第三步:加载正射影像数据在Java中使用SuperMap iObjects处理正射影像时,首先需要加载正射影像数据。
下面的代码片段演示了如何加载一幅正射影像数据:javaimport com.supermap.data.*;public class OrthophotoProcessing {public static void main(String[] args){初始化SuperMap iObjects引擎Environment.initialization();打开工作空间Workspace workspace = new Workspace();workspace.open("D:\\data\\workspace.smwu");打开数据源Datasource datasource =workspace.getDatasources().open("D:\\data\\datasource.udb");获取影像数据集Dataset dataset =datasource.getDatasets().get("orthophoto");加载影像数据集Layer layer = workspace.getLayers().add(dataset, true);}}在上述代码中,首先需要初始化SuperMap iObjects引擎。
SuperMap Objects 6的主要功能及新特性
SuperMap Objects 6的主要功能及新特性⏹地图显示地图操作SuperMap Objects 通过运行时可见的地图控件实现交互式的地图操作,如放大、缩小、漫游、自由缩放等。
地图多级预缓存任何一幅地图,尤其对于多图层多要素的地图,可以为其创建基于系列比例尺的一定规格的多文件预缓存图片。
目前支持多种格式,包括GIF、BMP、JPG、TIFF与PNG。
生成预缓存图片可以作为WebGIS开发平台直接使用,也可以使用影像插件引擎在SuperMap Deskpro或者SuperMap Objects中直接打开,可作为空间数据编辑的背景,其上叠加局部矢量数据,可大大提高大数据量显示与处理的效率。
在SuperMap Objects 6中,对地图多级预缓存功能进行了增强。
使得缓存出图与显示设备分辨率无关。
通过缓存索引范围,可以使多次生成的相邻地理范围的缓存图片一起使用,也使得变更区域内新生成的缓存图片与原有图片可以合理拼接。
普通地图制图利用SuperMap Objects 提供的标准图幅图框生成工具,方便快捷地创建基于国家基本比例尺的各种图幅,在标准图幅内添加具有相同坐标系的居民点、水系、土地利用、等高线、行政区划等国家基础地理信息数据,配以坡度尺、邻接图表、绘制信息等可快速地创建一幅精美的全要素标准普通地图。
专题地图制图SuperMap Objects 提供了丰富的专题地图类型:单值专题图、分段专题图、等级符号图、点密度图、标签专题图、统计专题图,其中统计专题图包括:面积图、散点图、阶梯图、折线图、柱状图/三维柱状图、饼图/三维饼图、玫瑰图/三维玫瑰图和堆积图/三维堆积图等。
SuperMap Objects中的专题图功能具有如下特点:各类专题图支持过滤条件,只对满足条件的要素以专题风格显示。
各类专题图支持置顶显示。
各类专题图通过图层的过滤显示条件接口,可支持使用关联属性表中的字段来创建专题图。
各类专题图的创建设置,可保存为XML作为专题图模板。
SuperMap学习笔记
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 object 二次开发 学习笔记 最基础的入门
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 五. 图层管理
SuperMap复习资料讲解
Supermap复习资料名词解释1.空间数据库引擎√使空间数据可在工业标准的数据库管理系统中存储、管理和快速查询检索的服务器软件。
它将空间数据加入到扩展关系数据库管理系统中,并提供对空间、非空间数据进行有效地管理、高效率操作与查询的数据库接口。
2.缓冲区分析(P221)缓冲区分析是指以点、线、面实体为基础,自动建立其周围一定宽度内的缓冲区多变形,然后将缓冲区多边形与目标图层叠加,进而分析得到结果。
它是用来解决邻近度问题的空间分析方法之一。
3.GIS互操作√定义一:即空间数据的互操作,指针对异构的数据库和平台,实现数据处理的互操作,是“动态”的数据共享,独立于平台,具有高度的抽象性,是空间数据共享的发展方向。
它包括从最底层的面向硬件的互操作,到应用层次的信息团体之间的语义共享。
其实现方式之一是:OpenGIS。
定义二:是指通过规范接口自由处理所有种类地理数据的能力和在GIS 软件平台通过网络处理地理数据的能力。
4.叠加分析√是指在统一空间参考系统下,通过对两个数据进行的一系列集合运算,产生新数据的过程。
这里提到的数据可以是图层对应的数据集,也可以是地物对象。
叠加分析的叠置分析的目标是分析在空间位置上有一定关联的空间对象的空间特征和专属属性之间的相互关系。
多层数据的叠置分析,不仅仅产生了新的空间关系,还可以产生新的属性特征关系,能够发现多层数据间的相互差异、联系和变化等特征。
√COM是个开放的组件标准,它有很强的扩充和扩展能力。
COM组件由以Win 32动态连接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成,为其它组件或应用程序提供服务,也可以理解为遵循特定规范的类库。
6.空间数据质量√所谓空间数据质量是指空间数据在表达实体空间位置,特征和时间所能达到的准确性,一致性,完整性和三者统一性的程度,以及数据适用于不同应用的能力.7.地图符号化(地图渲染)√是指在地图中以某种图案或颜色填充来表明特定的已知的地图对象,注明地图中所含有的某些信息(表示地图要素的空间位置、质量和数量特征等)8.投影转换√A、投影转换是指当系统使用来自不同地图投影的图形数据时,需要将该投影的数据转换为所需要投影的坐标数据。
SuperMap+Objects编程学习
SuperMap+Objects编程学习SuperMap Objects编程学习长江⼤学地球科学学院⼀、控件清单1)SuperWorkspace控件——核⼼控件(数据管理)SuperMap.ocx2)SuperMap控件——核⼼控件(地图管理)3)SuperTopo控件SuperTopo.ocx4)SuperLegend控件SuperLegend.ocx5)SuperLayout控件SuperLayout.ocx6)SuperGridView控件SuperGirdView.ocx——属性表组件库7)SuperWkspManager控件SuperWkspManager.ocx——⼯作空间管理组件库8)Super3D控件Super3D.ocx⼆、实例清单0、第⼀个程序――VB6Start演⽰⽤控件打开地图,并对其进⾏基本操作和属性与地图之间的双向查询。
控件及对象:SuperWorkspace、SuperMap1、创建、删除数据源和数据集,数据集编辑――CreateDeleteModify如何创建数据源和数据集、编辑及删除数据集。
控件及对象:SuperWorkspace、SuperMap,soDataSource、soLayers2、选定图层、查看属性――SuperGridView如何浏览选定图层的属性控件及对象:SuperWorkspace、SuperMap、Supergridview3、浏览、编辑属性及新建、删除字段――EditAttribute如何查询和修改数据集中⼏何对象的属性,如何维护属性数据表:增加和删除⽤户字段。
控件及对象:SuperWorkspace、SuperMap,soDatasetVector、soRecordset、soSelection、soFieldInfos、soFieldInfo4、地图浏览――MapBrowse对地图进⾏放⼤、缩⼩、⾃由缩放、全幅显⽰、漫游、点选、圆选、框选等操作,设置地图窗⼝的显⽰⽐例尺范围、⾃动滚屏功能、锁定地图窗⼝等属性。
SuperMap Objects的结构
SuperMap Objects的结构SuperMap Objects由若干ActiveX控件和数量众多的自动化对象(Automation Objects)构成,因此可以方便地嵌入到流行的可视化高级开发语言环境中进行二次开发。
开发人员可以充分发挥Visual Basic、Visual C++、C++ Builder、PowerBuilder、Visual 、Visual C#.Net和Delphi等高级开发工具在面向对象编程、可视化程序设计等方面的优势,结合各种第三方ActiveX组件,轻松开发出各种GIS系统。
SuperMap Objects的控件和对象SuperMap Objects由六组可拆分的组件群组成,他们分别是核心组件、三维组件、拓扑组件、布局组件、分析组件、辅助开发组件。
SuperWorkspaceSuperMapSuper3DSuperTopoSuperLayoutSuperAnalyst辅助开发工具核心组件(SuperMap Core Controls)SuperMap Objects核心组件包括地图控件、工作空间控件和两百多个ActiveX对象,核心组件是SuperMap Objects 最基础的组件,提供二维地图可视化、地图编辑、空间数据访问、管理、查询和部分空间分析功能,是其他组件的基础。
核心组件包括地图控件和工作空间控件。
地图控件(SuperMap Control)SuperMap Control 是一个运行时可见的ActiveX控件,负责地图的显示、编辑以及其他屏幕的交互式操作。
SuperMap Control还提供了大量事件(Events),用户可以根据自己的需求在这些事件中编写自己的代码,实现特定的功能。
与此相关的还有soLayer、soStyle、soSelection等数十个对象。
工作空间控件(SuperWorkspace Control)SuperWorkspace Control是一个运行时不可见的控件,它负责管理SuperMap Objects中其他控件和对象所需要的GIS数据和系统中用到的符号、线型和填充库。
SuperMapObjects数据编辑[只读][兼容模式]
SuperMapObjects数据编辑[只读][兼容模式]SuperMap Objects培训课程数据编辑支持中心培训部北京超图软件股份有限公司主要内容SuperMap的几何对象添加新的几何对象更新空间信息更新属性字段值范例工程:Projects\数据编辑示范程序SuperMap Objects 产品培训课程(2)编辑内容添加新几何对象更新空间几何对象更新属性字段值SuperMap Objects 产品培训课程(3)1. SuperMap的几何对象SuperMap Objects 产品培训课程(4)2. 添加几何对象1交互式添加几何对象用户使用鼠标操作的方式添加几何对象到指定数据集2代码方式添加几何对象使用代码控制坐标,精确添加几何对象到指定数据集SuperMap Objects 产品培训课程(5)2.1 交互式添加——实现思路步骤一步骤二步骤三添加对应类型的图层 AddDataset()设置图层可编辑 SetEditable()设置鼠标状态 Action属性SuperMap Objects 产品培训课程(6)2.1 交互式添加——主要方法主要控件SuperMap 控件 p p主要对象soDataset,soLayers主要方法soLayers.AddDataset() soLayers.SetEditableLayer() SuperMap.Action属性SuperMap Objects 产品培训课程(7)交互式添加private void mnuEditPoint_Click(object sender, EventArgs e) mnuEditPoint Click(object { axSuperMap1.Action = seAction.scaEditCreatePoint; //绘制点 }private void mnuEditLine_Click(object sender, EventArgs e) { axSuperMap1.Action seAction.scaEditCreateLinesect; axSuperMap1 Action = seAction scaEditCreateLinesect; // } SuperMap Objects 产品培训课程(8)2.2 代码方式添加——实现思路步骤三步骤二步骤一更新几何对象通过调用记录集对象的相应方法,更新对象到数据集中构建几何对象通过坐标构建各种类型的几何对象(soGeo )(soGeo*)获得记录集对象通过矢量数据集对象获得记录集象获得集对象SuperMap Objects 产品培训课程(9)2.2 代码方式添加——主要方法主要控件SuperMap控件, SuperMap控件 SuperWorkspace控件主要对象soRecordset, soDatasetVector主要方法Q y() soDatasetVector.Query()方法soPoints.Add() / soPoints.Add2() soGeo*.AddPart()方法soRecordset.AddNew()方法 soRecordset.Update()方法SuperMap Objects 产品培训课程(10)代码方式添加几何对象注意事项获得记录集对象(soRecordset)使用soDatasetVector的Query方法Query使用的小技巧:当不需要操作记录集中的对象时,Query的第一个条件参数给一个不成立的条件,比如“-1>0” 个条件参数给个不成立的条件,比如 1>0 调用soRecordset.AddNew()添加之后,要调用Update进行更新SuperMap Objects 产品培训课程(11)代码方式添加点soLayer objLayer = /doc/37113245.html,yers[1]; objDtV = (soDatasetVector)objLayer.Dataset; objRec = objDtV.Query("-1>0", true, null, ""); objGeoP.x = axSuperMap1.CenterX; bjG S 1C objGeoP.y = axSuperMap1.CenterY; objRec.AddNew((soGeometry)objGeoP, objRecAddNew((soGeometry)objGeoP false);//添加对象objRec.Update(); //更新数据SuperMap Objects 产品培训课程(12)代码方式添加线利用代码方式添加线对象到一个线数据集中主要使用对象:要使用对象soPoints soGeoLine soRecordset 主要使用方法: soPoints.Add() soPoints Add2() soPoints Add() / soPoints.Add2() soGeoLine.AddPart() soRecordset.AddNew() () soRecordset.Update()SuperMap Objects 产品培训课程(13)代码方式添加线objLayer = /doc/37113245.html,yers[1]; bjL S M 1L [1] objDv = (soDatasetVector) objLayer.Dataset; objRec = objDv.Query("-1>0", true, null, ""); //构建线对象objPts.Add2(axSuperMap1.CenterX-100, axSuperMap1.CenterY); objPts.Add2(axSuperMap1.CenterX 100 axSuperMap1 CenterY); objPts Add2(axSuperMap1 CenterX + 100, axSuperMap1.CenterY); objGeoLine.AddPart(objPts); //添加线对象objRec.AddNew((soGeometry) objGeoLine, false); objRec.Update(); axSuperMap1.Refresh();SuperMap Objects 产品培训课程(14)代码方式添加面soGeoRegion objGeoRegion = new soGeoRegionClass(); objLayer = /doc/37113245.html,yers[1]; objDv = (soDatasetVector)objLayer.Dataset; objRec = objDv.Query("-1>0", true, null, ""); //构建面对象objPts.Add2(axSuperMap1.CenterX - 100, axSuperMap1.CenterY+100);//左上角j ( p p , p p ); objPts.Add2(axSuperMap1.CenterX - 100, axSuperMap1.CenterY -100); objPts.Add2(axSuperMap1.CenterX + 100, axSuperMap1.CenterY -100); objPts.Add2(axSuperMap1.CenterX + 100, axSuperMap1.CenterY + 100); //objPts.Add2(axSuperMap1.CenterX -100, axSuperMap1.CenterY+100); 100, axSuperMap1.CenterY 100); objGeoRegion.AddPart(objPts);objRec.AddNew((soGeometry)objGeoRegion, objRec AddNew((soGeometry)objGeoRegion false); //添加面对象objRec.Update(); //更新数据SuperMap Objects 产品培训课程(15)练习利用代码方式添加面对象到一个面数据集中主要使用对象:主要使用对象soPoints soGeoRegion g soRecordset 主要使用的方法:soPoints.Add() / soPoints.Add2() soGeoRegion.AddPart() soRecordset.AddNew() soRecordset AddNew() soRecordset.Update()SuperMap Objects 产品培训课程(16)3.更新几何对象相关接口soRecordset.Edit() () soRecordset.SetGeometry() soRecordset.Update()SuperMap Objects 产品培训课程(17)4.更新属性字段值相关接口soRecordset.Edit() soRecordset.SetFieldValue() soRecordset.Update() soSelection objSel =this.axSuperMap1.selection; if (objSel Count == 1) //仅在选中的为一个对象时修改字段值 (objSel.Count //仅在选中的为个对象时,修改字段值 { soRecordset objRd = objSel.ToRecordset(false); j j ( ) objRd.Edit(); objRd.SetFieldValue("SmUserID", 3); objRd.Update(); }SuperMap Objects 产品培训课程(18)数据编辑接口总结添加新的几何对象soRecordset.AddNew() soRecordset.Update()更新几何对象,属性信息不变soRecordset.Edit() R d t Edit() soRecordset.SetGeometry() soRecordset.Update() p ()更新字段值,空间信息不变soRecordset.Edit() soRecordset.SetFieldValue() R d S Fi ldV l () soRecordset.Update()SuperMap Objects 产品培训课程(19)。
SuperMapiObject入门开发系列之六管线区域查询
SuperMapiObject入门开发系列之六管线区域查询
本文是一位好友“托马斯”授权给我来发表的,介绍都是他的研究成果,在此,非常感谢。
管线区域查询功能针对单一管线图层进行区域多边形框选查询,然后将查询结果输出为列表,并添加定位和闪烁功能,效果如下图所示:
具体功能实现思路:
•首先要让客户设置一个多边形框选区域,操作上是单击左键选点后移动鼠标,继续单击左键画多边形区域,最后单击右键结束,在代码里,我采用了iObject的面积量算接口进行框选区域的获取,用起来比较方便,首先要将SceneControl.Action设置为Action3D.MeasureArea,然后在SceneControl.Tracking事件,即三维场景跟踪图层鼠标交互绘制几何对象结束时触发事件中获取到绘制结束的三维面对象GeoRegion3D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过矢量数据集获得单个字段和全部字段的信息soDatasetVector objDV;sofieldinfo objFI;soFieldinfos objFIS;objDV=yers(1).Dataset;objFIS=objDV.GetFieldInfos;objFI=objDV.GetFieldInfo(4);MessageBox.Show();通过记录集获得单个字段和全部字段的信息soDatasetVector objDV;soRecordset objRce;soFieldInfos objFIS;soFieldInfo objFI;objDV=yers[1].Dataset;objRce=objDV.Query(“”,true);objFIS=objRce.GetFieldInfos;objFI=objRce.GetFieldInfo(4);MessageBox.Show(objFIS.Count);MessageBox.Show();添加新字段soFieldInfo objNewFI=new soFieldInfo(); objNewFI.Type=scfText;=”NewField”;objNewFI.Size=20;objNewFI.DefaultValue=”SuperMap”;objFIS.Add(objNewFI);取出字段信息Superworkspace wk=new superworkspace();This.wk.open(@”……….smw”);Sodatasources sources=wk.datasources; Sodatasource source=sources[1];Sodatasets datasets=source.datasets;Sodataset dataset=datasets[2];Sodatasetvector dsv=dataset as superwokspace.sodatasetvector;Sofieldinfos infos=dsv.getfieldinfos();Int count=infos.count;For(int i=1;I<=count.i++){string strfieldname=infos[i].name;}通过superworkspace打开矢量数据集,进行几何对象的查询SuperWorkspace wk=new SuperWorkspace(); soDatasetVector objDtv;objDtv=(soDatasetVector)Wk.Datasources[“world”].D atasets[1];soRecordset objRd;objRd= objDtv.Query(“smid>3”);soGeometry objGeometry;objGeometry=objRd.GetGeometry();缓冲分析soGeoRegion objSourceGeometry 生成缓冲区的源对象soGeoRegion objDestGeometry 由源对象生成单个缓冲区soRecordset objRecordSet 所选择对象对应的记录集soRecordset objDestRecordSet 生成缓冲区对象的记录集soDatasetVector objDtVector 生成缓冲区存放的数据集objDtVector=SuperWorkspace1.Datasources.Item[1].C reateDataset(“SampleDT”,5)objDtVector.Open();DestRecordSet=objDtVector.Query(“”,true) objDestRecordSet.MoveLast()objRecordSet=SuperMap1.Selection.ToRecordset(fals e);objRecordSet.MoveFirst();生成缓冲区objSourceGeometry=objRecordset.Geometry(); objDestGeometry=objSourceGeometry.Buffer(10000,20 );叠加分析(soOverlayAnalyst):1、剪裁运算:bool soOverlay Analyst.Clip(soDataset Vector objInDataset,Object objClipItem,soDataset Vector objOutDataset) 2、擦除运算:bool soOverlay Analyst.Erase(soDatasetVector objInDataset,Object objEraseItem,soDatasetVector objOutDataset) 3、并运算:bool soOverlayAnalyst.Union(soDataset Vector objInDataset,soDatasetVector objUnionDataset,soDataset Vector objOutDataset,bool bJoinAttribute)4.交运算:bool soOverlayAnalyst.Intersect(soDatasetVector objInDataset,soDatasetVector objIntersectDataset,soDataset Vector objOutDataset,bool bJoinAttribute )5、同一运算:bool soOverlayAnalyst.Identity(soDatasetVector objInDataset,soDatasetVector objIdentity Dataset,soDataset Vector objOutDataset,bool bJoinAttribute)查找与指定节点相连的所有边soSelectionsoNetworkAnalyst.FindConnectedEDges(soDatasetVector objNetworkDataset long nDOde,sePathFindingDirection nDirection,long nLevel) 最短路径分析SelectionsoNetworkAnalyst.FindPath(soDatasetVectorobjNetworkDataset,Long nFromNode,long nToNode,boolbShortestOnly)最佳路径分析SelectionsoNetworkAnalyst.FindPath(soDatasetVectorobjNetworkDataset,long nFromNode,long nToNode,boolbShortestOnly)用一系统预定义投影系,转换/反转换一个点Private sub MercatorPreDef_Click(){soPJCoordSys objPCS=new soPJCoordSys();ObjPCS.TYPE=scPCS_SAD_1969_UTM_19S;If(objPCS.IsProjected){soPoint objPoint=new soPoint();objPoint.x=-70.297918;objPoint.y=-40.319224;objPCS.Forward(objPoint);objPCS.Inverse(objPoint);objpoint=null;} }Supermap objects组件构成基本几何运算11种方法1.垂直:输入4点成2条直线,判断,若垂直,true…Bool soGeometrist.IsPerpendicular(soPointobjStartPoint1,soPointobjEndPoint1,soPoint objStartPoint 2, soPoint objEndPoint 2)2.平行:输入4点成2条直线BoolsoGeometrist.IsParallel(soPointobjStartPoint1,soPointobjEndPoint1,soPoint objStartPoint 2, soPointobjEndPoint 2)3.返回点到线的垂线:输入一点和一线soGeoLine soGeometrist.GetPerpendicular(soPointobjPoint, soPointobjStartPoint, soPointobjEndPoint)4.返回通过指定点做平行线soGeoLine soGeometrist. GetParallel(soPointobjPoint, soPointobjStartPoint, soPointobjEndPoint)5.根据距离求折线的平行线,返回折线对象:soGeometrist. GetParallel2(soGeoLineobjLine,double dDistance)6.求点到线的垂足soPointsoGeometrist.GetPerpendicularPosition(soPointobjPoint, soPointobjStartPoint, soPointobjEndPoint)7.求2条线段直线的交点soPoint soGeometrist.IntersectLine(soPointobjStartPoint1,soPointobjEndPoint1,soPoint objStartPoint 2, soPoint objEndPoint 2,boolbExtend)8.点是否在线段上soGeometrist.IsPointOnLine(soPoint objPoint,soPointobjStartPoint, soPoint objEndPoint , boolbExtend) bool9.计算点集的凸闭包:返回简单的凸多边形soGeoRegion soGeometrist.ConvexHull(soPointsobjPoints)10.线与线倒圆角,返回倒角结果中的弧段soGeoArcsoGeometrist.Fillet(soPointobjStartPoint1,soPointobjEndPoint1,soPoint objStartPoint 2, soPointobjEndPoint 2,double dRadius)11.求直线上满足距离条件的一个点soPointsoGeometrist.FindPointOnLineByDistance(soPointobjStartPoint,soPointobjEndPoint,double dDistance)打开数据源axSuperMap1.Connect(axSuperWorkspace1.CtlHandle);string dataname =string.Empty;this.dlgFileOpen.FileName=string.Empty;this.dlgFileOpen.Filter="(数据源)(.smw)|*.smw";if (this.dlgFileOpen.ShowDialog() ==DialogResult.OK){ dataname = this.dlgFileOpen.FileName;axSuperWorkspace1.Open(this.dlgFileOpen.FileName);axSuperMap1.OpenMap(axSuperWorkspace1.Maps[1]); }else{MessageBox.Show("选取数据源错误"); }地图可视大小状态this.axSuperMap1.Action =SuperMapLib.seAction.scaZoomIn; //放大this.axSuperMap1.Action =SuperMapLib.seAction.scaZoomOut; //缩小this.axSuperMap1.Action =SuperMapLib.seAction.scaPan; //漫游this.axSuperMap1.ViewEntire(); //全幅显示图层集合中添加数据集axSuperMap.Connect(axSuperWorkspace.CtlHandle);axSuperworkspace wk=new axsuperworkspace();Sodatasources objsources;objsources=wk.datasources;Sodatasource objsources;objsource=objsources[1];Sodatasets objdatasets;objdatasets=objsource.datasets;Sodataset objdataset;objdataset=objdatasets[2];solayers objlayer;solayer yers.adddataset(sodatasetobjdataset, bool addhead);axSuperMap.Refresh();布局控件对象关系结构:布局控件(SuperLayout)包括:布局元素集合(soLytElements)、布局选择集(soLytSelection)、布局纸面对象(soLytPage)、布局标尺线集合(soLytRulerLines)。