快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰平台游戏b:【ArcGIS API for Silverlight使用教程】5、实现复合多条件空间查询实例



为什么说是复合多前提呢?由于进行空间查询无意偶尔候我们查询的前提会很繁杂,比如要求某一要素的某一属性大年夜于若干,且小于若干,且又不即是若干等等。而在官网给出的例子中并没有关于复合查询的阐明。不过查看API后,你会发明一句很紧张的话:

A where clause for the query. Any legal SQL where clause operating on the fields in the layer is allowed, for example: where=POP2000 > 350000.

也便是说在进行空间查询是Query的Where属性实际上是SQL where查询的字符串,以是这样我们写查询前提是就可以模仿SQL where查询语句的要领。详细可参考如下的澳门新葡亰平台游戏b示例。

一、前台部分

界面设计如下:

前台XAML代码如下:

MainPage.xaml

阐明:

在前台页面还增添了要素的Web在线编辑功能,假如要向来自于ArcSDE数据库,那么还可以同步跟新到后台的数据库。

二、后台代码

后台主如果实现查询,查询时经由过程QueryTask指定查询的图层以及声明查询的义务,QueryTask经由过程ExecuteAsync措施接管Query参数,然后开始查询,经由过程QueryCompleted事故返回查询的结果。

此中Query指定查询的前提和查询相关的参数,下面列出了Query的常用参数列表:

参数列表

参数阐明

Geometry

指定查询的空间过滤器,并可经由过程Query.SpatialRelationship来描述查询的空间关系,有效的几何类型有:MapPoint, Polyline, Polygon, Envelope, or MultiPoint.

OutFields

筛选的字段聚澳门新葡亰平台游戏b拢即要素包孕的属性

ReturnGeometry

返回查询的几何要素,假如返回整个字段,则强制设置了ReturnGeometry为true

Source

假如查询的是动态图层,这设置图层源

SpatialRelationship

描述空间查询被查询的要素与输入的几何要素的空间关系

Text

对应要素办事图层中显示的字段

Where

查询语句,由一条合法的SQL语句表示

下面看一下查询详细实现的要领:

首先声明QueryTask及查询的目标图层

//用于查询的Task

QueryTask queryTask = new QueryTask();//查询的目标图层

FeatureLayer featurelayer;//声明一个Draw,用于绘制查询的区域,进行空间查询

Draw myDraw;

构造函数中赋值和实例化

public MainPage()

{InitializeComponent();

featurelayer = map1.Layers["RiverSourceLayer"] as FeatureLayer;

editorWidget.Loaded += new RoutedEventHandler(editorWidget_Loaded);

queryTask.Url = featurelayer.Url;

queryTask.ExecuteCompleted += new EventHandler(queryTask_ExecuteCompleted);queryTask.Failed += new EventHandler(queryTask_Failed);

myDraw = new Draw(map1);

myDraw.DrawMode = DrawMode.Polygon;myDraw.IsEnabled = false;

myDraw.FillSymbol = new SimpleFillSymbol(){

BorderBrush=new SolidColorBrush(Colors.Black),BorderThickness=3,

Fill=new SolidColorBrush (Colors.Red),};

myDraw.DrawComplete += new EventHandler(myDraw_DrawComplete);FiledsCombox.ItemsSource = AttributeString.GraphicAttributesEnNameString;

}

自定义两个查询措施:

StartQueryBySQL(string sqlString):按SQL 的Where语句进行查询。

private void StartQueryBySQL(string sqlString)

{if (ExpressionTex澳门新葡亰平台游戏btBox.Text == "")

return;Query query = new Query();

query.ReturnGeometry = true;query.OutFields.AddRange(AttributeString.GraphicAttributesEnNameString);

query.Where = sqlString;query.OutSpatialReference = map1.SpatialReference;

queryTask.ExecuteAsync(query);}

StartQueryBySpatial(ESRI.ArcGIS.Client.Geometry.Geometry geometry):按绘制的空间图形进行查询

priva澳门新葡亰平台游戏bte void StartQueryBySpatial(ESRI.ArcGIS.Client.Geometry.Geometry geometry)

{Query query = new Query();

query.ReturnGeometry = true;query.OutFields.AddRange(AttributeString.GraphicAttributesEnNameString);

query.Geometry = geometry;query.OutSpatialReference = map1.SpatialReference;

queryTask.ExecuteAsync(query);}

接下来便是点击不合的按钮进行查询了,并对查询的结果进行处置惩罚,例如在舆图上显示查询的结果。

注:本文因为查询的是点要素,以是在查询的Completed事故完成函数中只对点进行了Symbol显示操作,假如查询的结果是面要素还需对面进行处置惩罚,读者可自行添加。

下面是查询完成对结果处置惩罚的代码:

private void queryTask_ExecuteCompleted(object sender, QueryEventArgs e)

{GraphicsLayer graphicsLayer = map1.Layers["QueryResultLayer"] as GraphicsLayer;

graphicsLayer.ClearGraphics();

if (e.FeatureSet.Features.Count > 0){

foreach (Graphic resultFeature in e.FeatureSet.Features){

resultFeature.Symbol = new SimpleMarkerSymbol(){

Color=new SolidColorBrush(Colors.Red),Size=18,

Style=SimpleMarkerSymbol.SimpleMarkerStyle.Circle,};

graphicsLayer.Graphics.Add(resultFeature);}

}else

{MessageBox.Show("没有查询到目标要素!");

}}

空间查询时在Draw的Competed事故中提交空间查询哀求:

private void myDraw_DrawComplete(object sender, DrawEventArgs e)

{StartQueryBySpatial(e.Geometry);

myDraw.IsEnabled = false;

}

其他部分的代码便是对查询的输入进行的一下节制,以及对法度榜样Bug的一些处置惩罚(当然依旧还有些bug没有修复,不过不影响查询的整体功能,读者可以自己再改动完善)。

着末的效果示意图(结果用血色的点表示,点击要素可查看其属性列表):

1.Where查询:

a、查询前提一:Source_ID > 1 and Source_ID1 and Source_Emissions isnotnulland Source_Emissions 数据应用阐明:压缩文件中的的数据为ArcMap导出的XML文件,应用时,在ArcMap中新建一个地舆数据库,然后右键导入,选择该xml文件,即可生资源例的数据。建议将该数据的办事宣布成要素办事,这样支持Web在线编辑。

转自:http://www.cnblogs.com/potential/archive/澳门新葡亰平台游戏b2013/01/31/2882244.html

您可能还会对下面的文章感兴趣: