ArcgisAPIforsiliverlight设计与开发复习纲要

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ArcgisAPIforsiliverlight设计与开发复习纲要
《GIS设计与开发》复习纲要
一、GIS相关开发技术
1.1Desktop GIS、Mobile GIS与WebGIS开发技术
Desktop GIS:(单机版)桌面地理信息系统可理解为是运行于较低硬件性能指标上的较为大众化、普及化的地理信息系统。

Mobile GIS:(移动GIS)是以移动互联网为支撑、以智能手机或平板电脑为终端、结合北斗、GPS或基站为定位手段的GIS系统。

WebGIS:(网络地理信息系统)指基于Internet平台,客户端应用软件采用网络协议,运用在Internet上的地理信息系统。

1.2ESRI系列的WebGIS开发技术
1.2.1ArcGIS API 系列(API:客户端接口)
ArcGIS API for Javascript、ArcGIS API for Flex、ArcGIS API for SiliverLight ArcGIS API for Silverlight通过REST接口访问ArcGIS Server发布的地图服务、影像服务、几何服务、地理处理服务、要素服务、网络服务等,还可以访问OGC标准的WMS、WFS、WCS等服务,也可以访问Bing地图服务。

1.2.2ArcGIS Server服务端
Url:http://localhost/ArcGIS/rest/services
Map Service:提供动态的,或经过缓存处理的2D地图服务。

Image Service:提供对栅格、影像数据的访问服务。

Globe Service:提供3D球体服务。

Geocode Service:提供地址与地理位置查询服务
Geodata Service:提供对Geodatabase的访问、查询、更新和管理服务。

Geoprocessing Service:提供空间分析和地理处理服务。

Geometry Service:提供对几何图形的操作。

Search Service:提供对企业级GIS数据资源的检索服务。

目前只能在ArcGIS Desktop软件中使用该服务。

1.3开源GIS系列的WebGIS开发技术
1.3.1OpenLayers客户端
OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。

1.3.2GeoSever 与QGIS Server服务端
GeoServer 是OpenGIS Web 服务器规范的J2EE 实现,利用GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

QGIS Server 服务器利用Quantum GIS(QGIS)桌面应用程序的组件为用户提供了一套网络地图服务(WMS)系统。

1.4SilverLight,Flex与Javascript 三种客户端开发技术对比
Silverlight优点(UI界面):
1.Silverlight基于WPF/E技术,界面表现十分出色,虽然比flex 稍稍逊色,但已经完全可以满足需要。

2.Silverlight秉承了微软产品家族的一贯风格,编程语言、编辑器、设计器、系统部署调试都提供了集成解决方案,简单易用。

3.Silverlight使用C#作为开发语言,在浏览器中可以与页面上的html和javascript 跨语言无缝互操作。

4.Silverlight可以以二进制或xaml标签的方式发布,维护上更加方便。

5.在服务器端有强大的技术支撑,在客户端-服务器端通信方面十分方便。

Silverlight缺点:
1.Silverlight可以跨浏览器,但是不能直接跨操作系统平台(有了moonlight,跨平台也不是太大问题)。

2.Silverlight普及率低,一般在应用之前需要下载安装插件。

3.推出较晚,大规模应用开发还不是很多。

Flex技术(flash)
Flex优点:
1.Flex出自Adobe之手,而图形图像设计与处理,界面渲染这些
都是Adobe的看家本领,自不必说,Flex在界面表现上非常优秀,无人能及。

2.完全实现跨浏览器、跨平台。

3.几乎所有浏览器上都安装了flashPlayer,flashPlayer的普及率是flex的巨大优势,用户基本上不会有安装插件的过程。

Flex缺点:
1.在应用开发领域,Adobe还显得十分陌生。

ActionScript作为处理flash动画的脚本语言还是不错的,但是还是很难推动它进入主流程序开发语言,尤其是它及其怪异的语法,完全是Java、C#、Javascript的杂合体,虽然不影响表达逻辑,但真正的相信程序员们都会对此比较困惑。

2.Flex源于Flash技术,Flash在设计上定位于常规html页面的扩展和补充,能够方便的嵌入页面之中,但它对页面的控制能力很低,在系统级Flex开发上,无法支撑与页面及浏览器的交互性需求!也无法支撑多个Flex之间的交互性需求!
3. Flex Framework 本身存在一些设计缺陷,在设计上和实现上均存在不少bug,为开发带来极大困扰,降低开发效率。

同时Framework高低版本之间无法完全兼容,控件库不够完善,Framework成熟度有待进一步提高。

