使用ArcGIS API for Silverlight 进行复合多条件空间查询

  • 时间:
  • 浏览:2

查询结果:

1.Where查询:

空间查询时在Draw的Competed事件中提交空间查询请求:

界面设计如下:

最后的效果示意图(结果用红色的点表示,点击主次可查看其属性列表):

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

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

          Draw myDraw;

源码及测试数据下载:【下载代码】

原文:

查询结果:

查询出多边形内的主次:

下面看一下查询具体实现的法律法子:

接下来已经 我点击不同的按钮进行查询了,并对查询的结果进行避免,相似在地图上显示查询的结果。

一、前台主次

数据使用说明:压缩文件中的的数据为ArcMap导出的XML文件,使用时,在ArcMap中新建一一个地理数据库,否则 右键导入,确定该xml文件,即可生成本例的数据。建议将该数据的服务发布成主次服务,已经 我支持Web在线编辑。

下面给出删改的代码:Coding-Behind

b、查询条件二:Source_ID > 1 and Source_Emissions is  not  null  and Source_Emissions < 60

二、后台代码

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

a、查询条件一:Source_ID > 1 and Source_ID < 20 and Source_ID ! = 14

MainPage.xaml

其中Query指定查询的条件和查询相关的参数,下面列出了Query的常用参数列表:

 在前台页面还增加了主次的Web在线编辑功能,可能性主次来自于ArcSDE数据库,这麼还可不还可否同步跟新到后台的数据库。

 前台XAML代码如下:

后台主已经 我实现查询,查询时通过QueryTask指定查询的图层以及声明查询的任务,QueryTask通过ExecuteAsync法律法子接收Query参数,否则 刚开始英文英文了了查询,通过QueryCompleted事件返回查询的结果。

(版权所有,转载请标明出处)

说明:

某些主次的代码已经 我对查询的输入进行的一下控制,以及对守护系统进程Bug的某些避免(当然依旧还某些bug这麼修复,不过不影响查询的整体功能,读者可不还可否买车人再修改完善)。

也已经 我说在进行空间查询是Query的Where属性实际上是SQL where查询的字符串,很多已经 我当当我们写查询条件是就可不还可否仿照SQL where查询语录的法律法子。具体可参考如下的示例。

          这半个月帮网上认识的一一个兄弟做了一一个查询的示例,多几个少总结一下,在此和当当我们分享。

输入查询多边形:

自定义一一个查询法律法子:

              myDraw.FillSymbol = new SimpleFillSymbol()

              {                BorderBrush=new SolidColorBrush(Colors.Black),                BorderThickness=3,                Fill=new SolidColorBrush (Colors.Red),               };              myDraw.DrawComplete += new EventHandler<DrawEventArgs>(myDraw_DrawComplete);

在构造函数中赋值和实例化

注:本文可能性查询的是点主次,很多在查询的Completed事件完成函数中只对点进行了Symbol显示操作,可能性查询的结果是面主次还需对面进行避免,读者可自行打上去。

MainPage.cs

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

              myDraw = new Draw(map1);

              myDraw.DrawMode = DrawMode.Polygon;

              myDraw.IsEnabled = false;

为哪几种说是复合多条件呢?可能性进行空间查询有已经 当当我们查询的条件会很复杂化,比如要求某一主次的某一属性大于几个,且小于几个,且又不等于几个等等。而在官网给出的例子中并这麼关于复合查询的说明。不过查看API后,让我发现一句怪怪的要语录:

c.空间查询

A where clause for the query. Any legal SQL where clause operating on the fields in the layer is allowed, for example: where=POP60 0 > 360 000.

下面是查询完成对结果避免的代码: