樱木 原文 AE中地图查询方式

地图查询主要有两种查询:空间查询和属性查询

所用到知识点:

1  Cursor(游标)对象

本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者要素对象(Feature)的桥梁而已。

游标有三种类型,即查询游标、插入游标和更新游标。每一种游标都是通过与之相适应的方法来获得的,如Search、Insert和Update方法。更新和插入游标都需要使用一个过滤器(Filter)对象,因为它们首先必须获得需要进行操作的要素。

FeatureCursor是Cursor的一个子类,指向一个或多个要素,它实现了IFeatureCursor接口,ArcGIS Engine开发所对矢量图层实现查询功能都是实行IFeatureCursor;

其实凡是Search方法,如ILayer::Search、ITable::Search等都可以返回一个游标对象。这个Cursor指向了那些符合选择条件的要素

IFeatureCursor接口重要成员:

NextFeature(方法,将游标向前跳到下一个位置,并且返回该位置的Feature)

UpdateFeature(Feature)
(方法,对当前游标位置的Feature进行更新)

InsertFeature(buffer)
(方法,用参数传进来的属性值插入一个新的要素到数据库中,返回该插入新的Feature的ID值,其中参数类型为IFeatureBuffer)

2
 QueryFilter和SpatialFilter对象

ArcGIS
Engine提供了QueryFilter和SpatialFilter两个过滤器对象来配合完成查询条件的设置,从而查询到想要的数据。
QueryFilter过滤器主要用于对属性数据查询条件的设置,它主要实现IQueryFilter接口从而实现属性查询功能。

IQueryFilter接口成员:

WhereClause(读写属性,为过滤器设置条件语句)

注意!各种不同的数据,设置条件查询语句的语法是不相同的,如一个shp文件在设置字段的时候要加“””双引号,而在SDE数据连接中,则什么都不加;在gdb文件的语句中,符号是“*”,而在SDE或者shp文件查询中则是“%”

SubFields(读写,为过滤器设置提供赛选的字段,用逗号来分隔每一个逗号,如果不设置该属性,则当做所有字段均为查找字段)

SpatialFilter过滤器主要用于空间范围查询条件的设置,它主要实现ISpatialFilter(继承
IQueryFilter接口)接口从而实现空间查询功能。

其中SpatialRel属性是一个确定查询几何对象与目标要素几何对象关系的枚举值。

3
要素选择集(FeatureSelection)对象

获得符合某种条件的数据,一般有两种不同的手段:

一种使用Search方法,它返回一个指向数据的查询Cursor对象:

IFeatureCursor pFeatCursor =
pFeatureLayer.Search(pFilter,false);
  IFeature
pFeature=pFeatCursor.NextFeature();

另一种是使用SelectFeatures方法构造一个选择集(SelectionSet),然后在选择集中得到Cursor,后者麻烦了点,但是得到的要素选择集在Map上会高亮度显示。

IFeatureSelection pFSelection=pFeatureLayer as
IFeatureSelection;
      
pFSelection.SelectFeatures(pSpatialFilter,esriSelectionResultEnum.esriSelectionResultNew,false);

ISelectionSet
pSelectionset=pFSelection.SelectionSet;
      
ICursor pCursor;
    
  pSelectionset.Search(null,true,out
pCursor);
      
IFeatureCursor pFeatCursor=pCursor as IFeatureCursor;
     
 IFeature pFeature=pFeatCursor.NextFeature();

IFeatureSelection接口重要成员:

SelectFeatures (Filter, Method, justOne )
(方法,根据指定的标准过滤器filter和方法,选择要素,第一个参数为QueryFilter类型的变量,第二个参数为esriSelectionResultEnum类型的变量,第三个参数为布尔型变量,通常为false)

当然还有设置颜色的SelectionColor属性等;

4 SelectionSet对象

支持ISelectionSet接口,用于管理和查询一个选择集。

Search(IQueryFilter,bool,ref
ICursor)用于在选择集内进行再选择,

 

AE中地图查询方式的更多相关文章

  1. AE中Identify查询工具的实现

    原文 AE中Identify查询工具的实现 主要实现点击查询并闪烁显示,并把查询要素的信息通过DataGridView显示出来,主要用到的接口: IIdentity.IArray.IIdentifyO ...

  2. arcgis api for js入门开发系列四地图查询(含源代码)

    备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能, ...

  3. arcgis api 3.x for js 入门开发系列四地图查询(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  4. 转:arcgis api for js入门开发系列四地图查询

    原文地址:arcgis api for js入门开发系列四地图查询 arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTas ...

  5. arcgis api for js 地图查询

      arcgis api for js入门开发系列四地图查询(含源代码) 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效 ...

  6. AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)

    手上的电脑已经用了将近三年了,想入手一台Surface Pro,所以计划着把电脑上的资料整理下,部分资料打算发到博客上来,资料有同事.也有自己的.也有来自网络的,来源途径太多,也没法详细注明,请见谅! ...

  7. AE地图查询

    原文 AE地图查询 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1  Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者要素对象(F ...

  8. hibernate(七) hibernate中查询方式详解

    序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...

  9. Hibernate学习(七)———— hibernate中查询方式详解

    序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种 ...

随机推荐

  1. div+css制作表格

    html: <div class="table"> <h2 class="table-caption">花名册:</h2> ...

  2. 单元测试Assert类

    Assert类主要的静态成员 1. AreEqual:方法被重载了N多次,主要功能是判断两个值是否相等:如果两个值不相等,则测试失败. 2. AreNotEqual:方法被重载了N多次,主要功能是判断 ...

  3. 文字记录而已!!人民币直充/兑换PayPal美金

    人民币直充/兑换PayPal美金 用PAYPAL国际使用外国货币,没有信用卡是不能冲值的,到淘宝买吧,被骗的几率大一些,弄来弄去,PAYPAL被冻结. 今天朋友介绍使用 中美互动网 让它给自己的PAY ...

  4. caffe 在 windows 下的配置(scripts\build_win.cmd)

    官网配置文档见:GitHub - BVLC/caffe at windows 1. windows 设置 requirements: visual studio 2013/2015 CMake > ...

  5. ES6 数组、对象的扩展

    8. 数组的扩展 扩展运算符(...),将一个数组转为用逗号分隔的参数序列. 复制数组 const a2=[...a1] 合并数组 [...arr1, ...arr2, ...arr3]; arr1. ...

  6. vue 星星评分组件

    显示评分和打分组件,可现实半颗星星效果 效果图: 参数名 类型 说明 score Number 分数 ,默认0,保留一位小数 disabled Boolean 是否只读,默认false,鼠标点击可以打 ...

  7. python基础--数值类型和序列类型

    Python中数值类型:int(整数),float(浮点数),True/False(布尔值,首字母必须大写) int:1    #任意整数 float:2.3   #小数 python赋值: a = ...

  8. 网络博客 VC\图案像处理

    http://blog.csdn.net/lvwx369/article/category/1185452 http://blog.csdn.net/lyy289065406/article/deta ...

  9. [RxJS] Avoid mulit post requests by using shareReplay()

    With the shareReplay operator in place, we would no longer fall into the situation where we have acc ...

  10. eclipse 使用jetty调试时,加依赖工程的源码调试方法

    [1] 添加source eclipse-->debug as-->debug configurations-->source [2]若source不起作用 重新编译一下,mvn c ...