Skip To Content

Руководство пользователя: Публикация сервиса сетевого анализа

Доступно с лицензией Network Analyst.

Уровень сложности: Начальный Требования к данным: Установлено с ПО Путь к данным: <ArcGIS Server installation directory>/help/samples/data/network_analyst/SanFrancisco.gdb Задача: Опубликуйте сервис сетевого анализа на сервере ArcGIS Server и используйте его в веб-приложении.

Сетевой анализ может осуществляться для транспортной сети по Интернету путем размещения сервисов сетевого анализа на сайте ArcGIS Server. Сюда входит писк ближайшего пункта обслуживания, лучшего маршрута для транспортного средства, лучшие маршруты для парка транспортных средств; нахождение пунктов обслуживания с помощью размещения-распределения; вычисление матрицы «источник-назначение» и создание областей обслуживания. В этом руководстве пошагово описывается создание документа карты, который можно использовать для сетевого анализа, и публикация этого документа в качестве сервиса сетевого анализа. Кроме того, здесь содержатся материалы о том, как использовать сервис сетевого анализа в ArcMap и в веб-приложении. Дополнительные сведения о различных типах сетевого анализа и их возможностях см. в разделе справки ArcGIS Типы сетевых анализов.

Действия перед выполнением этого руководства

Если вы только что установили ArcGIS Server, необходимо выполнить ряд подготовительных действий, прежде чем подключиться к серверу и начать публиковать сервисы:

Учебные данные

Данные для этого руководства введены с помощью ArcGIS Server и находятся в <ArcGIS Server installation directory>/help/samples/data/network_analyst.

Или же можно попытаться выполнить приведенные здесь действия, используя собственные данные.

Создание документа карты

Сервис сетевого анализа нуждается в картографическом сервисе, содержащем один или несколько слоев сетевого анализа. Это означает, что документы карты, опубликованный на сервере, должен содержать один или несколько слоев, являющихся слоями сетевого анализа, созданными с помощью инструментов на панели инструментов Network Analyst. Сервисы сетевого анализа поддерживают слои маршрутов, ближайших пунктов обслуживания и анализа областей обслуживания.

Выполните следующие действия для создания одного документа карты, способного выполнить все три типа сетевого анализа:

  1. Запустите ArcMap и откройте новый пустой документ карты.
  2. Щелкните Настройка > Дополнительные модули и отметьте ArcGIS Network Analyst, чтобы включить дополнительный модуль ArcGIS Network Analyst.
  3. Щелкните Настройка > Панели инструментов > Network Analyst, чтобы сделать видимой панель инструментов Network Analyst.
  4. Добавьте в карту набор сетевых данных, который должен присутствовать на карте для создания слоя сетевого анализа; для этого щелкните Добавить данныеДобавить данные на стандартной панели инструментов. Перейдите в набор сетевых данных Streets_ND, расположенный в базе данных SanFrancisco. При запросе на добавление всех классов пространственных объектов из Streets_ND на карту нажмите кнопку Нет.
  5. Добавьте на карту слой сетевого анализа маршрутов, щелкнув раскрывающееся меню Network Analyst на панели инструментов Network Analyst и выбрав пункт Новый маршрут.

    Панель инструментов Network Analyst

    Если слой сетевого анализа создается в ArcMap, то он автоматически привязывается к активному набору сетевых данных. Сеть Сан-Франциско была активна при создании слоя анализа маршрутов, поэтому эти два слоя привязаны друг к другу. Кроме того, слой сетевого анализа содержит в пути ссылку на привязанный к нему набор сетевых данных, поэтому в ArcMap слой набора сетевых данных больше не нужен.

  6. Щелкните правой кнопкой мыши Streets_ND или имя слоя набора сетевых данных и выберите пункт Удалить.

    Хотя карта является пустой, на ней присутствует слой анализа маршрутов, который можно опубликовать в качестве сервиса. При последующем добавлении сервиса сетевого анализа на карту, объекты не будут отображаться до создания результатов. Чтобы предоставить дополнительный контекст при использовании сервиса сетевого анализа, можно также использовать кэшируемый картографический сервис, предоставляемый, к примеру, ArcGIS Online.

  7. Последовательно щелкните Файл > Сохранить как, чтобы сохранить документ карты.

