描述

本例展示了如何发送一些输入值到ArcGIS Server上的GIS模型并获得结果反馈给web应用。本例中,模型计算自在地图上单击点起始的驱动时间多边形。 例如,这个分析类型可用于想要知道多少人生活在驾车1,2和3分钟范围内的情况。

这个模型通过ArcGIS Server 地理处理服务提供。查看CalculateDriveTimePolygons服务的服务目录获得模型中可以使用的输入输出。除了默认的信息,模型作者还提供了附加的文档,可以通过单击页面上的"Help URL"访问。

可以创建一个地理处理任务从ArcGIS Server访问自己的模型:

gp = new esri.tasks.Geoprocessor("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Network/ESRI_DriveTime_US/GPServer/CreateDriveTimePolygons");

使用服务目录查出自己的地理处理服务的URL。

当使用一个地理处理任务时,通常配置一组输入参数,然后执行任务。

var params = { "Input_Location":featureSet, "Drive_Times":driveTimes };
gp.execute(params, getDriveTimePolys);

能够选择地包含一个回调函数,当任务执行完成时运行。在本例中回调函数getDriveTimePolys配置结果多边形的符号并将它们加到地图。

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<title>Service Area Task</title>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css">
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5"></script>
<script type="text/javascript">
dojo.require("esri.map");
dojo.require("esri.tasks.gp"); var map,gp;
var driveTimes = "1 2 3";
//初始化地图,gp,和图片参数
function init() {
var startExtent = new esri.geometry.Extent(-95.41, 38.86, -95.1, 39.06, new esri.SpatialReference({wkid:4326}));
map = new esri.Map("mapDiv",{extent :startExtent});
var streeMap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer");
map.addLayer(streeMap); gp = new esri.tasks.Geoprocessor("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Network/ESRI_DriveTime_US/GPServer/CreateDriveTimePolygons"); dojo.connect(map,"onClick",computeServiceArea); } function computeServiceArea(evt) {
//清除所有图层
map.graphics.clear();
//设置点
var pointSymbol = new esri.symbol.SimpleMarkerSymbol();
//设置 线符号,实线,红色
pointSymbol.setOutline = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0,0,255]), 1);
pointSymbol.setSize(10);//设置点的大小
pointSymbol.setColor(new dojo.Color([0,255,0,0.25]));//设置点的颜色 //将点击的点的坐标,样式添加到图层
var graphic = new esri.Graphic(evt.mapPoint,pointSymbol);
map.graphics.add(graphic); //
var features = [];
features.push(graphic);
var featureSet = new esri.tasks.FeatureSet();
featureSet.features = features;
var params = { "Input_Location":featureSet, "Drive_Times":driveTimes};
gp.execute(params,getDriveTimePolys);
} function getDriveTimePolys(results,messages) {
var features = results[0].value.features;
for (var i=0,j=features.length;i<j;i++) {
var feature = features[i];
if(i == 0) {
var polySymbolRed = new esri.symbol.SimpleFillSymbol();
polySymbolRed.setOutline(new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0,0,0,0.5]), 1));
polySymbolRed.setColor(new dojo.Color([255,0,0,0.7]));
feature.setSymbol(polySymbolRed); }else if(i == 1) {
var polySymbolGreen = new esri.symbol.SimpleFillSymbol();
polySymbolGreen.setOutline(new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0,0,0,0.5]), 1));
polySymbolGreen.setColor(new dojo.Color([0,255,0,0.7]));
feature.setSymbol(polySymbolGreen); }else if(i == 2) {
var polySymbolBlue = new esri.symbol.SimpleFillSymbol();
polySymbolBlue.setOutline(new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0,0,0,0.5]), 1));
polySymbolBlue.setColor(new dojo.Color([0,0,255,0.7]));
feature.setSymbol(polySymbolBlue); }
map.graphics.add(feature);
} } dojo.addOnLoad(init);
</script> </head>
<body class="tundra">
<div id="mapDiv" style="width:800px; height:600px; border:1px solid #000;"></div>
Zoom in to a US city and single click the map. A service area GP task will be executed synchronously and on
completion the results will be drawn as graphic features to the map. The drive time polygons are 1, 2,
and 3 minutes.
</body>
</html>

