2010-07-05

Обновление (перезапуск) сервиса ArcGIS Server REST

В погоне за оптимизацией ESRI придумала кэш сервиса REST. Обратная сторона увеличения производительности – при создании/изменении картографических сервисов через штуковину ArcGIS Server Manager информация для использующих REST приложений не обновляется.

На помощь придет админская панель ArcGIS Server REST:

http://<host>/<root>/admin

При стандартном имени сервера ArcGIS, ссылки примут вид:

Java Server: http://<host>:8399/arcgis/rest/admin
.NET Server: http://<host>/arcgis/rest/admin

После перехода (требуется логин и пароль, который равен таковым для ArcGIS Server Manager) нажимайте ссылку Clear Cache Options, у вы увидите окошко

Обновление (перезапуск) сервиса ArcGIS Server REST

Теперь нажимайте Clear Cache Now. Кэш очестен, информация о сервисах обновлена.

2010-05-04

Решаем проблему ArcGIS Server: не работает сервис REST

Я уже неоднократно замечал, что после установки ArcGIS Server не работает сервис REST, необходимый для доступа к картографическим сервисам из сторонних приложений.

При этой ошибке приложения не могут получить доступ к запущенным на ArcGIS Server сервисам, а при попытке обратится к каталогу REST по ссылке типа http://lebedev/ArcGIS/rest/services/ возникает ошибка:

Ошибка сервера в приложении '/ArcGIS/rest'.

Server Host cannot be null.

Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: ESRI.ArcGIS.ADF.Connection.ServerHostNullException: Server Host cannot be null.
Ошибка источника:

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

Трассировка стека:

[ServerHostNullException: Server Host cannot be null.]

ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection.Connect(Boolean throwExceptionOnUnauthorizedAccess) +380

ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection..ctor(String host, Identity identity, Boolean connect) +45

ESRI.ArcGIS.REST.RestAppConfig.CheckSecuritySetting(HttpContext ctx) +108

ESRI.ArcGIS.REST.RestAppConfig..ctor(HttpContext context) +61

ESRI.ArcGIS.REST.RestUtils.GetRestAppConfig(HttpContext context) +79

ESRI.ArcGIS.REST.RestModule.System.Web.IHttpModule.Init(HttpApplication app) +26

System.Web.HttpApplication.InitModulesCommon() +65

System.Web.HttpApplication.InitModules() +43

System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +729

System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +298

System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +107

System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +289

Диагноз: некорректно созданная инстанция ArcGIS Server.

Лечение: Создать новую инстанцию ArcGIS Server.

· Запустите программу c:\Program Files\ArcGIS\DotNet\AddInstance.exe

clip_image002

· Введите параметры для создания новой инстанции сервера (ArcGIS Server Instance Name — имя инстанции, по которому вы будете обращаться к серверу)

· Нажмите кнопку Add. Через 1-3 минуты ожидания новая инстанция будет создана (вы это поймете, когда поле ArcGIS Server Instance Name будет очищено)

· Теперь старую «плохую» инстанцию ArcGIS Server можно удалить. Для этого нажмите кнопку Modify:

clip_image004

· Выберите старую инстанцию и нажмите кнопку Remove Instance.

Помните, что имя, по которому вы будете обращаться к серверу, теперь изменилось. Это касается и приложения ArcGIS Server Manager. Если раньше вы обращались к нему по ссылке http://machine/<OldInstance>/Manager/Default.aspx, то теперь — по ссылке /Manager/Default.aspx">http://machine/<NewInstance>/Manager/Default.aspx.

2009-02-17

Разработка ГИС-приложений для ArcGIS Server [8 Разработка на ArcGIS API for Microsoft Silverlight]

В настоящее время (на 17 февраля 2009 г.) программный интерфейс ArcGIS API for Microsoft Silverlight находится в стадии разработки (бета-релиз обещают к 2009 ESRI Developer Summit, 23 марта). На данный момент доступна видеодемонстрация некоторых возможностей ArcGIS API for Microsoft Silverlight.

Программный интерфейс предназначен для создания кросплатформенных ГИС-клиентов, интегрирующих данные сервисов ArcGIS Server и Microsoft Virtual Earth в картографических RIA-приложениях. Таким образом, ArcGIS API for Microsoft Silverlight является неким «комбайном» ArcGIS JavaScript Ext. for Microsoft Virtual Earth и ArcGIS API for Flex, реализованном на платформе .NET.

Предоставляет разработчику широкие возможности визуализации, картографирования, геокодирования и геообработки на основе Microsoft Silverlight API.

clip_image002

Демонстрационное ГИС-приложение на ArcGIS API for Microsoft Silverlight (скриншот с сайта ESRI)

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-02-18.

Разработка ГИС-приложений для ArcGIS Server [7 Разработка на ArcGIS API for Flex]