Публикация сервиса сетевого анализа

После создания документа карты со слоем сетевого анализа можно опубликовать его в качестве сервиса сетевого анализа. Вы опубликуете документ карты в качестве сервиса и включите функцию сетевого анализа, создав, таким образом, одноименный сервис сетевого анализа.

Чтобы настроить и опубликовать документ карты на ArcGIS Server с помощью ArcMap выполните следующие действия.

  1. В ArcMap выберите в главном меню Файл > Опубликовать как > Сервис.
  2. В окне Опубликовать как сервис выберите Опубликовать сервис. Щелкните Далее.
  3. В диалоговом окне Опубликовать сервис щелкните Подключиться к ArcGIS ServerДобавить ArcGIS Server для создания нового подключения к серверу.
  4. В окне Добавить ArcGIS Server выберите Опубликовать ГИС-сервисы. Щелкните Далее.
  5. Для URL сервера введите URL сайта ArcGIS Server, к которому вы хотите подключиться, например, http://gisserver.domain.com:6080/arcgis.
  6. В раскрывающемся списке Тип сервера выберите ArcGIS Server.

    Во время публикации создается файл определения сервиса, который затем временно сохраняется на локальном диске. По завершении процесса публикации определение сервиса будет загружено на сервер, а локальный файл удален.

  7. Для этого упражнения примите папку размещения по умолчанию и продолжайте.
  8. Если администратор безопасности включил функции безопасности для сайта, введите Имя пользователя и Пароль. Щелкните Готово.
  9. При необходимости в окне Опубликовать сервис (Publish a Service) введите новое имя сервиса. Имя может содержать только цифры, буквы, подчеркивания и не может быть длиннее 120 символов. Щелкните Далее.
  10. По умолчанию, сервисы публикуются в корневой папке в ArcGIS Server. Сервисы могут размещаться во вложенных папках корневой папки. Выберите папку, в которой требуется опубликовать сервис, или создайте для него новую папку. Нажмите кнопку Продолжить.

    Появится окно Редактор сервиса. Используйте Редактор сервисов для выбора, что именно пользователи могут делать с вашим сервисом сетевого анализа, а также для того, чтобы контролировать, как ваш сервис представляется сервером.

  11. Перейдите на вкладку Возможности.

    По умолчанию включены картография и KML.

  12. Поставьте отметку Сетевой анализ.
  13. На левой панели Редактора сервисов щелкните Сетевой анализ и просмотрите операции и свойства, включенные для сервиса сетевого анализа. В рамках данного руководства можно принять значения по умолчанию и продолжить работу. Однако, чтобы получить дополнительные сведения см. раздел Сервисы сетевого анализа. Дополнительные сведения об оптимальной настройке сервиса сетевого анализа для распространения см. в разделе Настройка и конфигурирование сервисов.
  14. Щелкните АнализироватьАнализировать (Analyze). Документ карты будет проанализирован на возможность публикации его на сервере.
    Подсказка:

    Чтобы расширить область просмотра при настойке сервиса сетевого анализа, нажмите кнопку СвернутьСвернуть (Collapse) в верхней части Редактора сервисов.

  15. Исправьте все ОшибкиОшибка (Error) в окне Подготовка; это необходимо сделать до публикации. При необходимости, можно разрешить предупреждения и информационные сообщения, чтобы улучшить производительность и внешний вид сервиса сетевого анализа. Дополнительные сведения об устранении этих неполадок см. в разделе Анализ ГИС-ресурса.
    Примечание:

    На сайте ArcGIS Server можно зарегистрировать папки, базы данных и ресурсы облачного хранилища, чтобы сервер мог распознавать ваши данные и использовать их. Выполнив следующие действия, все данные, указанные в документе карты, взятые из незарегистрированного источника данных, будут скопированы на сервер во время публикации. Это мера предосторожности, гарантирующая, что сервер может получить доступ ко всем данным, используемым сервисом. Полные инструкции по регистрации источника данных на сайте ArcGIS Server см. Регистрация ваших данных на ArcGIS Server с помощью ArcMap.

  16. После устранения ошибок в документе карты щелкните ОпубликоватьОпубликовать.

    При публикации вашего документа карты на ArcGIS Server будет создан картографический сервис и связанный с ним одноименный сервис сетевого анализа.

Использование сервиса сетевого анализа

Клиенты ArcGIS Server, например – ArcGIS Desktop, а также веб-браузеры способны использовать сервисы сетевого анализа. В ArcMap кнопка Найти маршрут Найти маршрутпозволяет использовать встроенные функции построения маршрутов, которые предусмотрены в сервисе сетевого анализа. В веб-браузерах работа сервисов сетевого анализа реализуется на программном уровне посредством веб-приложений, встроенных в ArcGIS Online, ArcGIS Enterprise и ArcGIS API for JavaScript. Более подробно об этих клиентах можно посмотреть в разделе Сервисы сетевого анализа.

Дополнительные сведения об использовании сервиса сетевого анализа в ArcGIS Desktop или в базовом веб-приложении, созданном с помощью ArcGIS API for JavaScript, можно получить в следующих разделах:

Использование сервисов маршрутизации в ArcMap

Для использования сервиса маршрутизации в ArcMap выполните следующие шаги:

  1. Запустите ArcMap и откройте новый пустой документ карты.
  2. Вы все равно должны иметь подключение издателя к ArcGIS Server, но вам понадобится пользовательское подключение для использования этого сервиса в ArcMap. В окне Каталог разверните узел ГИС-серверы и дважды щелкните ArcGIS for Server, чтобы установить пользовательское подключение. Для пошаговых инструкций по настройке подключения см. Подключиться к ArcGIS Server из ArcGIS Desktop.
  3. В окне Каталога разверните узел ГИС-серверы и дважды щелкните новое подключение к ArcGIS Server, которое заканчивается на "(user)".
  4. Подключившись к серверу, найдите картографический сервис, содержащий сервис сетевого анализа, и перетащите его в таблицу содержания.
  5. Несмотря на присутствие слоя в таблице содержания, карта все еще остается пустой. Чтобы задать контекст для этой карты, добавьте слой базовой карты из ArcGIS Online.
    1. Щелкните стрелку ниспадающего меню рядом с кнопкой Добавить данныеДобавить данные на панели инструментов Стандартные и выберите Добавить базовую карту.
    2. Дважды щелкните базовую карту, например Топографическую карту.
  6. Приблизьте полуостров Сан-Франциско, который располагается на юге карты, так как остановки, которые следует добавить, находятся в пределах набора сетевых данных Сан-Франциско, который используется для создания слоя сетевого анализа. Если вы не используете предоставленную базу данных SanFrancisco, пропустите это действие.
  7. На панели Инструменты, щелкните Найти маршрут.Найти маршрут
  8. В диалоговом окне Найти маршрут перейдите на вкладку Опции.
  9. Щелкните ниспадающий список Сервис маршрутов и выберите Маршрут <слои\[имя сервиса маршрутов]>.
  10. Щелкните вкладку Остановки. Используйте элементы управления и параметры на вкладке Остановки, чтобы предоставить входные данные для сетевого анализа.
  11. Если все готово для нахождения маршрута, щелкните Найти маршрут.

Использование сервиса маршрутов в базовом веб-приложении

