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的用法,代码如下: <! ...
随机推荐
- 超级有用的Vim命令
你是否曾经烦恼,每次编辑vim文件,想要跳到一行结尾,需要按多次右键,每次想找到某个字符的位置,都得用肉眼去观察,每次想跳到文件结尾,都要按多次向下键.现在,你不必担心这些繁杂的过程,因为我们完全可以 ...
- Less命名空间
Less命名空间 当我们拥有了大量选择器的时候,特别是团队协同开发时,如何保证选择器之间重名问题?如果你是 java 程序员或 C++ 程序员,我猜你肯定会想到命名空间 Namespaces. Les ...
- km算法入门
本文知识均由笔者自学,文章有错误之处请不吝指出. 笔者刷数模题的时候有一道题考到了"二分图最大权分配",需要用到KM算法,但是书上对KM算法的介绍又臭又长,更何况有些同学" ...
- 《RabbitMQ Tutorial》第 1 章 简介
本文来自英文官网,其示例代码采用了 .NET C# 语言. <RabbitMQ Tutorial>第 1 章 简介(Introduction) RabbitMQ is a message ...
- 用swoole和websocket开发简单聊天室
首先,我想说下写代码的一些习惯,第一,任何可配置的参数或变量都要写到一个config文件中.第二,代码中一定要有日志记录和完善的报错并记录报错.言归正传,swoole应该是每个phper必须要了解的, ...
- window下phpstudy的nginx配置虚拟主机
由于很长时间没有配置Apache,虽然说知道怎么配置nginx,但是还是花费了一些时间这次记下来下次直接用 在其他选项文件菜单中->打开配置文件->选择vhosts-conf nginx的 ...
- appium+Linux环境安装配置
背景:想要在Jenkins上跑appium的自动化测试,所以想要在Jenkins服务器(Linux远程)上安装appium服务,故而研究了一下appium+Linux下安装.虽然有无数的前辈踩过坑 ...
- UWP 共享文件——接收者
UWP上共享,分为接收者(别人共享数据给你,你接收了,然后在做你的处理)和发送者(你给别人发送数据,就像你的App支持图片共享到微信好友或者朋友圈那样,虽然UWP上的微信并不支持这样子) 很简单(参考 ...
- Maven快速指南
Maven是Apache基金会提供的项目管理工具, 其采用项目对象模型(Project Object Model, POM)描述项目配置, 并使用生命周期模型管理构建过程中各种操作. POM mave ...
- Centos-6.5 + python3 + mysql5.6 环境搭建
注意:Centos6.5 是刚装好的系统 yum install lrzsz (ftp上传和下载) yum install -y gcc yum install -y gcc gcc-c++ ...