ArcGIS api for javascript——地理处理任务-服务区域任务的更多相关文章

  1. ArcGIS api for javascript——地理编码任务-反向地理编码

    描述 反向地理编码确定地图上给出点的地址.本例展示了如何通过ArcGIS JavaScript API做反向地理编码. 反向地理编码和常规的地理编码请求都使用Locator类和ArcGIS Serve ...

  2. ArcGIS api for javascript——地理处理任务-瓶中信

    描述 如果在海洋中丢下一个瓶子,本例使用颗粒追踪模型显示指定的天数后瓶子在的地方.首先,输入一个追踪瓶子的天数.然后单击按钮并在海洋里的任意地方画一个点来开始模型.几秒以后将看到一条线出现描述瓶子将去 ...

  3. ArcGIS api for javascript——地理编码任务-地理编码地址

    描述 本例允许用户输入一个地址,然后显示匹配的地址的位置.这通常地被称为地理编码.在ArcGIS JavaScript API中,使用Locator类执行地理编码. 定位器构造函数需要ArcGIS S ...

  4. ArcGIS api for javascript——地理处理任务-计算一个可视域

    描述 本例展示了使用一个地理处理计算一个可视域(viewshed) 单击地图上的任意点查看该点5英里内能看见的所有区域.这个模型需要几秒钟来运行并反馈结果. 可视域计算是通过ArcGIS Server ...

  5. ArcGIS api for javascript——用第二个服务的范围设置地图范围

    描述 本例展示了如何设置地图的范围为地图其中一个图层的范围.本例有两个图层:ArcGIS Online上的世界地图图层ArcGISTiledMapServiceLayer和堪萨斯州的要素的图层ArcG ...

  6. ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务

    1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...

  7. ArcGis API for JavaScript学习——加载地图

    ArcGis API for JavaScript开发笔记——加载地图 在这个例子中使用的离线部署的API(请参见 http://note.youdao.com/noteshare?id=f42865 ...

  8. ArcGIS API for JavaScript FeatureLayer服务属性编辑

    首先说一下感想吧,刚入行时感觉深似海,掉到了GIS开发的陨石大坑里了,首先是学了小半年的Flex,用到了ArcGIS API for Flex,接着又是半年的ArcEngine开发,现在终于摸到了一点 ...

  9. [ArcGIS]ArcGIS Server环境搭建,发布服务,以及使用ArcGIS API for JavaScript

    环境搭建 安装Web服务器 IIS 控制面板-程序-程序和功能-启用或关闭Windows功能,勾选以下 安装VisualStudio,选择包括ASP.NET模块 安装ArcGIS服务器 ArcGIS ...

随机推荐

  1. python内置的一些模块

    logging模块: 默认情况下,logging将日志打印到屏幕,日志级别为WARNING:日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO & ...

  2. ActiveMQ学习笔记(12)----ActiveMQ的集群

    1. Queue consumer cluster ActiveMQ支持Consumer对消息的高可靠性的负载均衡消费,如果一个Consumer死掉,该消息会转发到其他的Consumer消费的Queu ...

  3. [备忘]js-xlsx 操作 Excel 插件

    github地址:https://github.com/SheetJS/js-xlsx oss地址:http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js

  4. 版本号比较[versionCompare]

    /*** * 版本号比较 * @param v1 版本号a * @param v2 版本号b * @return -1代表不是合格版本号:0代表一样大.1 代表版本号a大于版本号b.2代表版本号b大于 ...

  5. LRU算法与LRUCache

    关于LRU LRU(Least recently used,最近最少使用)算法是操作系统中一种经典的页面置换算法,当发生缺页中断时,需要将内存的一个或几个页面置换出,LRU指出应该将内存最近最少使用的 ...

  6. json对象与其字符串之间的转换

    在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如: JSON字符串:var str1 = '{ &qu ...

  7. [HAOI2016]找相同字符(SAM+DP)

    感觉很水. 因为SAM上一个点的子树大小代表这个点所表示子串的出现次数. 建出广义后缀自动机之后.在\(parent\)树上跑\(DP\),维护\(size[i][1]\),和\(size[i][0] ...

  8. Object-C,NSArraySortTest,数组排序3种方式

    晚上回来,继续写Object-C的例子,今天不打算写iOS可视化界面的程序,太累了. 刚刚dady又电话过来,老一套,烦死了. 其实,我一直一个观点,无论发生什么事情,不要整天一副不开心的样子. 开开 ...

  9. POJ 3254 Corn Fields 状态压缩DP (C++/Java)

    id=3254">http://poj.org/problem? id=3254 题目大意: 一个农民有n行m列的地方,每一个格子用1代表能够种草地,而0不能够.放牛仅仅能在有草地的. ...

  10. select多选 multiple的使用

    select多选  multiple的使用 <html> <head> <script type="text/javascript"> func ...