Программный интерфейс ArcGIS API for Flex позволяет создавать картографические насыщенные Интернет-приложения (Rich Internet applications, RIA) с использованием технологии Adobe Flex. Традиционно приложения Flex отличаются красотой и удобством пользовательского интерфейса и насыщены медиа-контентом.

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

Брошюра ESRI для разработчиков ArcGIS API for Flex.

7.1   Описание ArcGIS API for Flex

Программный интерфейс ArcGIS API for Flex предоставляет разработчикам возможность включения во Flex-приложения ГИС-контента, предоставляемого сервисами ArcGIS Server.

API интегрируется со средой разработки Adobe Flex Builder 3 и сохраняет для разработчика все ее преимущества для разработки картографических приложений. Однако также возможно обойтись и обычным текстовым редактором.

Приложения на ArcGIS API for Flex выполняются стандартными компонентами Flash Player 9 (в окне браузера) или Adobe AIR (как standalone-приложение).

Для использования ArcGIS API for Flex необходимо скачать библиотеки (архив также включает множество примеров).

Программный интерфейс ArcGIS API for Flex предоставляет возможности, аналогичные ArcGIS API for JavaScript.

clip_image002

Пример ГИС-приложения на ArcGIS API for Flex (энергетические ресурсы города Boston, Massachusetts, USA)

7.2   Ресурсы разработчика

·         Центр ресурсов по ArcGIS API for Flex: http://resources.esri.com/arcgisserver/apis/flex

§   Обзор технологии, Примеры и демонстрация возможностей, Справочник по классам, Галерея программного кода

·         Блог для разработчиков

clip_image002

Диаграмма классов ArcGIS API for Flex

7.3   Приложение «Hello, World!» на ArcGIS API for Flex

Для разработки картографического приложения на ArcGIS API for Flex необходимо иметь:

·         Библиотеки ArcGIS API for Flex

·         Adobe Flex SDK или Adobe Flex Builder 3

Для создания простого картографического приложения в среде Adobe Flex Builder достаточно следовать Флэш-презентации.

Код простого картографического Flex-приложения:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application

    xmlns:mx="http://www.adobe.com/2006/mxml"

    xmlns:esri="http://www.esri.com/2008/ags"

    pageTitle="Example #1">

    <esri:Map>

       <esri:ArcGISTiledMapServiceLayer          url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" />

    </esri:Map>

</mx:Application>

clip_image004

Результат компиляции: простое картографическое приложение

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-02-18.

2009-02-15

Разработка ГИС-приложений для ArcGIS Server [6 Разработка на ArcGIS JavaScript Ext. for Microsoft Virtual Earth]

Программный интерфейс предназначен для создания ГИС-клиентов, интегрирующих данные сервисов ArcGIS Server и Microsoft Virtual Earth.

Программный интерфейс расширяет Microsoft Virtual Earth API™, позволяя отображать данные ArcGIS Server поверх карт Microsoft Virtual Earth.

Предоставляет разработчику широкие возможности визуализации, картографирования, геокодирования и геообработки на основе Microsoft Virtual Earth API.

6.1   Описание ArcGIS JavaScript Ext. for Microsoft Virtual Earth

ArcGIS JavaScript Ext. for Microsoft Virtual Earth — это технология, предоставляющая доступ к объекту карты Microsoft Virtual Earth с возможностью доступа к сервисам ArcGIS Server. При использовании этой технологии разработчику доступна как функциональность Microsoft Virtual Earth API, так и выполнение задач ArcGIS Server.

Программный интерфейс позволяет:

·         отображать данные, атрибутику и символику сервисов ArcGIS Server поверх карт Microsoft Virtual Earth

·         выполнять поиск и идентификацию объектов сервисов ArcGIS Server

·         производить выборку по запросам

·         выполнять геокодирование через сервисы ArcGIS Server

·         выполнять анализ данных при помощи геообработки и отображать результаты на картах Microsoft Virtual Earth

·         выполнять сетевой анализ (Network extension для ArcGIS Server)

clip_image002

Пример приложения, выполняющего отображение адреса указанного пользователем месторасположения (обратное геокодирование)

clip_image002

Получение информации о сервисе ArcGIS Server (через интерфейс REST)

Разработчикам, уже знакомым с Microsoft Virtual Earth API, создание картографических приложений на ArcGIS JavaScript Ext. for Microsoft Virtual Earth сложностей не составит.

Библиотеки ArcGIS JavaScript Ext. for Microsoft Virtual Earth также бесплатны для использования, однако они всегда хранятся на сервере ESRI.

6.2   Ресурсы разработчика

·         Центр ресурсов по ArcGIS JavaScript Ext. for Microsoft Virtual Earth: http://resources.esri.com/arcgisserver/apis/javascript/ve/index.cfm?fa=home