4. 由于Flex实质上采用“客户端/服务器端”的通信模式,由于缺乏服务器端技术支撑,所以客户端与服务器端是异构的语言运行环境,因此在数据通信上存在较大局限性,客户端与服务器端在通信协议、数据格式解析上存在较大开销,全异步通信模式,在功能上耦合度较低,在数据格式上耦合较高,开发效率低,维护较为困难。

5.Flex被编译为二进制文件(包括构建界面的mxml),在后期无法对界面做灵活调整,任何修改均需要重新编译部署。

6. Flex开发环境FlexBuilder基于Eclipse平台,但在代码编辑、语法检查、增量编译等方面均存在不足,致使开发效率较低。

Javascript技术(纯代码编辑)
优点:
1.性能:由于JavaScript运行在客户端,节省了web服务器的请求时间和带宽
2.轻量级的脚本语言,比较容易学习
3.运行在用户机器上,运行结果和处理相对比较快。

4.可以使用第三方附加组件来检查代码片段。

缺点:
1.安全问题:由于JavaScript在客户端运行,可能被用于黑客目的。

2.渲染问题在JavaScript这样的用户端脚本语言语言出现之前,传统的数据提交和验证工作均由用户端浏览器通过网络传输到服务器上进行。

如果数据量很大,这对于网络和服务器的资源来说实在是一种无形的浪费。

而使用JavaScript就可以在客户端进行数据验证。

JavaScript可以方便地操纵各种浏览器的对象,可以使用JavaScript 来控制浏览器的外观,状态甚至运行方式,可以根据用户的需要“定制”浏览器,从而使网页更加友好。

JavaScript可以使多种任务仅在用户端就可以完成而不需要网络和服务器的参与,从而支持分布式的运算和处理。

二、WebGIS开发核心Map地图控件类
2.1 Map地图控件的主要作用
Map是ArcGIS API for SiliverLight中的核心组件,主要用于呈现地图服务、影像服务中的空间空间数据等。

2.2 Map地图控件的类图(书上PDF)
2.3 Map地图主要属性的说明
Extent:地图外包矩形范围,即四个角点坐标。

IsLogoVisble:是否显示ESRI的LOGO
PanDuration/ZoomDuration:平移/缩放时的动画持续时间
SaptialReference:空间参考,默认为加入地图中的第一个具有空间参考的图层的空间参考。

WrapAround:设置地图是否经向循环。

2.4 Map地图主要方法的说明
MapToScreenToMap:地图与屏幕的坐标转换
PanTo/ZoomTo:平秱/缩放到指定范围。

2.5 Map地图主要事件的说明
ExtentChanged地图范围改变事件
MouseClick 地图上的单击事件。

Progress 地图数据加载迕度事件。

PropertyChanged 地图属性变化事件
三、Layer地图图层类
3.1 Layer图层的主要作用
存储数据在相应的图层,不同图层类型来承载不同来源的数据。

3.2 Layer图层的类图及相互继承关系(书上P27)
3.3 TiledLayer、GraphicsLayer、ElementLayer与DynamicLayer类的主要各自特点
TiledLayer(切片图层):抽象基类,表示切片/缓存地图服务图层。

当需要自定义一个切片图层类型,但缓存图片不能通过简单的URL 直接引用时,应考虑实现TiledLayer。

GraphicsLayer(矢量图层):ESRI.ArcGIS.Client.GraphicsLayer 是一种客户端图层,用于绘制基于矢量数据的图形,并指定符号迕行渲染。

ElementLayer(元素图层;放SL控件):ESRI.ArcGIS.Client.ElementLayer 是一种客户端图层类型,允许将Silverlight 中任意System.Windows.UIElement 对象放在地图里的某个地理位置。

如果为UIElement 指定高宽,则其将随地图缩放,如果仅指定点位置,则不随地图缩放。

DynamicLaye(动态图层,栅格):抽象基类,表示劢态图层类型。

如果想创建自定义劢态图层类型,并需要管理创建、操作或自己下载源图片数据,请实现DynamicLayer。

3.4 TiledLayer主要属性、方法和事件与自定义扩展Baidu地图、Google地图和天地图的方法
天地图的方法
TiledLayer主要属性
FullExtent
ID
InitializationFailure
MaximumResolution/MinimumResolution
Opacity
SpatialReference
Visible
主要方法
Initialize 初始化图层数据,可重写该方法以添加自己的初始化逡辑。

ToBitmap 将当前图层渲染为WritableBitmap 对象。

主要事件
InitializationFailed 图层初始化失败事件。

Initialized 图层初始化结束事件。

