ArcGIS API for JavaScript 中的数据类型【vs】GPServer的数据类型
熟悉GPServer的同学肯定知道,GPServer在10.1的ArcMap后需要执行成功一次才能发布。
发布GPServer,可以是ArcMap的工具箱的工具,也可以是自己写的模型。
不管是ArcMap的工具还是自己写的模型,肯定有许多个输入与输出的参数。
ParameterValue的value属性类型(取决于ParameterValue的类型)
这些参数总有类型,那么这些参数对应ArcGIS API for JavaScript 4或者3这两个版本中,分别对应着JavaScript的什么数据类型呢?
还好这方面的资源很多,官方API中就有,其实就是ParameterValue类的Value属性的帮助文档:


推荐使用3.X的表格,因为3.X的表格的GPServer参数类型与ArcGIS for Server上的参数类型名称一模一样。
上表的意思是,如果ParameterValue的类型是“Data Type”中的某一个,那么value属性的类型就是“JavaScript Type”中的某一个。
举例说明
例如,在官方的Viewshed这个Task服务中,有如下的参数:

参数列表:
Input_Observation_Point(GPFeatureRecordSetLayer类型的输入参数)
Viewshed_Distance(GPLinearUnit类型的参数)
Viewshed_Result(GPFeatureRecordSetLayer类型的输出参数)
在前端代码中,就变成了这样:
function computeViewshed(event) {
graphicsLayer.removeAll();
var featureSet = new FeatureSet();
//...featureSet的属性设置代码被我省略
var vsDistance = new LinearUnit();
//...vsDistance的属性设置代码被我省略
var params = {
"Input_Observation_Point": featureSet,
"Viewshed_Distance": vsDistance
};
//两个输入参数就被设置成了FeatureSet类型与LinearUnit类型
//与上表一致
gp.execute(params).then(drawResultData);
}
在drawResultData方法中,获取结果参数的代码如下:
function drawResultData(result) {
//从execute()方法的返回值result(本方法的参数)中获取
//ParameterValue[]的第一个元素的value中的features
var resultFeatures = result.results[0].value.features;
var viewshedGraphics = resultFeatures.map(...);//处理结果
graphicsLayer.addMany(viewshedGraphics);
view.goTo({
target: viewshedGraphics,
tilt: 0
});
}
什么类型的ParameterValue的value属性拥有features属性呢?
没错,当value是AJS中的FeatureSet时,value的features属性才能与之对应。
这又印证了ParameterValue若为GPFeatureRecordSetLayer类型(与GPServer的参数类型一致),则其value的数据类型必为FeatureSet了。
多说一句,ParameterValue类的实例用在哪里?
ParameterValue类没有构造器,也就是说这个类用户不能自己实例化。
这个类的实例是GPTask(Geoprocessor的实例)execute方法的返回值之一:

