ArcGIS api for js三种查询方法比较

  1. QueryTask 进行空间和属性查询的功能类,可以在某个地图服务的某个子图层进行查询。
    QueryTask执行需要两个先决条件:一个是需要查询的图层URL,一个是进行查询的过滤条件。
    QueryTask以Query为执行参数,空间查询和属性查询的设置都是在Query对象上进行,QueryTask的过滤条件除了属性过滤,还支持空间过滤。 在 ArcGIS 10.1 中 Query对象和StatisticDefinition 对象配合,可以实现对查询结果的统计。
    QueryTask 进行查询的地图服务并不必须加载到 Map 中进行显示,在 QueryTask 执行成功后,可以从其返回结果中获取查询到的空间数据并绘制到 GraphicsLayer 中。
    QueryTask 除了能进行属性查询,同时还可以进行空间查询,在这种情况下,必须传入一个几何对象作为查询的参数,并指定空间查询条件,空间查询所需要的几何对象可以是几何运算之后的结果(缓冲区分析),也可以是通过绘制工具(Draw)绘制的几何对象,还可以是某一查询结果所返回的几何对象等。

      在属性查询的时候,只需要设置Query对象的Where过滤语句,输出字段参数,是否返回几何对象等。
       var whereStr = " name like '%" + queryName + "%'";
    

    query.where = whereStr;
    query.outFields = [“*”];
    query.returnGeometry = true;

    在空间查询的时候,必须设置Query对象的geometry属性和spatialRelationship属性,还有设置空间包含关系。
    query.geometry = geometry;
    query.outFields = [“*”];
    query.outSpatialReference = Map.spatialReference;
    query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_CONTAINS;
    query.returnGeometry = true;

  2. FindTask是在某个地图服务中进行属性查询的功能类,FindTask以FindParameters对象为参数,能查询同一个地图服务的一个或多个图层,并且可以在多个字段中进行查询,FindTask仅仅用于属性信息的查询,在FindTask执行结束后,可以从其返回结果中获取查询的对象来自哪个图层和哪个字段 findParams.returnGeometry = true;
    findParams.layerIds = [0,4,5];
    findParams.searchFields = [“name”];
    findParams.searchText = queryName;

  3. IdentifyTask是在某个地图服务中进行空间查询,IdentifyTask以IdentifyParameters对象作为参数,能查询同一个地图服务的一个或者多个图层,IdentifyTask仅仅用于空间信息查询。

你可能感兴趣的:(ArcGIS,Api,for,JavaScript)