自定义扩展Baidu地图、Google地图和天地图的方法
访问谷歌地图,需要扩展ArcGIS API for Silverlight 的图层类型。

由于谷歌地图以图片方式发送到客户端,所以可通过从TiledMapServiceLayer 继承而生成新的图层类型用于访问谷歌矢量地图和影像地图。

public override string GetTileUrl( int level, int row, int col)
{
// 获取图片存储的服务器
string host = col / 2 == 0 ? "mt0" : "mt1";
// 构建图片的完整URL地址
string url = string.Format(
"http://{0}/doc/499293497.html
/vt/lyrs=m@145&hl=zh-CN&x={1}&y={2}&z={3}&s=", host, col, row, level);
return url;
} }
天地图与百度地图的操作方式与geogle地图相差不多。

3.5 DynamicLayer与WMSLayer的主要属性、方法和事件
DynamicLayer主要属性、方法和事件
属性
Capabilities
CopyrightText
Description
ProxyUPL
Units
Url
方法Get/SetLayerVisibility () QueryLegendInfos ()
事件LegendChanged VisibilityChanged
WMSLayer的主要属性、方法和事件
属性
Abstract
LayerList
Layers
ProxyUrl - SkipGetCapabilities
Title
Url
方法
Initialize()
Refresh()
Update()
事件
Initializedfailed
四、FeatureLayer矢量图层类
4.1 FeatureLayer的主要作用
ESRI.ArcGIS.Client.FeatureLayer 是GraphicsLayer 的特殊类型,可以不编写后台代码即显示要素。

与GraphicsLayer 相比,
FeatureLayer有以下特性:Url—地图服务地址(加上图层ID),要素图层自劢获叏图层中的数据。

FeatureSymbol —要素渲染的符号。

ClusterFeatures—是否允许对点要素迕行聚簇显示。

1编辑:只能在引用了要素服务的FeatureLayer 上执行编辑操作2定义表达式:可以在FeatureLayer 设置一个Where 子句来获取你需要的要素3时间定义:使用时间条件来过滤FeatureLayer 中的要素
4选择集:选择集代表了用户想要用于单独查看,编辑或分析目的的要素子集。

选择集可以用来进行统计计算,GP 工具和制图,以及交互式GIS 分析和研究。

定义了选择表达式后,将无法获取地图文档中不满足条件的其他要素。

4.2 FeatureLayer的主要属性、方法和事件
主要属性
Url 表示ArcGIS Server 地图服务中的图层或宿主在MapIt 空间数据服务中的表的地址(参见上表中的例子)。

要素图层由数据源中的要素构成。

Where 查询定义了将要显示特定图层中的哪些要素。

OnDemandCacheSize 当Mode = OnDemand 时,该属性定义了存储在客户端缓图范围以外的要素个数。

当某个要素被获取并存储在缓存中,除非其被从缓存中删除,否则丌需要重新从服务器上获取该要素。

缓存并能跨会话保留。

FeatureSymbol 该属性定义了在图层中渲染单个图形所引用的简单符号。

TimeExtent 该属性引用了要素图层中的时间点或范围。

该属性由ArcGIS Server 地图
主要方法
Update() 该方法会重新查询要素图层中的数据。

如果图层或表格在服务器端迕行了更新,通过调用该方法,可以立即在客户端看到返些变化。

注意,返种情况下你不能启用客户端缓存。

ClearGraphic 清除所有的Graphic
Refresh 迫使重新绘制所有的Graphic 要素。

主要事件
MouseEnter/Leave 鼠标指针迕入/离开featureLayer 区域时触収的事件。

MouseLeftButtonDown/Up 鼠标左键按下/松开时触収的事件。

MouseMove 鼠标指针秱劢时触収的事件。

MouseRightButtonDown/Up 鼠标右键按下/松开时触収的事件。

UpdateCompleted 当该层已完成了从服务请求的功能出现。

UpdateFailed 当该层未完成了从服务请求的功能出现。

4.3 Graphics的构成和作用
构成:空间数据+属性数据+样式
作用:Graphics对象表示可以在GraphicsLayer上绘制要素,同时FeatureLayer 中的要素,几何服务操作参数等大多以Graphic对象来表示。

学3
6层600号
整个图形是Graphic,外框加填充(修饰)是Symbol,
学3 6层600号(里面的内容)是Attributes
几何图形坐标是Geometry.
图形绘制首先需要创建一个GraphicsLayer,然后将Graphic 添加上去以显示数据。

多数情况下,你将由通过执行查询返回的结果、在地图上绘制图形等方式得到的几何体生成Graphic。

