Сервис геообработки можно использовать в пользовательском веб-приложении, предоставляя пользователям веб-приложения решения для геообработки и анализа. Создание веб-приложения обычно рассматривается как задача разработчика (или программиста). Веб-приложение может быть построено с нуля при помощи JavaScript API. Пользователь, не являющийся разработчиком, может развернуть настраиваемое веб-приложение с помощью Web AppBuilder в ArcGIS Enterprise.
Независимо от метода, который вы используете для создания веб-приложения, коммуникация базового сервиса геообработки происходит через REST, и выполняется подключение к конечной точке сервиса на ArcGIS Server.
- Точка доступа сервиса – это URL, обычно следующего формата: http://<server>/arcgis/rest/<ServiceName>.
- Каждая конечная точка сервиса содержит информацию, описывающую сервис, операции, которые могут быть выполнены, и ресурсы, входящие в состав сервиса. В контексте геообработки один или несколько инструментов составляют ресурсы сервиса.
Подробные сведения по использованию веб-инструментов с ArcGIS REST API см. в разделе Сервисы геообработки.
Использование сервисов геообработки с пользовательскими веб-приложениями
Обычно пользовательское веб-приложение строится при использовании ArcGIS API for JavaScript. Несмотря на то что вы можете построить любое приложение, которое может общаться с сервисом над REST, дальнейшее описание фокусируется на JavaScript. Если вы уже знакомы с JavaScript и геообработкой, просмотрите примеры и фрагменты кодов. Если нет, в оставшейся части этого раздела описывают следующий процесс для добавления геообработки в веб-приложение:
- Инициализация сервиса геообработки
- Установка входных параметров
- Запуск сервиса геообработки
- Получение и обработка результата или результатов
Следующий код 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, специальное для инструмента в сервисе, будет определять входные параметры. Сервис будет настроен как синхронный или асинхронный, и эта настройка управляет тем, будет ли выполнение осуществляться как submit GP job или execute GP task. Выходные данные для каждого инструмента определяются на той же странице выходных параметров и включают информацию о типе и о способе их отображения.
Использование сервисов геообработки в Web AppBuilder
Для использования Web AppBuilder вам не нужно писать код; вам нужно только знать конечную точку сервиса (URL REST) вашего сервиса геообработки. Сервис геообработки используется в веб-приложении, созданном посредством Web AppBuilder путем настройки виджета геообработки. Сначала вам необходимо создать веб-приложение на портале. После выбора стиля и карты можно добавить новый виджет геообработки и настроить его. Конфигурация виджета позволяет задать входные и выходные параметры, относящиеся к заданному сервису. Эти входные и выходные параметры, которые определяют сервис, указывают, какие опции доступны в конфигурации виджета. Например, конфигурация виджета позволяет управлять типом объекта (квадрат, круг, от руки и т. д.), который пользователь может ввести, если сервис геообработки был опубликован с возможностью ввода объекта. То же самое применяется и для выходных данных. Сервис геообработки, настроенный на получение выходных объектов, позволяет настроить их символы и то, как веб-приложение должно отображать выходные данные сервиса геообработки. В сервисе, настроенном со слоем результирующей карты, результат будет добавлен к веб-приложению и оформлен символами в соответствии с настройками, выбранными в ходе первоначального процесса публикации.