execute()方法接受一个Object参数对象,返回一个Object结果对象。
其中接受的Object对象就是输入参数;
返回的Object对象如上图,其results属性就是ParameterValue[]类型。
在execute().then(回调函数)的回调函数中,回调函数的参数result就是execute()的返回值——Object对象。
我们可以这样取得results中的ParameterValue:
var paramterValue = result.results[0];
取数组的第一个元素,GPServer中返回的参数有多少个,那么这个返回的Object对象的results属性的数组就有多少个元素,一般简单的GPServer结果参数都只有一个。
ArcGIS API for JavaScript 中的数据类型【vs】GPServer的数据类型的更多相关文章
- 关于ArcGIS API for JavaScript中basemap的总结介绍(一)
实际上basemap这个概念并不只在arcgis中才有,在Python中有一个matplotlib basemap toolkit(https://pypi.python.org/pypi/basem ...
- arcgis api for javascript中使用proxy.jsp
当我们使用arcgis api for javascript 查询arcgis服务时,如果查询的参数很长时,通过get方式提交会查询不到结果,因为get方式提交的参数有长度限制,需要通过代理的方式使用 ...
- ArcGIS API for javascript中搜索框的使用问题
我们在开发中常常需要用搜索框去搜索地图上的某个数据,然后在地图上显示出来.这个时候我们要用到esri.dijit.Search().在设置里面的sources的时候,需要注意一点:必须要使用在线的fe ...
- 本人arcgis api for javascript中常见错误总结
1. 2.对象不支持"replace"属性或方法 解决办法:一般在ie中执行js会报这样的错误,基本问题就是你引用了某个对象中不存在的方法,可能是这个方法本来存在而你写错了,或者调 ...
- ArcGIS API for JavaScript介绍
ArcGIS API for JavaScript中的类是按照模块组织的,主要包含esri.esri/geometry.esri/renderers.esri/symbols.esri/symbols ...
- ArcGIS API for JavaScript:Layer之间那点儿事
先来看一个模型: |–TiledMapServiceLayer | |–ArcGISTiledMapServiceLayer |–DynamicLayer | |–Dyn ...
- arcgis api for JavaScript _跨域请求
arcgis api for JavaScript 中出现跨域请求是常见问题, 通常出现类似如下错误消息类似: XMLHttpRequest cannot load http://10.32.2.7 ...
- ArcGIS API for JavaScript Bookmarks(书签)
说明:本篇博文介绍的是ArcGIS API for JavaScript中的 Bookmarks(书签) ,书签的作用是,把地图放大到一个地方 添加书签,书签名称可以和地图名称一直,单击标签 地图会定 ...
- arcgis api for javascript 学习(四) 地图的基本操作
1.文章讲解的为地图的平移.放大.缩小.前视图.后视图以及全景视图的基本功能操作 2.主要用到的是arcgis api for javascript中Navigation的用法,代码如下: <! ...
随机推荐
- python学习笔记 tuple
1. ()去声明.与list类似,但是其元素不能改变. 2. 需要注意的是1中的不能改变是指()中的元素不能改变,如果其元素是一个list,那么list中的元素是可以改变的,不论是大小还是其他的. 3 ...
- mysql导入导出命令(Linux+Windows)
Linux环境: 壹.首先查看mysql的数据存放路径:ps -ef|grep mysql 贰.进入上述查出的mysql数据存放路径:cd var/lib/mysql (数据存放路径) 叁.导出 ...
- iOS 多线程之线程锁Swift-Demo示例总结
线程锁是什么 在前面的文章中总结过多线程,总结了多线程之后,线程锁也是必须要好好总结的东西,这篇文章构思的时候可能写的东西得许多,只能挤时间一点点的慢慢的总结了,知道了线程之后要了解线程锁就得先了解一 ...
- td-agent 收集日志到kafka的配置
<source> @type tail path /data1/td-agent/wechat-tag*.log tag wechat-tag read_from_head true fo ...
- 浅谈IM(InstantMessaging) 即时通讯/实时传讯
一.IM简要概述 IM InstantMessaging(即时通讯,实时传讯)的缩写是IM,互动百科大致解释是一种可以让使用者在网络上建立某种私人聊天(chatroom)的实时通讯服务. 大部 ...
- JavaScript内置的预定义函数
javascript引擎中有一组可供随时调用的内建函数.这些内建函数包括 parseInt() 将收到的任何输入值转换成整数类型输出,如果转换失败,返回NaN parseFloat() 功能基本与p ...
- NYOJ 119 士兵杀敌(三) RMQ ST
NYOJ 119 士兵杀敌(三) RMQ ST 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=119 思路: ST在线 预处理O(nlog ...
- SQL Server学习之路(五):“增删改查”之“改”
0.目录 1.前言 2.通过SSMS修改数据 3.通过SQL语句修改数据 3.1 修改单列数据 3.2 修改多列数据 1.前言 增删改查都是对数据的操作,其中"改"对应的SQL语句 ...
- 两年JAVA程序员的面试总结
前言 工作两年左右,实习一年左右,正式工作一年左右,其实挺尴尬的,高不成低不就.因此在面试许多公司,找到了目前最适合自己的公司之后.于是做一个关于面试的总结.希望能够给那些依旧在找工作的同学提供帮助. ...
- 【Java入门提高篇】Day6 Java内部类——成员内部类
内部类是什么,简单来说,就是定义在类内部的类(一本正经的说着废话). 一个正经的内部类是长这样的: public class Outer { class Inner{ } } 这是为了演示而写的类,没 ...