zoukankan      html  css  js  c++  java
  • arcgis api之任务

    ArcGIS API for JavaScript中执行多种类型的任务。

    所有的任务都是通过esri/tasks资源进行访问的

    以下是一些任务的名称

    ClosestFacilityTask , ConfigurationTask , FindTask , GeometryService ,Geoprocessor , IdentifyTask , ImageServiceldentifyTask , JobTask ,Locator , NotificationTask , 
    PrintTask , QueryTask , ReportTask ,RouteTask , ServiceArea Task , TokenTask , Workflow Task

    Promises

    promise代表-个操作完成的最终返回值的对象

    promise有以下特点:

      -可以为三个状态中的一个: pendingresolvedrejected

      -可以从unfulfilled转变到resolved或者rejected

      -实现了- -then(方法来注册回调函数 someAsyncFunction0.then(callback, errback);

      -回调不能改变promise产生的值

      - promisethen0方法可以返回-一个新的promise,可进行链式操作

     

    查询任务:

    查询参数Query

      Query对象可进行三种类型的查询

      1. 属性查询

          可以通过两个属性设置查询条件  Query.where  Query.Text

            Var query = new Query();

    Query.where = “Name =  45666”; 
    //注:Query.text只能查询服务中的默认字段,而不能查询其他字段。
    Var query = new Query();
    Query.text = “123456”;  

        2.空间查询

          通过Query.geometry + Query.spatialRelationship指定查询条件

          Geometry: Extent , Multipoint , Point , Polygon , Polyline

          spatialRelationship: Intersects, contains, crosses, envelope-intersects, index-intersects, overlaps, touches, within, relation

          例:

          

    Var polygon = new Polygon({
    Rings: rings
    });
    Var query = new Query();
    Query.geometry = polygon;
    Query.spatialRelationship = “”;
    //

    可选参数:QUery.distance Query.unites    查询的距离和参数

        

        3.统计查询

        通过Query.outStatistics定义参数

    例:

    Var sumQuery = {
    onStatisticField:””   //统计字段
    outSattisticFieldName:”” //统计结果字段
    statisticType:”sum”    //统计类型  求和
    };
    
    Var avgQuery = {
    onStatisticField:””   //统计字段
    outSattisticFieldName:”” //统计结果字段
    statisticType:”avg”    //统计类型  求和
    };
    
    Var query = new Query();
    Query.outStatistics = [sumQuery ,avgQuery ]

      查询QueryTask对象

      创建QueryTask对象

     

    Var queryTask = new QueryTask({
    Url:””;
    });

     

      执行查询

      方法名        返回值

     

      execute()       PromisecFeatureSet>

      executeForCount()   Promise<Number>

      executeForExtent()   Promise<Object>

      executeForlds()      Promise<Number[]>

    例:

    QueryTask.execute(query).then(function (results){
    Console.log(results.features);
    },function (error){
    Console.log(error);
    });

    定位任务:

    定位输入:IdentifyParameter对象

    IdentifyParameter对象可以为定位操作设置多个属性
    
    Geometry    // 几何
    Layerlds     //指定查询的图层
    layerOption  //
    tolerance
    returnGeometry

    例:

    Params = new IdentifyParameters();
    Params.geometry = event.mapPoint;
    Params.layerIds = [0,1,2];
    Params.layerOption = “visible”;
    Params.tolerance = 3;
    Params.mapExtent = view.extent;

    定位IdentifyTask对象

    Var identifyTask = new IdentfyTask({
        Url:””;
    })

    定位执行

    Var identifyTask = new IdentfyTask({
        Url:””;
    })

    定位结果 IDentifyResult

    名称      返回值类型

    Feature       Graphic

    Layerld      Number

    layerName              String

    displayFieldName    String

    查找任务FindParameters(查找主要涉及属性的查询)

    FindParameters对象为查找操作指定搜索条件:

    layerlds

    searchFields

    searchText

    returnGeometry

    Contains

    例:

    Var params = new FindParameters();
    Params.layerIds = [0];
    Params.searchFields = [“”];
    Params.searchText = document.getElementById(“inputText”).value;

    查找 FindTask对象

    Var find= new FindTask({
        Url:””;
    })

    查找执行

    Execute()             Promise<Object>

    查找结果

    Find.execute(params)
    .then(showResults)
    .catch(rejectePromise)

    QueryIdentifyFind三者之间的区别

    地理处理任务:

    1arcgis Desktop中建模    ---->   2.发布地理处理服务到ArcGIS Server  ------>3.web应用调用地理处理服务

    对于GP服务的调用需要明确的三件事

    1. 地理处理服务的URL地址
    2. 输入参数和输出参数
    3. 任务是同步的还是异步的

        同步服务:

          任务执行时,使用者必须等待执行的结果;

          使用Geoprocessor.execute()方法提交作业;

          执行结果保存在ParameterValue数组中; 

        异步服务:

          提交作业后,执行结果返回前其他功能还可以继续执行;

          使用Geoprocessor.submitJob()方法提交作业;

    实例化Geoprocessor对象

    Var gp = new Geoprocessor(gpUrl);
    //创建输入参数
    Var params = {
    “Input_Observation_Point”: featureSet,
    “Viewshed_Distance”: vsDistance
    };

    提交请求:

    gp.excute(params).then(drawResultData)
    
    Function drawResultData(result){
    Var resultFeatures = result.results[0].value.features;
    Var viewshedGraphics = resultFeatures.map(function(feature){
    Feature.symbol = fillSymbol;
    Return feature;
    });
    graphicsLayer.addMany(viewshedGraphics
    );
    }
  • 相关阅读:
    git撤销修改
    python参数组合
    java打包jar后,使之一直在linux上运行,不随终端退出而关闭
    输入流加载资源文件的3种方式
    ActiveMQ集群下的消息回流功能
    activemq在一台服务器上启动多个Broker
    JAVA多线程下载
    829. 连续整数求和-leetcode
    mysql笔记-索引
    redis源码学习-skiplist
  • 原文地址:https://www.cnblogs.com/1gaoyu/p/15155164.html
Copyright © 2011-2022 走看看