讲义1103GIS开发最后一次更新.docx
- 文档编号:8878129
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:45
- 大小:95.06KB
讲义1103GIS开发最后一次更新.docx
《讲义1103GIS开发最后一次更新.docx》由会员分享,可在线阅读,更多相关《讲义1103GIS开发最后一次更新.docx(45页珍藏版)》请在冰豆网上搜索。
讲义1103GIS开发最后一次更新
课程说明
1.专业,必修,考试
2.技术(应用程序的开发)--成果
3.实验,思维
==》建议
简单应用程序的开发
解决问题的方案
GIS二次开发/开发人员,工程师
三点,语言c#,java,数据库sqlserver,mysql,oracle,软件(平台)--一套GIS软件(桌面版,开发版,网络版)
软件=程序+文档(项目的分析,规划,整理,归档,方案)
课程要求掌握:
1).二次开发的学习方法---项目文档,解决方案
2).团队合作---项目过程,分工
3).对GIS二次开发的热点的关注---综合利用现有的信息平台
方法:
一门语言(开发环境)+组件式GIS
什么是GIS二次开发:
成果:
应用程序+文档=应用软件
基于GIS平台软件(平台提供商)提供的组件(控件,插件),(二次开发商)结合系统开发环境,开发应用程序
按项目专题的形式,分析问题,写出解决方案(控件的属性,事件和方法)----》思路
解决方案----》翻译程序语言
专题一GIS开发的相关概念
1.测量,数据,应用,设计(规划),开发
2.开发什么?
成果是什么?
软件=程序+文档
系统软件:
OS
平台软件:
DBMS
应用软件:
解决某一个问题
==》GIS软件如何定位
APP
平台软件(arcgis,supermap,mapgis)
桌面版supermapdesktop
开发版supermapobjectsSO
服务器版supermapiserver
客户端版supermapiserverfor____api
3.二次开发的相关概念
(1)开发技术的发展
面向过程
面向对象:
面向组件(用控件)面向框架
面向服务SOA:
API式,网址=云计算
组件式GIS的开发:
用_超图_平台提供的GIS组件(SO),基于可视化编程语言(C#),实现GIS的功能应用(应用程序)。
为什么称为二次开发
组件或是框架---》开发过程
(2)组件,控件
组件
(3)组件平台
GIS组件与组件式GIS
组件式GIS(SO)提供了各种GIS组件(控件)
学习重点之一:
熟悉SO中的各个控件学习控件的方法?
用途特点,属性,事件,方法
SO中有哪些控件
核心控件与对象整体的对象结构图,表1-1
SO平台的安装
桌面版
开发版supermapobjects6.0sp5
SLM
在线申请许可邮箱,机器名
许可文件*.lic
在VS.NET中添加控件
专题二SO中的数据文件
1.地理实体是如何在GIS软件中表示的?
现实---信息----机器
实体----信息模型-----0,1
时间,空间,属性--数据结构与编码--0,1
2.数据库的相关概念
数据模型(关系模型),表(关系),记录(行),属性(列)
数据结构—表,数据操作(关系代数或SQL),约束条件(三种)
思考:
GIS空间数据库是否也遵循这些数据模型?
3.SO支持的数据库类型
数据库技术:
SDX+6.x
软件---》数据模型(文件)
SO中数据库相关的概念
数据库GIS
数据库-----------数据源
表-------------数据集-风格化--图层—叠加地图
记录---------------实体
SO中与数据相关的概念:
工作空间,数据源,数据集,图层,地图,实体(元素,对象)
工作空间:
保留的是相应规则,不保存实质的数据,VB中“工程”的概念
数据源:
数据库,数据的集合
==》SO支持三种数据源
(1)文件型的数据源sdd/sdbudd/udb-实验
(2)数据库型的数据源sqlserver,oraclesdx+
数据库的远程发布和访问
(3)web数据源(云服务---webservice),OGC规范===》在超图中,打开天地图的数据?
==》arcgis分别对应三种类型,技术?
personalgeodatabase
sde
arcgisserver可以发布web数据源
googlemapkml文件
数据集soDataset
SO中数据操作的基本单位,根据实体的类型分为点、线、面、体以及其它(CAD等)类型数据集==》数据集风格化后,形成图层soLayer数据库中的表
图层
思考:
数据集与图层的关系;图层与地图的关系
地图:
图层叠加,地图名,地图生成规则—》工作空间中的
各个概念之间的关系
在SO中,每个概念都会有与之相对应的”对象”来进行描述(属性,事件,方法)---》用于程序的编写==》组件式开发重要的思维方法,功能—》控件(对象)的属性,事件,方法---》程序员参考手册
会看对象结构图
结构,关系
整体对象结构图---用户手册(对象间的联系)
个体对象结构图---用户手册(属性,事件,方法)
SO中的数据文件
常用的文件类型
数据交换
补充:
SO开发的约束说明
1.SO中的常量se,对象命名so
2.添加引用—》
中对com对象的声明和释放
释放机制,主动强制释放对象
专题三数据文件的打开
--打开工作空间文件
客户需求
---编写简单应用程序,实现工作空间文件的打开
操作流程?
---菜单命令,打开文件对话框(控件),选择文件路径,打开结果(列出工作空间所包含的资源)
分析问题,提出解决方案
(1)用打开文件对话框来确定工作空间文件所在的路径
openFiledialog属性,方法熟悉常用控件的使用
通过打开文件对话框,得到用户选择的工作空间文件
if(opendialog1.showdialog()=dialogresult.ok)
stringsmwpath=openfiledialog1.filename
(2)得到了工作空间文件的路径,打开
工作空间控件superworkspace
axsuperworkspace.open()
将上一步得到的工作空间文件所在的全路径smwpath作为实参,传递给核心方法open
bool=axsuperworkspace1.open(smwpath)
(3)打开成功,列出资源(数据源等)
--有哪些资源—》对象
--与工作空间控件的关系—》控件与对象的联系
--如何得到这些对象
--对象,如何列出
soMapsobjMaps;
objmaps=axsuperworkspace1.Maps
for(i=1;i<=objmaps.Count;i++)
listbox2.additemobjmaps[i]//列出?
next
界面设计
注意常用标准控件的使用
控件属性的设置(外观)
控件的排版(大小,间距,对齐)
界面,UI控件(第三方控件)
代码的编写
注释(可以将方案直接作为注释)
思路:
核心方法,参数的构造
先写大结构(结构里面写注释),再细化
注意COM编程的约束
调试,运行,代码的优化
尽量用“特殊的实例”去验证代码
逻辑测试
不断测试,不断完善…….
总结,文档
实验报告
技术总结,项目总结,项目方案()
补充:
控件的学习方法
a.用途特点:
superworkspace,运行不可见,所有对数据的操作,都是以工作空间控件作为入口的
b.常用属性:
c.常用方法:
d.事件:
e.与其它控件或对象的关系:
对象结构图
=查看对象结构图,参考手册
补充:
学习方法的方法
1.方法的作用
2.会看方法的函数原型---参考手册
BooleanSuperWorkspace.Open(strWorkspaceNameAsString,[strPasswordAsString])
返回值的数据类型
形参:
参数名,参数含义,参数数据类型
if(sws1.open(swmpath)
else
3.代码书写过程,都是围绕核心方法的参数(前面获得参数的值,传递给核心方法)
--打开数据源文件
客户需求
设计简单应用程序,打开SO支持的文件型数据源(文件型sdd/sdb,udd/udb,数据库型,web);列出所包含的数据集
相关操作
打开文件对话框,结果是数据集列表
提出问题,分析问题
(1)文件型数据源如何获取
--打开文件对话框(基本设置)
--filename属性?
代码
stringsdbpath=opendialog1.filename
(2)得到数据源文件后,如何打开
--功能,参考手册,控件的属性,事件,方法
工作空间控件的opendatasource()—核心方法
语法
soDatasourceSuperWorkspace.OpenDataSource
(strDataSourceNameAsString,//路径
strAliasAsString,//别名
nEngineTypeAsseEngineType,//驱动类型
bReadOnlyAsBoolean)
c:
\a.sdd
sodatasouceobjds;
objds=axsuperworkspace1.opendatasource(sdbpath,”a”,seEngineType.sceSDBPlus,false);
if(objdsisnothing)
{
//打开失败
}
else
{
//打开成功,转(3)
}
(3)打开成功,如何得到数据集列表
objds;参看对象结构图
数据源—datasets---sodatasets(集合)---集合与元素的关系----数据集sodataset.name
界面设计
规范,标准
以后考虑UI控件的引入
编码
编码约定
方案作为注释
大的结构
程序的基本逻辑
调试运行
特殊情况
多次打开数据的情况
边调试边修改代码
总结,文档
实验报告,技术文档
要求:
回宿舍,参照课本第一章,安装配置好SO6.0
专题四地图的生成与打开
1.地图的基本概念
现实中的地图:
地理数据的本质……
地图:
数据法则…..
GIS地图:
平台,执行地理操作的基础
小结:
如何将空间数据库中的数据----》GIS中的地图,并显示===》地图的操作
2.GIS中地图的生成(基本原理及)过程
空间数据库,数据源,数据集
数据集与图层的关系:
数据集的风格化得到图层
地图是图层的叠加
数据源---》数据集的集合数据集转化为图层,按一定的规则进行叠加,生成地图
确定了几个对象的关系后查看对象结构图,看两者之间的关系
重点:
对象结构图中,图层与数据集的关系
图层=图层集.adddataset(数据集)
数据集=图层.dataset
思考:
多个图层?
循环结构;多个图层顺序如何定?
将这些图层按顺序叠放,显示,即地图
3.SO中与地图的相关对象
地图还是地图名?
没有地图对象,只有地图名对象,而且地图名只保存规则,在工作空间中--soMaps
地图与工作空间
可编辑…状态的设置
顺序
风格设置
专题图
空间查询,量算,分析
标注,编辑…….
图层soLayer图层对象。
该对象是soLayers对象的子集。
常用的属性,事件和方法---参考手册
图层集soLayers图层集合对象。
该对象作为SuperMap控件的图层集合对象(soLayers),用来管理地图中的所有图层,可对其进行添加、移动、删除等操作。
AddDataset
添加数据集到地图图层集合中。
solayersobjlayers;
objlayers=axsupermap1.layers
地图的显示与操作:
要用到SO中的核心控件地图控件supermap
4.地图控件supermap
学习控件的方法:
用途:
地图控件地图的相关操作
特点:
GIS地图窗口的基本控件
属性:
ActionHandleMapName……
事件:
方法:
CloseConnectOpenMapOutputMapRefresh
地图的功能:
浏览功能,搜索,测距测面测角(几何量算),坐标转换,地图的输出,地图编辑,专题地图的生成……..
5.生成地图
(1)客户需求:
打开数据源文件,列出数据集,同时,生成地图,并显示
(2)操作
打开文件对话框,列表框列出数据集,地图控件显示地图
(3)分析问题,解决方案
--a.打开数据源文件
openfiledialog的设置
sdd/sdb文件的路径=.filename
objds=axsuperworkspace.opendatasource(路径,…….)
--b.列出数据集
objdts=objds.datasets
solayerobjlayer;
for(intI=1;i<=objdts.count;i++)
{
listbox1.items.add(objdts[i].name);
objlayer=axsupermap1.layers.adddataset(objdts[i],true)//--c.数据集生成图层,思考,如何叠加
}
--d.显示
axsupermap.refresh();
(4)界面设计
---
(5)代码
6.对地图和图层操作的思考
(1)对地图浏览的操作
--放大,缩小,全屏,漫游,自由缩放
当前状态
选择菜单(工具按钮),切换状态
地图窗口操作
SO中的解决方案
axsupermap.action属性
返回/设置地图窗口中的Action操作类型。
所谓的action操作类型,其实就是SO已定义的action常量
找到功能对应的常量,赋值
axsupermap1.action=seaction.scaZoomIn
scaNull
0
空操作。
scaPan
1
地图漫游。
scaZoomIn
2
地图放大。
scaZoomOut
3
地图缩小。
scaZoomFree
4
地图自由缩放。
scaSelect
5
点击选择对象。
小结:
地图操作的功能的实现基本上以action状态切换为主,具体的操作内容已封装
(2)地图的编辑操作
---同样通过action实现…….
(3)图层的操作
需求—体验操作---分析,方案---实现
专题五图层的管理—图例控件
superlegend
1.图例控件的用途
图例控件-图例窗口
图层的管理----图层的操作有哪些?
(状态,风格,顺序,专题图……)图例控件有哪些功能需求
==》图例控件中的图层从哪里来?
图层的生成---》数据集,添加到地图窗口(地图控件),生成图层(显示在图例窗口—图例控件)
图例控件的数据来源---连接地图控件
superlegend.connect(supermap.ctlhandle)
2.图例控件的外观特点
外观:
连接线,节点,+-,复选框,图标,名称,子图层……如何实现;
特点:
层次结构,树形结构的形式对图层进行管理
图例控件功能的体现还有一个重点:
右键菜单
3.图例控件常用的属性,事件,方法
属性:
外观相关的,都是通过属性进行设置的—》属性窗口,代码
BooleanSuperLegend.HasLines
跟外观相关的属性设置,参看参考手册
PopupMenu右键菜单,是否可以拖动ItemDragAndDrop….
方法:
连接connect
断开连接disconnect
刷新refresh
事件:
Modified图例控件改变之后
axsupermap.refresh//地图发生变化,更新
axsuperlegend.refresh
补充:
基础电子地图应用程序的开发
电子地图应用的三大部分:
数据管理:
工作空间控件---treeviewer;工作空间管理控件
图层管理:
图例控件
地图操作:
地图控件
treeviewer控件和工作空间管理控件
treeviewer节点的操作
节点的生成(子节点,父节点),层次关系,展开;
节点的选择及单击(双击)事件
工作空间管理控件superwkspmanager
用途特点:
分“页面”tab,数据管理
主要的属性事件方法:
数据的装载:
connect(axsuperworkspace1.ctlhandle)
数据管理功能---》通过对资源节点的操作来进行
节点有哪些操作:
节点的选择与判断P30
节点的事件,事件内容
==》
数据源节点(父):
节点的展开
数据集节点:
生成图层(图例),显示地图
节点是数据集的名称,父节点是数据源别名
体验内容:
核心方法:
solayers.adddataset()
基本思路:
生成地图—》solayers.adddatesetsodataset
<--sodataset.name-sodatasource.alaissodatasoucesuperws.datasouces[]
思考:
因为是只有一个地图窗口,一个数据集,多次点击如何操作?
地图节点:
打开地图,同时所有图层到图例
节点就是地图名
内容:
打开地图并显示,同时,地图所包含的图层显示在图例中
核心方法:
supermap.openmap()
语法
BooleanSuperMap.OpenMap(strMapNameAsString)
strMapName
必选
String
工作空间中地图(Map)的名称。
两个控件的刷新
布局节点:
……
小结:
数据管理升级:
完善数据源(打开,新建,复制,保存,关闭,投影…..)和数据集的操作(打开,新建,复制,转换…..)
图例控件:
图层操作的升级,图层(数据集)对象的操作—》专题图生成
地图窗口:
浏览操作,标注,量算,编辑……
专题六专题地图生成的功能设计
1.专题地图
专题地图信息,底图,符号(风格)….
专题地图的生成原理:
专题变量
分类:
标签,单值,统计,………
建议:
专题地图的含义
专题变量的计算(建模)是专题图的根本
具备专题地图制图的能力(项目成果)
GIS开放地图制图的功能----地图汇
2.专题地图的制作过程(生成过程)
底图,专题要素(需求、业务),符号,字段,分类,
过程:
确定类型(有哪些类型)
确定图层(表)
选取(并计算)专题变量
赋值,产生不同风格的地理对象,显示
3.程序实现
(1)需求:
在地图应用程序中,添加“专题地图”生成的功能
==》用户操作用来生成专题图
(2)操作体验:
选图层选类型
选变量生成显示
(3)分析问题,解决方案
A选图层:
列出图层(数据集),给客户选择实验1,列出数据集(组合框/列表框)solayer,sodataset
组合框,items.add,结合实验一(打开数据源,列出数据集)
B选类型:
只考虑单值专题图()
补充:
专题图对象
在SO中,每一种专题图类型都定义了对应的专题图对象来操作对象的学习方法(用途特点,属性,事件,方法,对象结构图,手册)
定义,赋值//确定了图层,可以通过图层属性,确定专题图类型
soThemeUnique对象
单值专题图对象。
属性CaptionDefaultStyleEnable
FieldFilterStyleValueValueCount
方法:
MakeDefault
用组合框列出多种类型的名称(与多分支结构配合使用)
C选择专题变量:
列出所有的属性名,由客户指定—》某一张表(数据集/图层)下的所有字段名
补充:
soFieldInfo对象/soFieldInfos集合字段信息对象(名字,数据类型…..)
sodatasetsoFieldInfo?
Vector
solayer
从对象结构图看:
数据集---矢量数据集---记录集.getfieldinfos方法---soFileldInfos……补充
列出所有字段需“查询记录”,暂时以smID作为专题变量
combobox1_click
//图层的名称supermap.layers=solayers[名称]solayer.dataset数据集sodataset
//字段数据集<--矢量数据集<--rs.getfieldinfo()
objlayerssolayers;
objlayers=supermap.layers;
objdataset=objlayers[combo1.selecteditem.tostring()].dataset;
….补充记录集与数据集的关系
D.赋值,不同的风格显示
多少种不同风格?
数量
风格:
SO中的风格对象soStyle
风格有不同的要素:
如何体现
该对象用于定义几何对象在图层中显示的符号、线型、填充模式、大小、颜色等风格。
(1).soStyle对象不用赋值的
sostyleobjstyle=newsostyle()//构造函数
(2).风格对象包括很多相应的“设置”---》通过风格对象的属性来体现线型,线的颜色,填充颜色,填充类型等都通过属性设置
objstyle.BrushColor=颜色的表示
objstyle.PenStyle=1
(3).风格设置好后,注意“赋值”给所需要的对象
说明:
凡是涉及到地理对象“显示”,都需要考虑风格对象
soColors颜色集对象
该对象主要作用是提供颜色序列。
提供各种渐变色和随机色的生成,以及SuperMapObjects预定义渐变色的生成。
(1)=newsocolors()
(2)MakeRandomColorset(n)//随机产生n种颜色
(3)赋值给相应的对象或是风格属性
代码的编写,请参考课本(单值专题图),专题图生成的实例代码
小结:
专题图的生成过程
每一步骤的解决方案,涉及到的对象或控件(四步)
单值专题图对象---生成---属性和方法
难点:
风格对象和颜色集对象(三步)
以此类推到其它专题图对象
专题七查询
1.查询相关的概念
关键字,搜索(引擎),空间关系,结果的显示---搜商,入口
与地理数据(信息)的相关的查询
什么是查询?
查询的要素?
(在哪里查?
查询的方式,查询的条件)
2.GIS中的查询
GIS数据库属性条件和空间条件地理实体或属性
基于属性的查询
基于空间关系的查询
综合查询
(互联网地图或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 讲义 1103 GIS 开发 最后 一次 更新
![提示](https://static.bdocx.com/images/bang_tan.gif)