Web 应用程序中 Web 工具的使用方法

支持 web 工具的地理处理服务可在自定义 web 应用程序中使用,以为您的 web 应用程序客户端提供地理处理与分析解决方案。 您可使用 ArcGIS API for JavaScript 从头开始构建 web 应用程序。 此外,您可使用 ArcGIS Enterprise 中的 Web AppBuilder 部署可配置的 web 应用程序。

无论您使用哪种方法构建 web 应用程序,基础地理处理服务的通信都会通过 REST 进行并连接到 ArcGIS Server 中的服务端点。

  • 服务端点是一个 URL,通常采用以下格式:http://<server>/arcgis/rest/<ServiceName>
  • 每个服务端点都有描述服务、可执行操作和服务组成资源的信息。 在地理处理环境中,服务资源由一个或多个工具组成。

要了解有关将 web 工具与 ArcGIS REST API 配合使用的详细信息,请参阅地理处理服务

自定义 Web 应用程序中的 Web 工具

通常使用 ArcGIS API for JavaScript 构造自定义 web 应用程序。 虽然您可以构造任何可通过 REST 与服务进行通信的应用程序,但以下讨论主要关注 JavaScript。 如果您已经擅长 JavaScript 和地理处理,您可能希望查看示例与代码片段。 若非如此,本节的其余部分概述了将地理处理添加到 web 应用程序所需的以下过程:

  1. 正在初始化地理处理服务。
  2. 设置输入参数
  3. 运行地理处理服务
  4. 正在获取和处理一个或多个结果

以下 JavaScript 代码取自计算视域示例,其中仅有用于说明运行地理处理工具所需四个步骤的相关片段。 JavaScript 中的示例有助于提供一个完整的示例,而以下内容只会生成一个带有附加代码的工作网页:

// esri.tasks.Geoprocessor is required for using Geoprocessor.
//  Add it along with other dojo.require statements.
dojo.require(esri.tasks.Geoprocessor); 

// Step 1: Initialize the geoprocessing and point to the REST URL
var gpUrl = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/ESRI_Elevation_World/GPServer/Viewshed";
var gp = new Geoprocessor(gpUrl);	

// Set output spatial reference 
gp.outSpatialReference = { wkid: 102100 };

function computeViewshed(event) { 
   graphicsLayer.removeAll();

   // Step 2: Set up input parameters and assign or collect inputs from user
   var point = new Point({ 
        longitude: event.mapPoint.longitude,
        latitude: event.mapPoint.latitude  
   });  

   var inputGraphic = new Graphic({
      geometry: point, 
      symbol: markerSymbol 
   }); 
   graphicsLayer.add(inputGraphic); 

   var inputGraphicContainer = [];
   inputGraphicContainer.push(inputGraphic);
   var featureSet = new FeatureSet();
   featureSet.features = inputGraphicContainer;  

   var vsDistance = new LinearUnit();  
   vsDistance.distance = 5;
   vsDistance.units = "miles";  
   var params = {  
      "Input_Observation_Point": featureSet,
      "Viewshed_Distance": vsDistance  
   };  

   // Step 3: Run the service. In this instance, the service is Synchronous; Execute
   // will be called. An Asynchronous service will use gp.submitJob.
   gp.execute(params).then(drawResultData); 
}  

// Step 4: Render the result. Symbology is assigned and the graphics are added to the map.
function drawResultData(result) { 
   var resultFeatures = result.results[0].value.features;  
   // Assign each resulting graphic a symbol  
   var viewshedGraphics = resultFeatures.map(function(feature) { 
      feature.symbol = fillSymbol;     
      return feature; 
   });       
   // Add the resulting graphics to the graphics layer  
   graphicsLayer.addMany(viewshedGraphics);
}

在上例中,必须加载 Geoprocessor 类,并且服务的 REST URL 将与全局变量一起使用来定义地理处理任务。 下一步是构建特定于运行应用程序的工具的参数。 本示例需要一个点(要素)输入和一个距离(线性单位)。 特定于服务中工具的 REST URL 将定义输入参数。 服务将设置为同步或异步,此设置控制服务是作为提交 GP 作业还是执行 GP 任务完成。 各工具的输出在与输入页面相同的页面有所说明;提供了关于类型和显示方式的相关信息。

Web AppBuilder 中的 Web 工具

要使用带有 Web AppBuilder 的 web 工具,您只需要 web 工具的服务 URL;不需要代码。 此 URL 显示在门户工具项目详细信息页面的 URL 部分中。

要在 Web AppBuilder 中使用 web 工具,请配置地理处理微件。 首先在门户中创建 web 应用程序。 选择样式和地图后,即可添加地理处理微件并对其进行配置

微件配置允许您设置与 web 工具相关的输入和输出选项。 这些定义 web 工具的输入参数和输出参数确定了可通过微件配置使用的选项。 例如,如果已发布 web 工具以接受要素输入,微件配置允许您控制用户可输入的要素类型(方形、圆形、手绘等等)。 相同的前提也适用于输出。 设置为输出要素的 web 工具允许您配置符号系统和 web 应用程序渲染 web 工具输出的方式。 已配置结果地图图层的 web 工具会将结果添加到 web 应用程序并根据初始发布过程中指定的设置进行符号化。

ArcGIS Experience Builder 中的 Web 工具

将 web 工具发布到 ArcGIS Enterprise 11.3 或更高版本时,可以在将 web 工具添加为公共设施服务后使用分析微件。 大多数输入和输出参数都可以在分析微件中使用。

可以配置输入和输出参数行为,例如允许或禁止输入要素参数的草图功能,以及显示或隐藏某些输入和输出。 分析微件中可以存在多个 web 工具,只要将其添加为公共设施服务即可。 有关 Experience Builder 的详细信息,请参阅创建您的首次 Web 体验

Map Viewer 中的 Web 工具

将 web 工具发布到 ArcGIS Enterprise 11.3 或更高版本时,可以从门户打开 Map Viewer 并在分析窗格的工具窗格中浏览自定义工具。 要在 Map Viewer 中运行 web 工具,必须满足许可要求。 有关 Map Viewer 中 web 工具的详细信息,请参阅使用自定义 Web 工具