§   Общее описание и примеры, Справочник по классам, Интерактивный учебник

·         Руководство Microsoft Virtual Earth API

clip_image004

Один из примеров интерактивного учебника: расчет периметра и площади нарисованного полигона

6.3   Приложение «Hello, World!» на ArcGIS JavaScript Ext. for Microsoft Virtual Earth

Преимуществом в разработке картографического приложения на ArcGIS JavaScript Ext. for Microsoft Virtual Earth являются знания Microsoft Virtual Earth API. Однако, приложение «Hello, World!» будет понятно и без таковых.

Создайте пустой html-документ vemap.html на диске и вставьте в него код приложения:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>Приложение «Hello, World!» на ArcGIS JavaScript Ext. for Microsoft Virtual Earth</title>

    <script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2" type="text/javascript"></script>

    <script src="http://serverapi.arcgisonline.com/jsapi/ve/?v=1.2" type="text/javascript"></script>

 

    <script language="javascript" type="text/javascript" >

        var map = null;

        function OnPageLoad() {

            var centerat = new VELatLong(45.50634690108341, -122.67883300781251);

            map = new VEMap('mymap');

            map.LoadMap(centerat, 12, VEMapStyle.Aerial, false);

                  AddAGSMap();

        }

 

        var agisve_services = null;

        var tileUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Portland/ESRI_LandBase_WebMercator/MapServer";

 

        function AddAGSMap() {

            agisve_services = new ESRI.ArcGIS.VE.ArcGISLayerFactory();

            agisve_services.CreateLayer(tileUrl, "Parcels", GetMap);  

        }

 

        function GetMap(tileSourceSpec, resourceInfo) {

            tileSourceSpec.MinZoom = 10;

            tileSourceSpec.Opacity = 0.5;

            map.AddTileLayer(tileSourceSpec, true);

        }

    </script>

</head>

 

<body onload="OnPageLoad()" >

      <div id='mymap' style="position:relative; width: 750px; height: 500px;"></div>

</body>

</html>

Пояснения к тексту программы:

·         фрагмент кода, подключающий необходимые библиотеки:

<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2" type="text/javascript"></script>

<script src="http://serverapi.arcgisonline.com/jsapi/ve/?v=1.2" type="text/javascript"></script>

Первая строка подключает библиотеки Microsoft Virtual Earth API.

Втораябиблиотеки ArcGIS JavaScript Ext. for Microsoft Virtual Earth.

·         Код Microsoft Virtual Earth API

var centerat = new VELatLong(45.50634690108341, -122.67883300781251);

map = new VEMap('mymap');

map.LoadMap(centerat, 12, VEMapStyle.Aerial, false);

создает объект карты VEMap и устанавливает текущий экстент на Portland, USA.

·         Затем на карту Virtual Earth добавляется сервис ArcGIS Server (функция AddAGSMap()):

function AddAGSMap() {

      agisve_services = new ESRI.ArcGIS.VE.ArcGISLayerFactory();

      agisve_services.CreateLayer(tileUrl, "Parcels", GetMap);  

}

 

function GetMap(tileSourceSpec, resourceInfo) {

      tileSourceSpec.MinZoom = 10;

      tileSourceSpec.Opacity = 0.5;

      map.AddTileLayer(tileSourceSpec, true);

}

Устанавливается степень прозрачности слоя 0.5 и указывается функция, выполняющая добавление слоя на карту после его загрузки, GetMap.

·         В теле HTML-документа следует поместить контейнер для объекта карты:

<body onload="OnPageLoad()" >

       <div id='mymap' style="position:relative; width: 750px; height: 500px;"></div>

</body>

Откройте документ vemap.html в окне веб-браузера.

clip_image002[6]

Результат работы: Простое картографическое приложение, отображающее слой ArcGIS Server поверх карты Microsoft Virtual Earth

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-02-15.

Разработка ГИС-приложений для ArcGIS Server [5 Разработка на ArcGIS JavaScript Ext. for the Google Maps API]

Программный интерфейс предназначен для создания ГИС-клиентов, интегрирующих данные сервисов ArcGIS Server и Google Maps. Программный интерфейс расширяет Google Maps™ API, позволяя отображать данные ArcGIS Server поверх карт Google Maps.

Предоставляет разработчику широкие возможности визуализации, картографирования, геокодирования и геообработки на основе Google Maps API.

5.1   Описание ArcGIS JavaScript Ext. for the Google Maps API

Программный интерфейс ArcGIS JavaScript Ext. for the Google Maps API позволяет выполнять запросы на получение данных сервисов ArcGIS Server и помещать их поверх карт Google Maps, реализуя мэшап-подход. Разработчикам, уже знакомым с Google Maps API, создание картографических приложений на ArcGIS JavaScript Ext. for the Google Maps API сложностей не составит.