添加Graphic 的主要步骤包括:
1) 获取添加Graphic 的目标GraphicsLayer;
2) 创建或者获取Graphic;
3) 设置Graphic 的Geometry属性;
4) 为Graphic 应用符号;
5) 将Graphic 添加到GraphicsLayer。

作用:Graphic对象表示可以在GraphicsLayer上绘制的要素,同时FeatureLayer 中的要素、几何服务操作的参数等大多以Graphic 对象来表示。

4.4 Graphic与Geometry、Attribute和Symbol间的关系
Graphic的主要成员包括Geometry、Attribute和Symbol。

它们是Graphic的属性。

4.5 Geometry的类图和主要属性、方法与事件
属性:
Attributes 要素的属性字典(key-value,key 是属性名称,value 是属性值)。

Geometry获取或设置要素的图形几何体MapTip 获取或设置当鼠标悬停在要素上方时显示的地图提示。

Selected获取或设置要素是否被选中
Symbol 获取或设置用于渲染当前要素的符号。

TimeExtent获取或设置当前要素的时间范围。

方法:
Select/UnSelect 选择/叏消选择当前要素。

事件:
AttributeValueChanged当前要素属性収生变化时触収的事件。

MouseEnter/MouseLeave鼠标相关的事件MouseLeftButtonDown MouseLeftButtonUp
MouseMove
MouseRightButtonDown
MouseRightButtonUp
4.6 Symbol的类图和主要属性、方法与事件
4.7 Render类的主要属性、方法与事件
五、WebGIS的常用地图控件
5.1 Legend控件
Legend 控件用于显示动态服务图层以及要素图层的要素符号信
息。

Legend 控件可以用作模板,因此其他控件可以添加到图层项中,如单选按钮,复选框以及滑块,以此创建交互式的内容列表(TOC)。

5.2 BookMark、MapTip、InfoWindow等控件
Bookmark 控件用于管理用户创建的地图书签(Bookmark.MapBookmark),提
供新建书签、定位到书签和删除书签的功能。

MapTip 控件用于显示GraphicsLayer (及其子类)中的Graphic 的属性信息。

InfoWindow 控件是一个带有小尾巴的窗口,小尾巴指向一个位置或感兴趣的要素。

Toolbar控件用于放置各种工具、命令,其中的每一项都是ToolbarItem。

OverviewMap(又称鹰眼图、概览图)控件用于表示所关联的Map控件的地图视野范围在概览图层中的相对位置和范围。

Navigation控件用于地图导航操作,支持平移、缩放和旋转等操作。

MagnifyingGlass控件(放大镜控件)用于对Map的局部区域进行放大显示。

Magnifier控件(放大镜控件)用于对Map的局部区域进行放大显示。

5.3 另用地图控件的共同特点
允许用户与地图交互的UI 元素,这些元素称为控件。

5.4 Draw地图绘制控件的用法及与Map、FeatureLayer之间的关系
Draw 是绘图工具,主要用于在地图上绘制Graphic。

Draw在画完图像之后得到一个Geomerty,然后实例化一个
Graphic,将Geomerty添加为Graphic的Geomerty属性,再将Graphic添加到GraphicsLayer图层,最后将GraphicsLayer 添加到Map里面。

<="" bdsfid="295" content="取消" p="" x:name="btnDrawNone">
Click="btnDraw_Click" Height="25" Width="50" FontSize="14"/>
六、Task地图分析功能
6.1 Task的主要功能与类图
查询检索是通过Task 的方式实现的。

类图:
6.2 八种Task的功能说明
FindTask 在地图服务所有图层中基于文本模糊查找。

IdentifyTask 点击要素,识别要素属性。

QueryTask 对地图服务中的某个图层,迕行属性条件和空间范围查询。

ImageServiceIdentifyTask 点击影像数据,识别影像属性。

GeometryService 提供几何运算操作,如:缓冲区计算、距离/长度/面积计算、自动闭合、凸多边形、裁剪、加密、求差、概化、相交、偏秱、重塑图形、截断/延伸、组合等。

RouteTask 提供路径分析、临近设施分析、服务区域分析等功能。

Locator 提供地址定位功能。

Geoprocessor 提供运行地理处理服务(ArcGIS Server 収布的GPServer)的功能。

6.3 Task空间分析功能的一般步骤
使用Task 通常包括三个步骤:
1) 实例化Task 对象,注册Task 完成、失败的监听事件;(实例并注册)
2) 实例化Task 参数对象,为必要属性赋值,发送请求;(设置参数各不同)
3) 在Task 完成事件处理函数中处理返回结果或在Task 失败事件处理函数中处理错误信息。