Для использования сервиса маршрутизации в веб-приложении выполните следующие шаги:

  1. Перед использованием сервиса сетевого анализа в веб-приложении, необходимо знать соответствующий URL. В окне веб-браузера перейдите в директорию сервисов ArcGIS Server например, в http://gisserver.domain.com:6080/arcgis/rest/services.
  2. В списке сервисов выберите сервис сетевого анализа. Все сервисы сетевого анализа имеют метку (NAServer). Если сервис расположен в папке, выберите его, открыв нужную папку.

    Появляется страница, на которой приведено имя сервиса, его описание и список доступных слоев анализа.

  3. Щелкните Маршрут.

    Открывается страница, на которой приведены свойства слоя маршрутов.

  4. В адресной строке браузера скопируйте URL этой страницы и вставьте его в текстовый редактор.

    Это URL REST задачи маршрутов используемого сервиса сетевого анализа. URL имеет следующий формат: http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/NAServer/Route.

  5. Скопируйте и вставьте следующий код примера в текстовый редактор, например в Блокнот:

    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        
        <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
        <title>Simple Routing</title>
    
        <link rel="stylesheet" href="https://js.arcgis.com/3.16/dijit/themes/claro/claro.css">
        <link rel="stylesheet" href="https://js.arcgis.com/3.16/esri/css/esri.css">
        
        <script src="https://js.arcgis.com/3.16/"></script>
        <script>
          require([
            "esri/urlUtils",
            "esri/map",
            "esri/graphic",            
            "esri/tasks/RouteTask",            
            "esri/tasks/RouteParameters",
    
            "esri/tasks/FeatureSet",            
            "esri/symbols/SimpleMarkerSymbol",
            "esri/symbols/SimpleLineSymbol",          
    
            "esri/Color",
            "dojo/on",
            "dijit/registry",
    
            "dijit/layout/BorderContainer",
            "dijit/layout/ContentPane",
            "dijit/form/HorizontalSlider",
            "dijit/form/HorizontalRuleLabels"
          ], function (
            urlUtils, Map, Graphic, RouteTask, RouteParameters,
            FeatureSet, SimpleMarkerSymbol, SimpleLineSymbol,           
            Color, on, registry
          ) {
            var map, routeTask, routeParams;
            var stopSymbol, routeSymbol, lastStop;
    
           //When referencing a local route task, the proxy rule may be removed or commented out.
    
            urlUtils.addProxyRule({
              urlPrefix: "route.arcgis.com",  
              proxyUrl: "/sproxy/"
            });
            
            map = new Map("map", {
                basemap : "streets",
                center : [-117.195, 34.057],
                zoom : 14
              });
    
            map.on("click", addStop);         
    
            routeTask = new RouteTask("https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World");
    
            //setup the route parameters
            routeParams = new RouteParameters();
            routeParams.stops = new FeatureSet();
            routeParams.outSpatialReference = {
              "wkid" : 102100
            };
    
            routeTask.on("solve-complete", showRoute);
            routeTask.on("error", errorHandler);               
    
            //define the symbology used to display the route
            stopSymbol = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_CROSS).setSize(15);
            stopSymbol.outline.setWidth(4);
            routeSymbol = new SimpleLineSymbol().setColor(new dojo.Color([0, 0, 255, 0.5])).setWidth(5);
    
            //Adds a graphic when the user clicks the map. If 2 or more points exist, route is solved.
            function addStop(evt) {
              var stop = map.graphics.add(new Graphic(evt.mapPoint, stopSymbol));
              routeParams.stops.features.push(stop);
    
              if (routeParams.stops.features.length >= 2) {
                routeTask.solve(routeParams);
                lastStop = routeParams.stops.features.splice(0, 1)[0];
              }
            }
    
            //Adds the solved route to the map as a graphic
            function showRoute(evt) {
              map.graphics.add(evt.result.routeResults[0].route.setSymbol(routeSymbol));
            }
    
            //Displays any error returned by the Route Task
            function errorHandler(err) {
              alert("An error occured\n" + err.message + "\n" + err.details.join("\n"));
    
              routeParams.stops.features.splice(0, 0, lastStop);
              map.graphics.remove(routeParams.stops.features.splice(1, 1)[0]);
            }
    
           });
        </script>
    
      </head>
      <body class="claro">
        <div id="map" style="width:600px; height:400px; border:1px solid #000;"></div>
         <p>Click on the map to add stops to the route. The route from the last stop to the newly added stop is calculated. If a stop is not reachable, it is removed and the last valid point is set as the starting point.</p>
      </body>
    </html>

  6. Найдите параметр routeTask = new RouteTask и замените URL в скобках, чтобы он соответствовал URL REST в задаче маршрутов сетевого анализа.
  7. Сохраните и закройте текстовый документ.
  8. Измените расширение файла документа с исходного расширения на .html. Например, Route.txt измените на Route.html.
  9. Откройте HTML-документ в веб-браузере. Следуйте инструкциям веб-приложения по использованию сервиса сетевого анализа.