七、Editing

ArcGIS Server 10提供了:

通过feature service,在Web上编辑Feature layers的geographic data的功能。

通过geometry service,利用EditorWidget控件(ArcGIS Toolkit)实现Web编辑功能。

注意:要实现简单feature编辑,feature service中的features必须来自ArcSDE geodatabase。

在web上实现编辑后,应该周期性地用ArcGIS Desktop确认数据的完整性,虽然Web API能完成一些数据确认,但拓扑学的确认仍不能实现。

实现Editing的前提条件:

(1)Feature service:提供访问Feature的能力,使得地图服务能暴露feature的geometry和symbol属性

(2)Geometry service:帮助完成通用编辑操作,如创建(creating)、切分(cutting)、变形(reshaping)地理特征(geographic feature)。在使用EditorWidget前,必须提供geometry service的url。

(3)custom editing solutions(自定义编辑方案):不采用EditorWidget,而自定义。

Add——画或新增graphics

CancelActive——取消地图上的active命令

ClearSelection——取消选择所有graphics

Cut——用用户自定义line来cut graphics

DeleteSelected——删除selected的graphics。如果graphics与一个可编辑的feature layer相关联,features将会从数据库中删除。

EditVertices——编辑用户点选的graphic的顶点

Move——点击和拖动graphic

Reshape——用用户自定义line来reshape graphics(使用geometry service)

Save——提交并保存对所有feature layer的编辑

Union——合并用户选择的graphics(使用geometry service)

设计editing

虽然API包含了较全面的Editor Widget,但并不完全适用你的具体应用,可尝试通过如下方法设计Web editing应用:

(1)Feature sketching:特征草图,如鸟瞰图,适用于精度要求不高的情况。

(2)Attribute-only editing:仅仅属性编辑,适用于不需要改变几何学特征的情况。

(3)Editing adjacent polygons:编辑邻接多边形,适用于仅需reshape现有的多边形或改变其属性而不会引起裂口(gaps)或叠加(overlaps)。

(4)Citizen Participation,or geo-wiki:适用于不需要关心编辑GIS数据,仅仅需要在地图上放置点feature和进行有限的属性编辑。如市民向政府部门反映情况,要求能在地图上放置点,该点包括包括相片、简短描述等辅助信息。你需要code一些安全检查,以确保他们仅仅能编辑和删除自己的事件,并周期性的清除数据库。

(5)Specialized field work:假定有一些分析家管理街道数据库,仅仅能在街道网络layer新建和删除线feature,那么Template Picker必须能指示出新建了哪种类型的道路(泊油路、铺石转路等),能对属性进行随意的编辑。。。

八、Tasks

task classes提供了如下一些空间分析功能:

(1)Query:属性(attribute)——空间(spatial),双向查询

从一个feature layer中获取features,展示features的geometries或attribute

目的是为了查询它的具体信息

a、简单查询:通过关键字查询,获得结果列表

b、Attribute查询:通过关键字查询,获得结果的详细信息,并在地图上显示

c、Spatial查询:点查询、线查询、拉框查询、任意多边形查询

(2)Find:通过特定属性值,查询其空间定位和结果列表

从一个或多个layer中,通过attribute查找features,展示其geometries或attribute

通过关键字查询,获得结果的列表(显示结果所在层的信息,如层名等,但不显示结果本身的详细信息),并在地图上显示。(目的是为了找到它的位置)。

(3)Identify:相交定位,得到features

在地图上点击,识别并显示点击到的features的详细信息。

(4)Address locator:地址(geocode)——位置(location),双向查询

输入地址,显示地图上的位置;点击地图上的位置,显示地址

(5)Geometry——几何的操作,如计算面积和长度、buffering、projection、simplifying

(6)Goeprocessing——复杂GIS分析(通过Goeprocessing服务发布的Goeprocessing模型)

(7)Route——路径分析

1、Query示例代码

(1)xaml文件:

//添加Symbol命名空间

xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbols;assembly=ESRI.ArcGIS.Client

//创建Symbol

<Grid.Resources>

<esriSymbols:SimpleFillSymbol x:Name="ResultsFillSymbol" Fill="#500000FF" BorderBrush="Blue" BorderThickness="1" />

</Grid.Resources>

//创建GraphicsLayer,显示Query查询结果

<esri:GraphicsLayer ID="MyGraphicsLayer">

<esri:GraphicsLayer.MapTip>

<Grid Background="LightYellow">

<StackPanel>

<TextBlock Text="{Binding [STATE_NAME]}" FontWeight="Bold" />

<StackPanel Orientation="Horizontal">

<TextBlock Text="Population Density (2007): " />

<TextBlock Text="{Binding [POP07_SQMI]}" />

</StackPanel>

</StackPanel>

<Border BorderBrush="Black" BorderThickness="1" />

</Grid>

</esri:GraphicsLayer.MapTip>

</esri:GraphicsLayer>

//Query查询对话框

<Canvas HorizontalAlignment="" VerticalAlignment="" Margin="0,15,7,0" Width="250" >

<Rectangle Fill="#CC5C90B2" Stroke="Gray" RadiusX="10" RadiusY="10" Width="230" Height="55" />

<TextBlock Text="输入query并点执行" Foreground="White" FontSize="10" Margin="10,5,0,0" />

<TextBox x:Name="QueryTextBox" Width="150" Margin="15,22,0,0" Text="POP07_SQMI > 500" />

<Button x:Name="QueryButton" Content="执行" Margin="168,23,0,0" Click="QueryButton_Click" />