(成功失败取数据)
6.4 QueryTask的应用示例
// 在“查询”按钮被点击时执行查询逻辑
private void QueryButton_Click(object sender, RoutedEventArgs e)
{
// 初始化QueryTask实例
QueryTask queryT ask = new QueryTask("http://sampleserver1.arcgisonline.co
m/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapS erver/5");
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
queryTask.Failed += QueryTask_Failed;
Query query = new Query();
query.ReturnGeometry = true;//返回图形
//指定输出(返回)字段
query.OutFields.AddRange(new string[] { "STATE_NAME","POP07_SQMI" });
// 指定查询条件(用户输入)
query.Where = QueryTextBox.Text;
queryTask.ExecuteAsync(query);
}
// 查询完成后绘制结果
private void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args) {
// 清除之前的结果
GraphicsLayer graphicsLayer =/doc/499293497.html
yers["MyGraphicsLayer"] as Graph icsLayer;
graphicsLayer.ClearGraphics();
// 获取最新结果
FeatureSet featureSet = args.FeatureSet;
if (featureSet.Features.Count > 0)
{
// 将查询结果作为Graphic添加到地图上
foreach (Graphic resultFeature in featureSet.Features)
{
resultFeature.Symbol = ResultsFillSymbol;
graphicsLayer.Graphics.Add(resultFeature);
}
}
else
{
MessageBox.Show("No features found");
}
}
// 查询失败时提示用户
private void QueryTask_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("查询失败:" + args.Error);
}
6.5 GP地理处理的一般步骤
①初始化地理处理任务初始化GP 任务,首先声明一个Geoprocessor 对象,将GP 服务的REST URL 作为构造函数的参数:Geoprocessor gpTask = new Geoprocessor("http://sampleserver1.arcgisonline.
com/ArcGIS/rest/services/Specialty/ESRI_Currents_World/GPSer
ver/MessageInABo ttle");
②为Geoprocessor 指定输入参数GP 任务的执行方法使用GPParameter 对象列表作为输入。

所有的地理处理参数类(例如:GPFeatureRecordSetLayer,G PDouble,GPRecordSet,GPRasterData,等等)均继承自该类。

上图服务目录所示的MessageInABottle 服务,有两个输入参数—Input_Point,GPFeatureReco rdSetLayer 类型;Days,GPDouble 类型。

③使用同步模式的GP 服务或者使用异步模式的GP 服务
同步模式调用方法:gpTask.ExecuteAsync(parameters);
异步模式调用方法:gpTask.SubmitJobAsync(parameters);
6.6 GP地理处理的服务端ArcT oolbox扩展方法
创建模型
第一部分:创建一个文件夹和工具箱
在ArcCatalog中,创建一个名为GPServerExamp0le的文件夹。

无所谓你创建在什么位置。

我们这里假设,创建的路径在E:\GPServerExample.
在E:\GPServerExample下创建一个名为MyServerT ools新的工具箱,并把label 标示为My Server T ools。

打开ArcMap, 显示ArcToolbox窗口,并添加E:\GPServerExample\MyServerT ools 到ArcToolbox窗口中。

(ArcToolbox将显示工具箱的label“My Server Tools”。

) 第二部分: 建立模型
在My Server T ools内,创建一个新的名位BufferPoints的模型,并设置label为”Buffer Points”。

添加Buffer 工具到模型中。

重命名输出名为”Buffered points”,并设置为模型参数
3.在模型空白处鼠标右击,弹出菜单选择创建一个新的变量,选择数据类型为Feature Set
4.重命名刚创建的变量为“Points to buffer”,并用连接工具把它与buffer工具连接在一起,并设置为模型参数。

5.“Points to buffer”变量需要知道要创建什么样的要素类,并且绘制它们。

你可以通过鼠标右击这个变量,选择属性,来设置这样的信息。

点击数据类型选项,在“Import schema and symbology from”中,指到任意的点要素类或图层。

(这个例子中使用点要素。

实际上,缓冲功能接受任意类型的要素类,所以你可以选择任意类型)。

6.创建一个数据类型为Linear Unit的新变量。

重命名这个变量为“Buffer distance”,并连接到Buffer中的Distance[Value或Field]参数,设置这个变量为参数(Parameter)。

7.右击输出变量“Buffered points”,点管理。

管理输出意思是当ArcGIS Server 运行模型的时候,可以指定输出的位置。

因此建议所有通过Server发布的模型。

相关文档
最新文档