• 周二. 10 月 8th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

arcgis api之任务

admin

11 月 28, 2021

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
);
}

发表回复