</Canvas>

(2)cs文件:

//添加命名空间

using ESRI.ArcGIS.Client.Tasks;

using ESRI.ArcGIS.Client.Symbols;

// 点击执行按钮,执行查询

private void QueryButton_Click(object sender, RoutedEventArgs e)

{

//初始化Query task

QueryTask queryTask = new QueryTask("http://./ArcGIS/rest/services/./MapServer/5");

queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;

queryTask.Failed += QueryTask_Failed;

// 初始化Query及其参数:返回geometry、州名、人口密度

Query query = new Query();

query.ReturnGeometry = true;

query.OutFields.AddRange(new string[] { "STATE_NAME", "POP07_SQMI" });

//query条件

query.Where = QueryTextBox.Text;

//执行query

queryTask.ExecuteAsync(query);

}

//query完成后绘制查询结果

private void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args)

{

//获得graphicsLayer,并清除先前的结果

GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;

graphicsLayer.ClearGraphics();

// Check for new results

FeatureSet featureSet = args.FeatureSet;

if (featureSet.Features.Count > 0)

{

//将结果添加到地图

foreach (Graphic resultFeature in featureSet.Features)

{

resultFeature.Symbol = ResultsFillSymbol;

graphicsLayer.Graphics.Add(resultFeature);

}

}

else

{

MessageBox.Show("No features found");

}

}

// query失败,显示错误原因

private void QueryTask_Failed(object sender, TaskFailedEventArgs args)

{

MessageBox.Show("Query failed: " + args.Error);

}

【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(四)的更多相关文章

  1. ArcGIS API for Silverlight/WPF 2.1学习笔记(一)——精简版

    一.安装 1.Visual Studio: (1)Visual Studio 2010或Visual Web Developer Express 2010 (2)Silverlight 4 Tools ...

  2. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(一)

    源自:http://blog.163.com/zwx_gis/blog/static/32434435201122193611576/ (主页:http://blog.163.com/zwx_gis/ ...

  3. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(二)

      五.Graphics layer 1.新增Graphics layer Graphics layer用于显示用户自定义绘制的点.线.面图形.使用时确保xaml文件中Graphics layer定义 ...

  4. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)

    2.Find示例代码 (1)xaml文件: //添加Symbol命名空间 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbol ...

  5. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(三)

    六.Feature Layer Feature Layer是一种特殊的Graphics layer(继承自Graphics layer),除了像Graphics layer一样包含和显示Graphic ...

  6. 扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注

    原文 http://blog.csdn.net/esricd/article/details/7587136 在ArcGIS API for Silverlight/WPF中原版的TextSymbol ...

  7. ArcGIS API for Silverlight学习笔记

    ArcGIS API for Silverlight学习笔记(一):为什么要用Silverlight API(转) 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都 ...

  8. ArcGIS API for Silverlight开发入门

    你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...

  9. ArcGIS API For Silverlight使用在线地图的多种方法总结

    引自:http://www.cnblogs.com/meimao5211/p/3283969.html ArcGIS API For Silverlight使用在线地图的多种方法总结 本人也正在学习A ...

随机推荐

  1. VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)

    上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...

  2. c++第五天:默认初始化

    1.算数类型.(整型和浮点型) 类型决定了数据所占的比特数以及该如何解释这些比特的内容. 练习2.1... 各种类型在计算机中所占的比特数不同,解释方法不同.有符号要花费一个比特存储符号,最大正值要比 ...

  3. Hadoop MapReduce执行过程实例分析

    1.MapReduce是如何执行任务的?2.Mapper任务是怎样的一个过程?3.Reduce是如何执行任务的?4.键值对是如何编号的?5.实例,如何计算没见最高气温? 分析MapReduce执行过程 ...

  4. Python3 pip出现Fatal error in launcher: Unable to create process using '"'

    Python3 pip出现Fatal error in launcher: Unable to create process using '"' 问题分析: 先python2又安装了pyth ...

  5. 20135234mqy-——信息安全系统设计基础第二周学习总结

    Linux基础 1.Linux命令 command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数 选项(options)或参数(argument ...

  6. python学习笔记比较全

    注:本笔记基于python2.6而编辑,尽量的偏向3.x的语法 Python的特色 1.简单 2.易学 3.免费.开源 4.高层语言: 封装内存管理等 5.可移植性: 程序如果避免使用依赖于系统的特性 ...

  7. RHEL7--linux系统启动流程与故障排除

    一.Linux启动过程 MBR保存着系统的主引导程序(grub 446字节,分区表64字节),启动过程就是把内核加载到内存. 启动的顺序: 1.BIOS: 2.BIOS激活MBR: 3.MBR中的引导 ...

  8. HDU 5876 Sparse Graph(补图中求最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意: 在补图中求s到其余各个点的最短路. 思路:因为这道题目每条边的距离都是1,所以可以直接用bfs来做 ...

  9. HDU 6072 Logical Chain(Kosaraju+bitset)

    http://acm.hdu.edu.cn/showproblem.php?pid=6072 题意: 给你$n*n$的矩阵,每次修改k条边,让你计算其中能相互到达的点对有多少. 思路: 其实就是求强连 ...

  10. Python CSV Reader/Writer 例子--转载

    CSV(comma-separated values) 是跨多种形式导入导出数据的标准格式,比如 MySQL.Excel. 它以纯文本存储数和文本.文件的每一行就代表一条数据,每条记录包含了由逗号分隔 ...