При использовании этой технологии разработчику доступна как функциональность Google Maps API, так и выполнение задач ArcGIS Server.

Программный интерфейс позволяет:

·         отображать пространственные данные поверх карт Google Maps

·         запускать ГИС-обработку и отображать результаты на картах Google Maps

·         выполнять поиск объектов и отображать результаты на картах Google Maps

·         выполнять задачи геокодирования, используя сервисы ArcGIS Server, и отображать результаты на картах Google Maps

·         отображать характеристики объектов используя Google Chart API

·         создавать функциональность как Google Mapplet

Библиотеки ArcGIS JavaScript Ext. for the Google Maps API бесплатны для использования, однако они всегда хранятся на сервере ESRI и для работы приложения необходим доступ в интернет с клиентского рабочего места, даже если использует локальный ГИС-сервер (это уже не ограничение, поскольку все равно необходим доступ к серверам Google Maps). Кроме того, необходимо получить Google Maps API key на сайте Google Maps API (в случае, если вы будете выкладывать приложения на веб-сервере).

clip_image002

Выполнение задачи геообработки и отображение результатов на карте Google

5.2   Ресурсы разработчика

·         Центр ресурсов по ArcGIS JavaScript Ext. for the Google Maps API: http://resources.esri.com/arcgisserver/apis/javascript/gmaps/

§   Общее описание и примеры, Справочник по классам, Галерея программного кода

·         Блог для разработчиков

·         Руководство Google Maps API

5.3   Приложение «Hello, World!» на ArcGIS JavaScript Ext. for the Google Maps API

Преимуществом в разработке картографического приложения на ArcGIS JavaScript Ext. for the Google Maps API является знание Google Maps API. Однако, приложение «Hello, World!» будет понятно и без всяких навыков.

Создайте пустой html-документ gmap.html на диске и вставьте в него код приложения:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">

  <head>

    <title>Картографическое приложение на ArcGIS JavaScript Extension for the Google Maps API</title>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

 

    <script src="http://maps.google.com/maps?file=api&v=2&key=abcdefg" type="text/javascript"></script>

    <script src="http://serverapi.arcgisonline.com/jsapi/gmaps/?v=1" type="text/javascript" ></script>

 

    <script type="text/javascript">

    var gmap = null;

 

    function initialize() {

      gmap = new GMap2(document.getElementById("gmap"));

      var centerat = new GLatLng(0, 0);

 

      gmap.addControl(new GLargeMapControl());

      gmap.addControl(new GMapTypeControl());

      gmap.setCenter(centerat, 1);

 

      var dynamicMap = new esri.arcgis.gmaps.DynamicMapServiceLayer ("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer", null, 0.75, dynmapcallback);

    }

 

    function dynmapcallback(mapservicelayer) {

      gmap.addOverlay(mapservicelayer);

    }

    </script>

  </head>

 

  <body onload="initialize();" onunload="GUnload();">

    <div id="gmap" style="width: 500px; height:500px;"></div>

  </body>

</html>

Теперь немного пояснений:

·         фрагмент кода, подключающий необходимые библиотеки:

<script src="http://maps.google.com/maps?file=api&v=2&key=abcdefg" type="text/javascript"></script>

<script src="http://serverapi.arcgisonline.com/jsapi/gmaps/?v=1" type="text/javascript" ></script>

Первая строка подключает библиотеки Google Maps API (если вы собираетесь публиковать приложение на веб-сервере, необходимо выделенный цветом ключ заменить на свой).

Втораябиблиотеки ArcGIS JavaScript Ext. for the Google Maps API.

·         Код

gmap = new GMap2(document.getElementById("gmap"));

var centerat = new GLatLng(0, 0);

gmap.addControl(new GLargeMapControl());

gmap.addControl(new GMapTypeControl());

gmap.setCenter(centerat, 1);

создает объект карты GMap2 и добавляет на него элементы управления (это код Google Maps API).

·         Затем на карту Google добавляется сервис ArcGIS Server:

var dynamicMap = new esri.arcgis.gmaps.DynamicMapServiceLayer

("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer",

null, 0.75, dynmapcallback);

Устанавливается степень прозрачности слоя 0.75 и указывается функция, выполняющая добавление слоя на карту после его загрузки, dynmapcallback.

·         Функция dynmapcallback выполняет добавление слоя на карту в виде оверлея Google Maps:

function dynmapcallback(mapservicelayer) {

  gmap.addOverlay(mapservicelayer);

}

·         В теле HTML-документа следует поместить контейнер для объекта карты:

  <body onload="initialize();" onunload="GUnload();">

    <div id="gmap" style="width: 500px; height:500px;"></div>

  </body>

Откройте документ gmap.html в окне веб-браузера.

clip_image002

Результат работы: Простое картографическое приложение, отображающее демографический слой ArcGIS Server поверх карты Google Maps

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-02-15.