ZuluServer

Добро пожаловать

Благодарим вас за использование наших продуктов!

Данное руководство составлено для ознакомления пользователя со всеми функциями и настройками ZuluServer 2021™. Пользуясь данным руководством, вы можете самостоятельно освоить систему. В конце многих разделов приведены практические примеры, которые полезно проработать для усвоения материала. Помимо этого, на сайте можно ознакомиться с видеоуроками, которые также будут полезны для быстрого и успешного освоения системы (см. https://www.politerm.com/videos/).

Руководство пользователей ZuluGIS 2021: https://www.politerm.com/zuludoc/index.html

Данная версия справочной системы от 28 11 2024


Введение

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


Получение технической поддержки

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

  • «Техническая поддержка»

  • «Обучающие и демонстрационные ресурсы»

  • «Обучение сотрудников»

Техническая поддержка

Для получения технической поддержки вы можете связаться с нашими сотрудниками. Служба поддержки всегда готова помочь вам. Контакты технической поддержки представлены на официальном сайте в разделе Контакты: https://www.politerm.com/contacts/

Также вы можете задать интересующие вас вопросы на официальном форуме: https://www.politerm.com/forums/

[Предупреждение] Предупреждение

Пожалуйста, не забывайте указывать название организации, версию (Справка|О программе) и название используемого программного обеспечения, когда связываетесь с технической поддержкой!

Обучающие и демонстрационные ресурсы

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

  • Видеоуроки по работе с системой: https://www.politerm.com/videos/

  • Статьи и советы: https://www.politerm.com/articles/

  • Различные примеры (макросы, SQL запросы и прочее): https://www.politerm.com/samples/

Обучение сотрудников

Приглашаем специалистов, имеющих профильное образование (в зависимости от выбранного курса), пройти обучение по работе с программными продуктами. Курсы будут полезны как для начинающих пользователей, так и для специалистов, желающих повысить свои навыки владения нашими программами. Занятия проводятся квалифицированными преподавателями по методикам и материалам компании Политерм; кроме того, рассматриваются прикладные задачи на исходных данных пользователей.

Целью курсов является получение минимально необходимых знаний и базовых навыков работы в наших программных продуктах. Сокращается время на изучение системы пользователями и её внедрения в организации. На лекциях слушатели получают информацию о работе с программными продуктами, а при выполнении практических заданий, подготовленных на основе реальных прикладных задач, отрабатывают навыки работы в программе. Кроме того, полученные знания позволяют пользователям общаться на одном языке с консультантами ООО «Политерм» и другими ГИС специалистами.

Более подробно об обучении вы можете узнать на странице Обучение: https://www.politerm.com/articles/tips/study/


Общие сведения о системе

Обозначение и наименование системы

Наименование системы – «ZuluServer 2021».

Обозначение – «ZuluServer 2021».

Языки программирования, на которых написана программа

Программа ZuluServer 2021 написана на языке программирования Visual C++™.

Назначение

ZuluServer – это серверное ПО для ZuluGIS, предоставляющее возможность совместной многопользовательской работы с геоданными в локальной сети и глобальной сети Интернет. ZuluServer может выступать связующим звеном при разработке корпоративной геоинформационной системы.

ZuluServer работает по двум протоколам:

  • Бинарный (zulu://) – TCP/IP протокол для десктопных клиентов ZuluGIS и собственных приложений, разработанных на базе ГИС-компонентов ZuluXTools, который обеспечивает работу со всеми данными в полном объеме. Номер порта по умолчанию: 6473. Используемый порт можно настроить на сервере и клиенте.

  • HTTP (http://) – протокол для мобильных и веб-приложений, работающий на базе веб-служб ZuluServer.

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

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

Ограничения области применения системы

Ограничений в области применения системы нет.

Информационная безопасность в ZuluServer

В разделе содержится информация и рекомендации по безопасному использованию ZuluServer.

Соответствие требованиям

ZuluServer включен в реестр программного обеспечения, созданный в соответствии со статьей 12.1 Федерального закона «Об информации, информационных технологиях и о защите информации», по основному классу 02.06 «Серверное и связующее программное обеспечение» и дополнительному классу 05.06 «Геоинформационные и навигационные средства (GIS)».

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

Безопасность в ZuluServer

ZuluServer предоставляет ряд решений и режим повышенной безопасности, который включает необходимые требования по безопасности:

  1. В режиме повышенной безопасности информация о пользователях (учетные данные и права доступа) хранится в базе данных ZuluServer.cfdb (в отличии от других режимов, когда используются файлы .zusers и Access.cfg). При включении режима повышенной безопасности база ZuluServer.cfdb создаётся автоматически и импортирует текущую информацию о пользователях.

    В ZuluServer.cfdb также хранится такая информация, как признак, время смены пароля, история паролей.

  2. Хранимые пароли шифруются с помощью алгоритма SHA512 (по умолчанию в режиме повышенной безопасности).

  3. Политика сложности пароля: пароль должен быть не менее 8 символов, содержать символы верхнего и нижнего регистра и специальные символы (по умолчанию в режиме повышенной безопасности).

    Вы можете самостоятельно задать минимальную длину пароля.

  4. Позволяет задать срок действия пароля. По умолчанию время действия пароля – 180 дней.

  5. Позволяет настроить историю хранения паролей – вы можете указать, какое количество паролей следует хранить в истории, или отключить хранение истории. Когда пользователь меняет пароль, ZuluServer сравнивает его с использованными ранее паролями из истории и запрещает повторное использование.

  6. Обязательная смена пароля при первом входе - включается опцией Пользователь должен сменить пароль, работает только в режиме повышенной безопасности сервера.

  7. Возможность самостоятельной смены пароля пользователем.

  8. Блокировка системного аккаунта администратора.

  9. Возможность задать максимальное количество неудачных попыток авторизации и время блокировки.

  10. Ведение системного журнала событий Windows и собственного расширенного журнала активности ZuluServer. Подробнее смотрите в разделе Журналирование событий ZuluServer.

[Подсказка] Подсказка

Посмотреть сводку по текущему состоянию и настройкам безопасности вы можете на вкладке Обзор в Администраторе ZuluServer.


Возможности системы

ZuluServer 2021 позволяет:

  • Адресация данных

    Подобно тому как веб-браузер использует URL для доступа к страницам веб-сайта, ZuluGIS 2021 использует свой тип URL (uniform resource location) для адресации к данным на сервере ZuluServer.

    Для доступа к данным на сервере ZuluGIS 2021 пользуется адресом ресурса URL вида:

    zulu://<host>:<port>/<path>/<layer_name>.zl

  • Многопользовательское редактирование

    ZuluServer дает возможность одновременного редактирования одних и тех же графических и табличных данных несколькими пользователями. При этом для каждого пользователя ведется независимый журнал отката.

  • Автоматическое обновление карты

    При изменении данных одним из клиентов сервер мгновенно оповещает всех клиентов, пользующихся этими данными в данный момент, что приводит к автоматическому обновлению данных на карте.

  • Публикация данных

    В пакет установки входит утилита публикации данных для организации доступа к данным ZuluGIS 2021. С её помощью или вручную можно настроить ссылки для сервера ZuluServer 2021, после чего данные становятся доступными в сети. Физический формат данных при этом не меняется.

  • Администрирование данных

    Утилита Администратор ZuluServer предоставляет возможность разграничить доступ к данным и назначить различные правила и права доступа к ним. Можно предоставить как анонимный доступ к данным для широкой публики, так и ограничить его для узкого круга пользователей, определив для каждого из них, какие именно операции с данными ему разрешены.

  • Пространственный фильтр к данным

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

    Если введено такое ограничение, то пользователь сможет отображать слои и оперировать данными только в пределах указанной области.

  • Авторизация Windows

    При соединении с ZuluServer возможно использовать учетные сведения Windows. Реализовано добавление пользователей и групп пользователей ZuluServer из службы каталогов Microsoft Windows – Active Directory.

  • Источники данных (СУБД)

    Чтобы пользователи на своих клиентских местах могли использовать соединения ZuluServer с внешними СУБД, например, когда ZuluServer обращается к MS SQL Server, следует в ZuluServer создать собственные источники данных.

    ZuluServer может передавать логин и пароль, которые он получил от присоединившегося к нему пользователя: эти логин и пароль «перекрывают» учетные сведения, которые могут быть указаны в строке соединения ADO (OLE DB) или псевдониме ODBC. Кроме того, эта опция позволяет избегать указания логина и пароля в строке соединения, в которой они будут присутствовать в незашифрованном виде.

    [Подсказка] Подсказка

    При доменной Windows авторизации пользователей учётные сведения могут использоваться для авторизации на ZuluServer и далее передаваться для авторизации в СУБД. Подробнее об Windows авторизации: «Авторизация Windows».

  • Журнал событий приложений Windows

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

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

  • Журнал событий ZuluServer

    Журнал ZuluServer служит для анализа информации из лог файлов ZuluServer и позволяет выводить различную статистику. Утилита журнала входит в пакет установки.

  • Веб-службы

    Веб-службы устанавливаются и запускаются совместно с ZuluServer. Возможно использование веб-служб по следующим спецификациям:

    • WMS 1.1.1, WMS 1.3.0 (Web Map Service) и WFS 1.0.0 (Web Feature Service), разработанным OGC (Open Geospatial Consortium);

    • WMTS и ZWMTS (Tile-сервера) – WMTS (OpenGIS Web Map Tile Service), ZWMTS (Zulu Web Map Tile Service). Тайловая система может быть размещена на ZuluServer с применением протокола Web Map Tile Service (WMTS), разработанного организацией Open Geospatial Consortium, Inc. (OGC), или по упрощенной схеме ZWMTS (Zulu Web Map Tile Service), разработанной нашими специалистами.

    • ZWS (Zulu Web Service) – эта спецификация разработана специалистами нашей компании. На данный момент она используется в продуктах ZuluGIS Mobile и ZuluGIS Online.

  • Лицензирование

    Лицензирование программных продуктов осуществляется с использованием USB ключа аппаратной защиты HASP. Без доступа к ключу все продукты работают в демонстрационном режиме.

    Лицензия ZuluServer определяет возможное количество одновременных подключений к ZuluServer. Количество подключений варьируется от 2 до 250. Если вам требуется больше подключений, следует связаться с нашими специалистами.

    Для использования веб-служб потребуется наличие отдельной лицензии. Лицензия веб-служб ZuluServer определяет максимальное количество выполняемых запросов за сутки (10000, 25000, 50000, 100000, >100000).


Взаимодействие с другими программами

ZuluServer, ZuluGIS Mobile и ZuluGIS Online могут работать в режиме реального времени с геоданными (одними и теми же слоями).

Пространственные данные открываются с ZuluServer напрямую, что позволяет получать одновременный доступ к актуальным данным в настольном приложении ZuluGIS 2021, мобильном приложении ZuluGIS Mobile и веб-приложении ZuluGIS Online в режиме реального времени. Доступ к данным может осуществляться одновременного несколькими пользователями. Взаимодействие с ZuluServer происходит посредством вызовов внутренних методов API = Команд ZWS.

[Подсказка] Подсказка

ZuluGIS Online включается в пакет установки ZuluServer. Ознакомиться с возможностями ZuluGIS Online можно на нашем демонстрационном сервере (логин: mo пароль: mo).

Спецификации WMS/WFS позволяют предоставлять доступ к геоданным клиентам, поддерживающим данные спецификации, в частности:

  • Google API

  • OpenLayers

  • Leaflet

  • Yandex.Maps

  • MapInfo

  • ArcGIS

  • Google Earth

[Подсказка] Подсказка

Примеры работы веб-служб ZuluServer можно посмотреть на странице https://www.politerm.com/ogc.

Тайловая система может быть размещена на ZuluServer с применением протокола Web Map Tile Service (WMTS), разработанного организацией Open Geospatial Consortium, Inc. (OGC), или по упрощенной схеме ZWMTS (Zulu Web Map Tile Service), разработанной нашими специалистами.

ZWMTS и WMTS являются открытыми спецификациями и предназначены для публикации цифровых карт в сети, используя механизм кэшированных изображений. Слой с описателем тайловой системы, размещенный и опубликованный на ZuluSever, может ссылаться как на данные, расположенные на сервере предприятия (разрабатываемые в ZuluGIS 2021 карты и электронные модели), так и на данные сторонних серверов глобальной сети Интернет. Во втором случае ZuluServer работает как промежуточный сервер, который кэширует данные, полученные из глобальной сети.

Пример подключения тайловых данных ZuluServer для OpenLayers: http://zs.zulugis.ru:6473/OpenLayers-2.8/examples/tileserv.html.


Сведения о технических и программных средствах, обеспечивающих выполнение системы

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

Поддерживаемые операционные системы:

  • Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Vista Service Pack 2, Windows XP Service Pack 3.

  • Windows Server 2008 Service Pack 2, Windows Server 2008R2 SP1, Windows Server 2012, Windows Server 2012R2, Windows Server 2016.

[Предупреждение] Предупреждение

Режим повышенной безопасности предъявляет следующие требования к используемой операционной системе:

  • Windows Server 2012 и выше.

  • Только x64 версии: Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11.

Требования к оборудованию:

  • Процессор: 1.6ГГц и выше.

  • Память: 2 ГБ и выше.

  • Диск: 1,5 Гб свободного места на жестком диске.

  • Видеоадаптер: с поддержкой разрешения 1280 x 1024 и полноцветного режима True Color (видеокарта, совместимая с DirectX 9 и выше).

  • Доступ к локальной сети: 100 Мбит/с для соединения с ZuluServer в локальной сети.

  • Доступ к Интернет: 100 Мбит/с для соединения с ZuluServer через Интернет.


Ограничение использования и лицензия

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

[Предупреждение] Предупреждение

Демонстрационная версия программного обеспечения не может использоваться для решения коммерческих задач. Использование программного обеспечения в коммерческих целях возможно только при получении лицензии.

Лицензирование программных продуктов осуществляется с использованием ключа аппаратной защиты HASP. Без доступа к ключу все продукты работают в демонстрационном режиме.

Лицензия ZuluServer определяет возможное количество одновременных подключений к ZuluServer. Количество подключений варьируется от 2 до 250. Если вам требуется больше подключений, следует связаться с нашими специалистами.

Для использования веб-служб потребуется наличие отдельной лицензии. Лицензия веб-служб ZuluServer определяет максимальное количество выполняемых запросов за сутки (10000, 25000, 50000, 100000, >100000).

Ограничения демонстрационного режима представлены в следующей таблице:

Задача | Ограничение
Число одновременных соединений. | Количество одновременных подключений не более двух.
Редактирование графических данных. | В каждый слой можно ввести не более 150 объектов.
Веб-службы ZuluServer (WMS/WFS/ZWS). | Веб-службы ограничены 250 HTTP-запросами в сутки. Количество HTTP-запросов равномерно распределено в течении суток: при старте ZuluServer в середине дня количество доступных HTTP запросов будет менее 250.

Количество HTTP запросов

Один из способов доступа к опубликованным данным ZuluServer – обращения по HTTP протоколу. Такие продукты, как ZuluGIS Mobile, ZuluGIS Online и собственные ГИС приложения для работы с ZuluServer отправляют HTTP-запросы. По HTTP протоколу к ZuluServer могут обращаться различные ГИС клиенты (MapInfo, Google Earth, ArcGIS), мобильные приложения (ZuluGIS Mobile, Locus и т.д.) и браузерные веб-приложения (с использованием Yandex.Maps API, OpenLayers, Leaflet и т.д.).

[Примечание] Примечание

HTTP-запросы используются при любых способах публикации/спецификациях: ZWS, ZWTS, WMS, WMTS, WFS.

HTTP-запросы подсчитываются веб-службой ZuluServer, а их максимальное количество ограничено лицензией на веб-службы. Демо-лицензия веб-служб ZuluServer позволяет выполнить до 250 HTTP-запросов в сутки, а минимальная базовая лицензия – до 10000 HTTP запросов в сутки. Количество запросов в сутки регламентировано лицензией и может быть 10000, 25000, 50000, 100000, 50000.

[Примечание] Примечание

Вы можете установить лимит на количество HTTP-запросов в сутки персонально любому пользователю ZuluServer. Это можно сделать в Администраторе ZuluServer при создании пользователя или его настройке.

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

Количество и статистика HTTP-команд

Рисунок 1. Количество и статистика HTTP-команд

Бесплатными считаются запросы на предоставление графических данных при построении c последующим перемещением и масштабированием карты; действия, совершаемые пользователями в клиентском программном обеспечении при выделении объектов на карте, построении путей, изменении признаков видимости слоев, тематических раскрасок и надписей не считаются запросами и не подсчитываются.

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

Количество запросов, выполняемых к ZuluServer, связано с количеством пользователей и выполняемыми ими задачами. Статистические данные показывают, что базовой лицензии на 10000 запросов хватает для работы 10-15 мобильных устройств в программе ZuluGIS Mobile (без слоя трекинга) и такого же количества пользователей в браузерной версии программы ZuluGIS Online.


Установка ZuluServer

На страницах мастера располагаются кнопки для управления процессом установки:

  • Кнопка Далее открывает следующую страницу мастера.

  • Кнопка Назад открывает предыдущую страницу.

  • Кнопка Отмена прерывает процесс установки программы.

  1. При запуске мастера открывается его первая страница.

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

    [Примечание] Примечание

    Если на компьютере запущены программы, мешающие установке системы Zulu, после нажатия кнопки Далее отобразится страница мастера со списком программ, мешающих установке. В этом случае закройте указанные программы и нажмите кнопку Далее для перехода к следующей странице установки.

  3. Проверьте, соответствует ли компьютер, на который устанавливается программа, указанным требованиям. Если соответствует, нажмите кнопку Далее для перехода к странице выбора установочной папки программы; в противном случае нажмите кнопку Отмена, приведите компьютер в соответствие с указанными требованиями и повторите установку.

  4. По умолчанию для установки программы предлагается директория Zulu 2021 внутри Program Files (или Program Files (x86) для 64х-битных ОС). Если требуется установить программу в другую папку, введите путь к ней в поле Папка для установки или нажмите кнопку Обзор справа от поля и выберите требуемую папку в стандартном диалоге выбора папки.

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

  5. При установке поверх предыдущих версий программы рекомендуется выполнить резервное копирование заменяемых файлов для возможности последующего отката к предыдущей версии. Для этого выберите пункт Делать резервные копии файлов и помещать их в папку и укажите папку для резервных копий в поле (путь к папке резервирования можно ввести вручную или нажать кнопку Обзор справа от поля и выбрать папку в открывшемся диалоге выбора файлов)

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

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

  6. Вы можете выбрать требуемый вид установки, отметив соответствующий переключатель:

    1. Полная. На диск устанавливаются все компоненты программы.

    2. Выборочно. На следующей странице мастера установки потребуется указать устанавливаемые компоненты программы. Данный вариант установки позволяет уменьшить объем дискового пространства, занимаемого программой, но он подходит только для опытных пользователей, четко понимающих, какие компоненты им в дальнейшем понадобятся для работы.

    После выбора требуемого варианта установки нажмите кнопку Далее. Если была указана выборочная установка, то происходит переход на страницу выбора устанавливаемых компонентов; если же выбрана полная, то этот шаг будет пропущен.

  7. Страница выбора компонентов отображается только в случае выборочной установки. На странице в виде списка перечисляются все компоненты программы. Устанавливаться будут только те компоненты, рядом с которыми установлены флажки (серыми флажками отмечены компоненты, установка которых обязательна). При выборе компонента в списке в области Описание справа от списка отображается описание данного компонента. Под списком отображается информация о требуемом месте для установки выбранных компонентов и общем объеме доступного дискового пространства.

    Снимите флажки у компонентов, которые не надо устанавливать, и нажмите кнопку Далее.

  8. По умолчанию для папки ярлыков программы указано название ZuluGIS. Если такое название вас не устраивает, задайте требуемое название для папки ярлыков в поле Папка для ярлыков или выберите уже существующую папку в списке Существующие папки. Если же создавать ярлыки в меню Пуск не требуется, установите флажок Не создавать ярлыки в Меню 'Пуск'.

    После выбора названия нажмите кнопку Далее для перехода к странице проверки параметров установки.

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

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

  10. В ходе установки на странице отображаются действия, выполняемые мастером, и примерная готовность установки. Также на экране могут появляться различные вспомогательные окна (например, окно установщика драйвера ключа защиты HASP).

    [Предупреждение] Предупреждение

    В некоторых случаях может потребоваться ваше вмешательство в процесс установки. Тогда на экране отобразится диалоговое окно с текстом уведомления. Внимательно прочтите его, выполните предписания и нажмите соответствующую кнопку диалога.

    После завершения установки открывается страница окончания установки.

  11. После завершения установки программы рекомендуется выполнить перезагрузку компьютера. Для того чтобы выполнить перезагрузку при выходе из мастера, выберите пункт Да, перезагрузить компьютер сейчас. Для того чтобы перезагрузить компьютер позже, выберите пункт Нет, я проделаю эту операцию позже.

    Для того чтобы завершить работу мастера, нажмите кнопку Готово, после чего окно мастера будет закрыто, а компьютер, при выборе соответствующего переключателя, будет перезагружен.


Мастер настройки

Программа Мастер настройки ZuluServer (zssetup.exe) предназначена для задания основных параметров работы ZuluServer. Чтобы открыть Мастера настройки, запустите файл zssetup.exe в директории, где установлено приложение ZuluServer.

Основные настройки сервера указываются в мастере по шагам, а при завершении мастера сохраняются в файле конфигурации сервера ZuluServ.cfg.

Окно Мастера настройки ZuluServer

Рисунок 2. Окно Мастера настройки ZuluServer


Шаг 1. Режим безопасности

Окно параметров работы ZuluServer

Рисунок 3. Окно параметров работы ZuluServer

Выберите режим безопасности, в котором будет работать ZuluServer.

Общедоступный режим – режим, в котором ZuluServer совместим с версиями 1.0–8.0. Пользователям будут недоступны только те операции и ресурсы, доступ к которым ограничен администратором. Права доступа к ресурсам определяются по принципу: все, что не запрещено, то разрешено. Сервер допускает анонимный доступ к данным.

Защищенный режим – режим работы подобно традиционным серверам баз данных. Для входа на сервер необходима авторизация. Пользователям будут доступны только те возможности, которые предоставлены администратором.


Шаг 2. Параметры учетных сведений

Окно параметров учетных сведений

Рисунок 4. Окно параметров учетных сведений

Выберите параметры учетных сведений пользователей ZuluServer.

Хранить пароли в зашифрованном виде – определяет, надо ли шифровать пароли пользователей. Список пользователей хранится на сервере в виде текстового файла. Пароли в этом файле могут сохраняться как в простом виде, когда их можно будет прочесть, так и в зашифрованном. Запись в зашифрованном виде надежней с точки зрения безопасности, однако в этом случае исходный пароль нельзя восстановить (например, если он забыт).

[Примечание] Примечание

Соответствует параметру PasswordEncrypt в конфигурационном файле ZuluServ.cfg.

Включить проверку подлинности Windows – позволяет пользователям сервера авторизоваться, используя свои учетные сведения Windows. Чтобы использовать эту возможность, нужно включить соответствующую опцию в параметрах соединения на клиентском месте. Подробнее смотрите раздел: «Авторизация Windows».

[Примечание] Примечание

Соответствует параметру WinAuth в конфигурационном файле ZuluServ.cfg.

Передавать учетные сведения на сервер СУБД – если эта опция включена, то при работе с семантическими данными на ZuluServer, при необходимости соединения с сервером СУБД (таким как Microsoft SQL Server, Oracle и прочими), ZuluServer будет передавать те логин и пароль, которые он получил от присоединившегося к нему пользователя. В противном случае ZuluServer должен будет передавать некие предустановленные учетные сведения (заданные в настройках соединения с СУБД), общие для всех пользователей. Эта опция полезна в том случае, когда разграничение прав доступа на семантические данные делегировано самому серверу СУБД. Подробнее смотрите раздел: «Передача учетных сведений на СУБД»

[Примечание] Примечание

Для включения следует указать параметр dbms-auth-pass: all в конфигурационном файле DataSrc.cfg.


Шаг 3. Область данных

Окно области данных

Рисунок 5. Окно области данных

На этом шаге укажите корневую папку области данных и порт, на котором будет работать ZuluServer.

Папка области данных – здесь задается путь к папке, в которой помещаются опубликованные данные. Можно оставить этот параметр без изменений или указать другую папку. Подробнее смотрите раздел: «Корневой каталог данных сервера».

Порт TCP/IP – порт, на котором работает ZuluServer. Значение по умолчанию – 6473.


Шаг 4. Журнал активности сервера

Окно журнала активности сервера

Рисунок 6. Окно журнала активности сервера

Настройте ведение собственного журнала активности (лога) ZuluServer:

Сохранять журнал активности сервера – если эта опция включена, ZuluServer будет сохранять журнал вызываемых команд в текстовых файлах с расширением .log в папке установки сервера. Журнал разбивается на файлы по суткам и называется в виде ZuluServ_DDMMYYYY.log.

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

Указать папку для файлов журнала – здесь задается папка, где будут сохраняться файлы журнала (по умолчанию они создаются в папке, где установлен ZuluServer). Чтобы выбрать папку на компьютере, можно воспользоваться кнопкой Обзор.

Расширенный протокол редактирования – эта опция указывает на то, что в журнал будет записываться дополнительная информация об актах редактирования слоя. Поставьте флажки на операциях (добавление, удаление, изменение), которые нужно помещать в журнал.

[Предупреждение] Предупреждение

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

Протокол HTTP запросов – если опция включена, в журнал будет помещаться полный текст HTTP запросов, пришедших на сервер.

Протокол HTTP ответов – если опция включена, в журнал будет помещаться все ответы сервера на HTTP запросы.

[Предупреждение] Предупреждение

Данный параметр (Протокол HTTP ответов) следует включать только при необходимости отладки: поиска ошибок и анализа того, что отправляет непосредственно сервер, так как ответы могут весить очень много.


Шаг 5. Сводка

Рисунок 7. Окно сводки

На этом шаге Мастер показывает сводку по собранным сведениям. Проверьте; если все правильно, то нажмите Сохранить. Если нужно исправить какие-то параметры, нажмите кнопку Назад и вернитесь на соответствующий шаг Мастера.


Шаг 6. Завершение

Окно завершения мастера настройки

Рисунок 8. Окно завершения мастера настройки

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

Если ZuluServer был в это время запущен, то для того, чтобы изменения вступили в силу, необходимо его перезапустить, и мастер предложит перезапуск. Для перезапуска ZuluServer нажмите кнопку Перезапустить ZuluServer или сделайте это позже вручную.

Для завершения работы мастера нажмите Готово.


Управление и монитор ZuluServer

При установке ZuluServer на панели задач добавляется индикатор работы сервера ZuluServer. С помощью него можно управлять работой сервера ZuluServer. Если дважды щелкнуть по индикатору ZuluServer, то откроется окно Монитор ZuluServer.

Индикатор сервера | Сервер работает | Сервер остановлен

Монитор ZuluServer

Монитор позволяет контролировать работу ZuluServer, просматривать список событий, происходящих на сервере, запускать и останавливать ZuluServer.

При запуске в окне монитора в первой строке выводится:

  • Время запуска.

  • Версия сборки.

  • Hasp ID – идентификационный номер ключа защиты лицензий HASP.

  • User limit – максимально возможное количество клиентов.

  • Web Services – наличие лицензии на веб-службы.

  • Web Queries – количество доступных HTTP запросов на текущие сутки.

[Примечание] Примечание

Количество пользователей, запросов и наличие лицензий зависит от купленных продуктов.

Далее отображается список команд, выполняемых клиентами на сервере, и информация по каждой команде:

  • Время.

  • Протокол (zulu или http).

  • IP-адрес клиента.

  • Имя пользователя.

  • Идентификатор команды.

  • Код команды (каждой команде соответствует свой код; расшифровка служебных команд, а также другая аналитика, например, длительность команд, доступны в Журнале ZuluServer).

  • Размер команды в байтах.

  • Процент доставленных пакетов.

  • Номер версии клиента.

Рисунок 9. Монитор ZuluServer

В нижней части окна отображается:

  • Статус: Работает или Остановлен.

  • Пользователей – количество подключенных пользователей.

  • Слоев – количество слоев, загруженных пользователями.

  • HTTP запросов – количество HTTP запросов за текущие сутки.

Запуск ZuluServer

Для запуска ZuluServer щелкните правой кнопкой мыши по индикатору сервера и в появившемся меню выберите пункт Запустить

Остановка ZuluServer

Чтобы остановить работу ZuluServer, щелкните правой кнопкой мыши по индикатору сервера и выберите команду Остановить. Служба ZuluServer будет остановлена.

Перезапуск ZuluServer

Если настройки сервера ZuluServer, в том числе файлы конфигурации, были изменены вручную, сервер необходимо перезапустить. Чтобы это сделать, остановите сервер, а потом вновь его запустите или выполните перезапуск за одну операцию, открыв меню правым щелчком мыши по индикатору сервера и выбрав команду Перезапустить.

Автоматический запуск ZuluServer

Можно настроить запуск ZuluServer автоматически при загрузке системы Windows. Для этого откройте окно Монитора ZuluServer (Рисунок 9, «Монитор ZuluServer») и в меню Сервер выберите пункт Автозапуск. Теперь при загрузке операционной системы служба сервера ZuluServer будет автоматически запускаться, и сервер будет готов принимать запросы с клиентских мест. Пункт меню Автозапуск после этого будет отмечаться галочкой.

Для того чтобы отключить автоматический запуск сервера, в меню Сервер повторно выберите пункт Автозапуск.


Файл конфигурации ZuluServer

Для настройки ZuluServer вы можете воспользоваться Мастером настройки или отредактировать файл конфигурации ZuluServ.cfg вручную с помощью текстового редактора. Мастер настройки содержит только базовые настройки.

Файл конфигурации ZuluServer (ZuluServ.cfg) представляет собой текстовый файл и содержит основные настройки сервера. ZuluServ.cfg хранится в директории, где установлено приложение ZuluServer.

Просмотреть сводку по текущему состоянию и настройкам безопасности вы можете на вкладке Обзор в Администраторе ZuluServer.

[Внимание] Внимание

В файле конфигурации ZuluServ.сfg каждая опция должна быть указана с новой строки.

После изменения параметров требуется перезапуск ZuluServer.

Фрагмента файла конфигурации ZuluServ.cfg:

# General Settings
# Номер порта
Port: 6473
# «Сообщения сервера в окне монитора»
monitor: on

# Access Rights
# Файл прав доступа на директорию
RuleFile:   .zsaccess
# Файл списка пользователей
UserFile:   .\.zsusers
# Основной файл прав доступа
AccessConf: .\Access.cfg
# Корневая папка данных
RootDir: .\Data

# «Опрос сетевой лицензии ZuluServer»
NetHasp: on/off
«Опрос сетевой лицензии ZuluNetTools»
WebNetToolsNetHasp: <on/off>
# «Авторизация Windows»
WinAuth: on/off

# Режим безопасности
AccessMode: public/secured/strict
# Шифрование паролей пользователей
PasswordEncrypt: none/gost/sha512
# Минимальная длина пароля (число от 0 до 15)
PasswordLength: 8
# Срок действия пароля - количество дней.
# Значение по умолчанию — 180. Работает только в режиме повышенной безопасности - AccessMode: strict
PasswordExpires: 90
# Глубина истории паролей. Указывается количество хранимых в истории паролей от 0 до 20.
# Если указан 0 — отключает историю паролей. Работает только в режиме повышенной безопасности - AccessMode: strict
PasswordHistory: 20
# Максимальное количество попыток авторизации. Значение по умолчанию 0 — не ограничено.
LoginAttempts: 0
# Время блокировки клиента в минутах. Значение по умолчанию — 10.
LoginAttemptsDelay: 10
# Блокировка системного аккаунта администратора — sa.
LockRootAccount: on/off

# «Ведение собственного журнала событий (лога)»
# Ведение журнала работы .log
LogWrite: on/off
# Время хранения журнала (дней)
LogDays: 90
# Папка для файлов журнала
LogDir: C:\Program Files (x86)\Zulu 8.0\Logs
# Протоколирование в журнале добавляемых, удаляемых, изменяемых объектов
LogEditActions: add delete modify
# Указание даты в логе для каждой команды
LogDateForEachCommand: on/off

# «Ведение журнала веб-служб»
# Запись в лог http запросов
LogWebRequest: on/off
# Запись в лог http ответов (только для отладки)
LogWebResponse: on/off
# Запись в log бинарных данных (фото, документов)
LogWebBinaryResponse: on/off
#Запись в лог отладочной информации (только для отладки)
LogDebug: on/off
# Логирование используемой памяти
LogMemory: on/off

# «Контроль версии клиента»
ClientVersionExpired: 14
# «Отрисовка (перестроение) изображения клиента»
NotifyToRedrawAll: on/off

# «Сжатие данных»
PackMethod: deflate

# «Ограничение соединений»
# Максимальное время бездействия пользователя в минутах
IdleTime: 45
# Максимальное количество соединений с одного IP-адреса
MaxConnPerIp: 5
# Максимальное количество соединений на имя пользователя (на login)
MaxConnPerUser: 3

# «Работа через proxy-сервер»
# Параметр работы через http proxy-сервер
UseProxy: on/off
# IP адрес proxy-сервера
ProxyAddress: 127.0.0.1
# Номер порта proxy-сервера
ProxyPort: 3128
# Данные авторизации proxy
ProxyAuth: login:password

# «Путь к каталогу тайлов»
# Папка хранения кэша тайл серверов (По-умолчанию C:\ProgramData\Zulu)
TilesCacheDir:
# Папка, для хранения нарезанных тайлов
TilesDir:

#Язык по-умолчанию интерфейса веб-приложения ZuluGIS Online
ZuluWebLang: ru/en
#Использовать авторизацию Windows для доступа веб-клиентов
HttpWinAuth: on/off
# Кеширование плиток для ZWS
ZWSCache: on/off
# «Фильтрация опубликованных ZWS слоев»
ZWSLayerListFilter: on/off
# «Пространственный фильтр для ZWS слоев»
ZWSUseRestrictedArea: on/off
# «Запуск гидравлических расчетов в ZuluGIS Online»
WebNetTools: on/off

Номер порта

Номер порта, на котором работает сервер, задается параметром Port.

    Port: <Номер порта>

Если параметр не задан, то значение порта по умолчанию – 6473

Минимальная длина пароля

Вы можете задать требование к минимальной длине пароля. Для этого укажите необходимое значение для параметра PasswordLength. Значение может от 0 до 15.

Если значение больше 0, то пустой пароль использовать нельзя.

 PasswordLength: 8

Работает во всех режимах безопасности.

Срок действия пароля

[Предупреждение] Предупреждение

Работает только в режиме повышенной безопасности.

Чтобы указать срок действия пароля, укажите необходимое значение для параметра PasswordExpires. Указывается количество дней – число больше 0.

Если значение не указано, то по умолчанию в сервере временем действия паролей принимается 180 дней.

 PasswordExpires: 180

Хранить историю паролей

[Предупреждение] Предупреждение

Работает только в режиме повышенной безопасности.

При смене пароля он должен отвечать требованию неповторяемости. Когда пользователь меняет пароль, ZuluServer сравнивает его с использованными ранее из истории паролей и запрещает повторное использование.

Вы можете настроить, какое количество паролей следует хранить в истории, или отключить историю паролей.

Чтобы задать количество хранимых в истории паролей, задайте необходимое значение для параметра PasswordHistory. Возможные значения: от 0 до 20.

Для отключения истории паролей задайте 0.

 PasswordHistory: 10

Максимальное количество попыток авторизации

Вы можете задать максимальное количество попыток авторизации с одного рабочего места. Задается положительным числом больше 0. Значение 0 – количество попыток не ограничено (значение по умолчанию).

При превышении заданного числа пользователь будет заблокирован на заданное время; задается пользователем с помощью отдельного параметра LoginAttemptsDelay.

Для задания максимального количества попыток авторизации укажите необходимое значение для параметра LoginAttempts:

 LoginAttempts: 0

Работает во всех режимах безопасности.

Время блокировки клиента после неудачных попыток авторизации

По умолчанию при превышении максимального количества попыток авторизации пользователь блокируется на 10 минут.

Для задания времени блокировки укажите необходимое значение для параметра LoginAttemptsDelay. Значением может быть любое положительное число, указывается в минутах (значение по умолчанию – 10).

 LoginAttemptsDelay: 10

Работает во всех режимах безопасности.

Блокировка системного аккаунта администратора

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

[Предупреждение] Предупреждение

Перед блокировкой системного аккаунта создайте пользователей и назначьте им права администратора.

Для включения блокировки укажите для параметра LockRootAccount значение on.

Чтобы отключить блокировку системного аккаунта, укажите значение off. Значение по умолчанию – off.

 LockRootAccount: on

Работает во всех режимах безопасности.

Ведение собственного журнала событий (лога)

По умолчанию ZuluServer использует журнал событий приложений Windows для записи различных событий: ошибок, предупреждений и информационных сообщений. Дополнительно вы можете включить ведение собственного журнала событий, так как он позволяет записывать более подробную и расширенную информацию о действиях на ZuluServer. Подробнее смотрите раздел Журналирование событий ZuluServer.

Параметры ведения журнала работы сервера:

 LogWrite: <on/off>   1
 LogDir: <on/off>   2
 LogDays: <количество дней>   3
 LogEditActions: <add delete modify>   4
 LogDateForEachCommand: <off/on>   5

1 | Вести протокол работы сервера или нет, задается параметром LogWrite. Если параметр не задан, по умолчанию ведение протокола включено.
2 | Каталог, в котором сохраняются файлы логов, указывается параметром LogDir (если каталог не указан, логи сохраняются в одном каталоге с исполняемым файлом программы).
3 | Количество календарных дней, которое будет храниться на диске файл протокола. По истечении заданного срока файл протокола будет удален. Если параметр не задан, то по умолчанию файлы протокола сервером не удаляются.
4 | Расширенное протоколирование добавления, редактирования и удаления элементов слоев; для включения этого режима используется параметр LogEditActions, в значении которого через пробел указываются действия, которые требуется протоколировать (add – добавление, modify – редактирование, delete – удаление). По умолчанию расширенное протоколирование не ведется.
5 | Данный параметр отвечает за указание даты в логе для каждой команды. По умолчанию off, дата для каждой команды не указывается. Даты старта и перезапуска ZuluServer обязательно записываются в лог.

Если режим включен, при совершении одного из заданных действий в логе сохраняется следующая информация (слева направо, сверху вниз): дата и время операции, ip адрес и имя пользователя, название слоя, количество элементов, id элементов.

[Предупреждение] Предупреждение

В .log записывается информация (добавления, удаления, изменения) только по графическим элементам.

Для записи в лог дополнительной (отладочной) информации для поиска ошибок служит параметр LogDebug.

 24.12.2010 16:55:05   1  edit: 192.168.1.103     2    sa 0CB0:
 layer: d:\Maps\Primer\Teplo\teplo.b00   3
 added: 7   4
 742 744 752 768   5

1 | Дата и время операции.
2 | IP адрес и имя пользователя.
3 | Название слоя.
4 | Количество элементов.
5 | Список ID объектов.

Ведение журнала веб-служб

Параметры ведения журнала веб-служб:

 LogWebRequest: <on/off>   1
 LogWebResponse: <on/off>   2
 LogWebBinaryResponse: <on/off>   3
1 | Отвечает за сохранение в логе HTTP запросов к серверу. По умолчанию off.
2 | Включает сохранения ответов сервера на HTTP запросы. По умолчанию off.
3 | Служит для записи бинарных данных (фотографий, файлов и т.п.) в журнал. По умолчанию off.

При включенном режиме в логе сохраняется информация по всем HTTP запросам к серверу в формате: дата, время и параметры соединения, строка begin HTTP, текст запроса, строка end HTTP

#Фрагмент log файла
07.09.2011 14:46:52 http: 192.168.0.103
           anonymous 03A0: 1001   0 100.0% Connected
begin HTTP GET /ws?SERVICE=
           WMS&VERSION=1.1.1&REQUEST=GetCapabilities HTTP/1.1
Accept:  */*
Accept-Language: ru
Accept-Encoding:
User-Agent:  Zulu 8.0
Host: 192.168.0.103:6473
Connection: Keep-Alive
end HTTP

Сообщения сервера в окне монитора

Отображение в окне монитора текущих сообщений сервера может быть включено или отключено в зависимости от параметра monitor:

    monitor: <on/off>

Если параметр не задан, то по умолчанию вывод сообщений на монитор включен.

Сжатие данных

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

    PackMethod: <deflate/none>

Если параметр не задан, по умолчанию данные не сжимаются.

Ограничение соединений

На соединения с сервером могут накладываться ограничения по времени бездействия соединения и по количеству соединений с одного IP-адреса.

Время бездействия задается параметром IdleTime:

    IdleTime: <число минут>

Если соединение неактивно дольше указанного промежутка времени, то оно завершается. При значении параметра равном 0 (либо не заданном параметре) ограничение не применяется.

Ограничение на количество соединений с одного IP-адреса задается параметром MaxConnPerIp:

    MaxConnPerIp: <число соединений>

Все попытки открыть соединения с конкретного IP-адреса сверх указанного лимита отвергаются с отображением соответствующего уведомления. При значении параметра равном 0 (либо не заданном параметре) ограничение не применяется.

Указать максимальное количество соединений на имя пользователя (логин) можно параметром MaxConnPerUser.

    MaxConnPerUser: <число соединений>

Данное ограничение относится ко всем пользователям ZuluServer.

[Подсказка] Подсказка

Каждому пользователю (логину) возможно указать персональные ограничения (Рисунок 28, «Окно Пользователь. Вкладка Соединение»).

Путь к каталогу тайлов

    TilesCacheDir: <путь к каталогу кэша тайлов>

Параметр TilesCacheDir используется для указания директории, в которой будет хранится кэш (плитки) при использовании системы ZuluServer в качестве тайлового сервера.

По умолчанию система хранит тайлы (плитки) в подкаталогах директории C:\ProgramData\Zulu, указанной в ZuluGIS как Корневая папка для кэша.

    TilesDir: <путь к каталогу "нарезанных" тайлов>

Параметр TilesDir указывает каталог для хранения "нарезанных" тайлов (созданных с помощью команды Слой\Tile-сервер\Создать).

По умолчанию используется каталог Tiles в той же папке, где установлен сам сервер (например, C:\Program Files (x86)\Zulu 8.0\Tiles).

Подробнее о работе с тайловыми серверами смотрите раздел «Работа с Tile-серверами» руководства пользователя системы Zulu.

Опрос сетевой лицензии ZuluServer

Если сетевая лицензия ZuluServer располагается на сетевом ключе HASP, то требуется указать для параметра NetHasp значение on. По умолчанию для параметра устанавливается значение off, то есть опрос сетевого ключа не выполняется.

    NetHasp: <on/off>

Опрос сетевой лицензии ZuluNetTools

При использовании ZuluNetTools на ZuluServer, например, при самостоятельном использовании онлайн-расчетов и выполнении ZWS команд, может потребоваться лицензия на NetTools. По умолчанию ZuluServer ищет локальную лицензию. Если лицензия ZuluNetTools располагается на сетевом ключе HASP, то для ее использования на ZuluServer следует установить для параметра WebNetToolsNetHasp значение on.

По умолчанию для параметра устанавливается значение off, то есть опрос сетевой лицензии не выполняется.

    WebNetToolsNetHasp: <on/off>

Контроль версии клиента

Возможно ограничение подключений пользователей с устаревшей версией клиента. При подключении клиента к ZuluServer сравнивается версия клиента и сервера. Если версия клиента старше версии сервера на определенное количество дней, указанных в соответствующем параметре, то подключиться клиент не сможет, и появится следующее сообщение: "Версия клиента устарела и не поддерживается данным сервером. Обновите версию."

Окно Версия клиента устарела

Рисунок 10. Окно Версия клиента устарела

    ClientVersionExpired: <дней>

Отрисовка (перестроение) изображения клиента

По умолчанию отрисовка (перестроение) изображения происходит сразу после каждого добавления (удаления) графического объекта. Иными словами, как только произошли изменения (пользователь добавил или отредактировал объект), изображение перестраивается сразу у всех клиентов. В этом случае параметр NotifyToRedrawAll имеет значение on.

При большом количестве пользователей (например, 100 человек одновременно редактируют один слой), постоянное перестроение следует отключить, задав параметр off. В этом случае изображение у клиента будет обновляться только после его собственных действий (обновление карты, перемещение, масштабирование...).

    NotifyToRedrawAll: <on/off>

Работа через proxy-сервер

Для доступа службы ZuluServer в интернет через HTTP proxy-сервер (например, для обращения к WMS, Tile-серверам) следует указать для параметра UseProxy значение on. По умолчанию устанавливается значение off.

IP адрес proxy-сервера указывается значением ProxyAddress, а номер порта – ProxyPort.

    UseProxy: <on/off>
    ProxyAddress: <IP адрес proxy-сервера>
    ProxyPort: <Номер порта proxy-сервера>
    ProxyAuth: <login:password>

Для подключения с авторизацией, логин и пароль следует указать в параметре ProxyAuth, разделяя с помощью двоеточия. По умолчанию, если параметр не задан, подключение к прокси-серверу осуществляется без авторизации.

На данный момент реализована basic авторизация, а логин и пароль не шифруются.

Пример фрагмента файла конфигурации:

    UseProxy: on
    ProxyAddress: 127.0.0.1
    ProxyPort: 3128
    ProxyAuth: login:password

Кеширование плиток для ZWS

Чтобы ускорить работу клиента с данными по протоколу ZWS, ZuluServer может кешировать отдаваемые плитки (тайлы). Чтобы включить или отключить опцию кеширования плиток, укажите в конфигурационном файле параметр ZWSCache:

    ZWSCache: <on/off>

Логирование используемой памяти

Для контроля утечек памяти вы можете включить логирование используемой памяти. Для этого в конфигурационном файле следует использовать параметр LogMemory.

    LogMemory: <on/off>

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

[Примечание] Примечание

Используется только для отладки и диагностики ошибок в работе программного обеспечения. Следует включать только при необходимости!

Фильтрация опубликованных ZWS слоев

Вы можете использовать фильтр для опубликованных ZWS слоёв. Тогда клиенту в списке опубликованных слоев будут отображаться только те слои, на которые у клиента есть права хотя бы на чтение геометрии. Например, чтобы слои "чужих" филиалов не отображались в списке доступных слоев.

Для включения в конфигурации сервера укажите on для параметра ZWSLayerListFilter:

    ZWSLayerListFilter: on/off

Пространственный фильтр для ZWS слоев

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

Чтобы включить пространственный фильтр для веб в файле конфигурации, укажите on для параметра ZWSUseRestrictedArea:

    ZWSUseRestrictedArea: on/off

Запуск гидравлических расчетов в ZuluGIS Online

Чтобы на ZuluServer включить возможность проведения расчетов из ZuluGIS Online (по умолчанию кнопка запуска расчетов в ZuluGIS Online отсутствует), следует указать параметр on для параметра WebNetTools :

    WebNetTools: on/off

Перезапустите ZuluServer и перезагрузите приложение ZuluGIS Online (кнопка Обновить страницу), после чего в ZuluGIS Online появится дополнительная кнопка запускающая расчеты.


Режим безопасности

В ZuluServer 2021 вы можете задать следующие режимы безопасности:

  • Общедоступный.

  • Защищенный.

  • Режим повышенной безопасности.

Задание режима безопасности

Режим безопасности задается параметром AccessMode в файле конфигурации ZuluServ.cfg (Файл конфигурации ZuluServer):

    #Фрагмент файла ZuluServ.cfg
    AccessMode:	secured

Параметр AccessMode может принимать следующие значения:

Таблица 1. Значения AccessMode

Значение | Описание
public | Общедоступный режим сервера.
secured | Защищенный режим сервера.
strict | Режим повышенной безопасности.

Выбрать режим работы сервера можно также в Мастере настройки ZuluServer (Мастер настройки).

[Примечание] Примечание

Режим повышенной безопасности включается только в конфигурационном файле ZuluServ.cfg.

Общедоступный режим

В этом режим сервер работает так же, как в предыдущих версиях Zulu 1.0–8.0:

  1. Пользователям будут недоступны только те операции и ресурсы, доступ к которым запрещён администратором.

  2. Права доступа к ресурсам определяются по принципу: все, что не запрещено, то разрешено.

  3. Сервер допускает анонимный доступ к данным.

Защищенный режим

В этом режиме сервер работает подобно традиционным серверам баз данных:

  1. Для доступа к данным требуется авторизация.

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

Режим повышенной безопасности

[Предупреждение] Предупреждение

Режим повышенной безопасности предъявляет следующие требования к используемой операционной системе:

  • Windows Server 2012 и выше;

  • Только x64 версии: Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11.

В режиме повышенной безопасности ZuluServer:

  1. Информация о пользователях – учетные данные и права доступа – хранится в базе данных ZuluServer.cfdb (в отличии от других режимов, когда используются файлы .zusers и Access.cfg). При включении режима повышенной безопасности база ZuluServer.cfdb создаётся автоматически и импортирует текущую информацию о пользователях.

    В ZuluServer.cfdb также хранится такая информация, как признак, время смены пароля и история паролей.

  2. Хранимые пароли шифруются с помощью алгоритма SHA512.

  3. Политика сложности пароля: пароль должен быть не менее 8 символов, содержать символы верхнего и нижнего регистра и специальные символы.

    Вы можете самостоятельно задать минимальную длину пароля.

  4. Можно задать срок действия пароля. По умолчанию время действия пароля – 180 дней.

  5. Есть возможность настроить историю хранения паролей – вы можете указать, какое количество паролей следует хранить в истории, или отключить хранение истории. Когда пользователь меняет пароль, ZuluServer сравнивает его с использованными ранее паролями из истории и запрещает повторное использование.

[Подсказка] Подсказка

Посмотреть сводку по текущему состоянию и настройкам безопасности вы можете на вкладке Обзор в Администраторе ZuluServer.


Организация данных

Корневой каталог данных сервера

Корневой каталог данных ZuluServer – это папка, где располагаются все опубликованные на сервере данные; это могут быть как слои (карты, проекты), так и описатели (.zl файлы). Внутри каталога расположена папка WebMaps – каталог для веб-карт, где хранятся веб-карты для ZuluGIS Mobile и ZuluGIS Online.

Поддерживает древовидную систему организации данных – вы можете создавать вложенные папки внутри каталога данных. Это позволяет гибко управлять правами и фильтрами доступа к данным.

Корневой каталог назначается с помощью Мастера настройки или в конфигурационном файле ZuluServ.cfg в переменной RootDir. В качестве корневого каталога данных сервера может быть указан любой каталог на жестком диске компьютера, где установлен ZuluServer.

По умолчанию корневым каталогом назначается папка Data в папке, где установлен ZuluServer.

Пример фрагмента файла ZuluServ.cfg:

    # Defines root directory
    RootDir: С:\Program Files\Zulu 8.0\Data

Каталог для веб-карт

Каталог для веб-карт – это папка на ZuluServer (папка WebMaps в корневом каталоге с данными), где сохраняются веб-карты.

Веб-карты – это карты, с которыми работают ZuluGIS Online и мобильное приложение ZuluGIS Mobile. Хранятся в собственном формате файлов с расширением .zmmap.

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

[Предупреждение] Предупреждение

Вам следует заранее создать необходимые папки для сохранения веб-карт на сервере. Создание папок внутри каталога для веб-карт из приложений ZuluGIS Online и ZuluGIS Mobile не поддерживается.

Для применения изменений после создания папок необходимо перезапустить ZuluServer.

Слои

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

Для того чтобы слой был опубликован сервером и стал доступен клиентам, в области данных сервера должен быть создан файл описатель этого слоя.

То есть описатель слоя содержит ссылку на реальный слой.

Файл описатель – это текстовый файл с расширением .zl (Zulu Layer). Этот файл должен содержать строку вида:

    Path: <пробел> <полное имя слоя>

Например, для векторного слоя:

    Path: d:\ZuluData\Piter\spbhouse.b00

для растрового объекта:

    Path: d:\ZuluData\Piter\Raster\Plan\2529-01.ZRS

для растровой группы:

    Path: d:\ZuluData\Piter\Raster\Plan\2529.ZRG

При работе с ZuluGIS и ее объектной моделью файлы с расширением .zl рассматриваются системой как слои, наряду с .b00, .zrs и .zrg.

Карты

Карта, публикуемая в области данных сервера, является обычной картой в формате Zulu (файлом с расширением ZMP). Для того чтобы слои, входящие в карту, были доступны пользователям сервера, на обычную карту накладывается дополнительное требование: карта должна содержать в качестве ссылок на слои не имена слоев, а имена их описателей.

Карта, содержащая слои с сервера и сохраняемая на сервере с клиентского места, по определению будет сохранятся на сервере с учетом этого требования.

Чтобы создать такую карту в локальном режиме, нужно добавлять в карту слои, заданные описателями. Иными словами, в качестве имен слоев карта должна содержать только файлы с расширением ZL.

Если не все слои карты заданы описателями, то при открытии карты с клиентского места откроются только те слои, которые заданы описателями.

Проекты

Проект, публикуемый в области данных сервера, является обычным файлом проекта в формате Zulu (файлом с расширением ZPR). Для того чтобы все составляющие проект данные (слои, карты и связи между ними) были доступны клиентам, все слои, входящие в проект и в каждую карту, должны быть заданы через описатели.

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

Утилита публикации данных

Для подготовки локальных данных к работе с сервером можно использовать утилиту публикации данных ZSDataPrepare.exe (Утилита публикации данных (ZSDataPrepare)).


Источники данных (СУБД)

Введение

Для работы с внешними базами данных ZuluGIS позволяет использовать источники данных – соединения с различными СУБД, используя ADO (OLE DB) и ODBC, или прямого подключения. Соединения ADO задаются в виде строки соединения или файла связи с данными (UDL). Соединения ODBC обычно регистрируются в системе Windows в виде источника данных ODBC DSN. Правда, ODBC позволяет также использовать строку соединения (так называемый DSN-less connection), но в ZuluServer это пока не реализовано. Однако все эти соединения рассчитаны на то, чтобы использоваться на текущем компьютере. Удаленные пользователи не могут использовать эти соединения напрямую. Чтобы пользователи на своих клиентских местах могли использовать соединения ZuluServer с внешними СУБД, например, когда ZuluServer обращается к MS SQL Server, следует создать собственные источники данных в ZuluServer. Таким образом, клиенты будут обращаться к ZuluServer, а он будет непосредственно взаимодействовать с СУБД.

Схема взаимодействия клиентов ZuluServer и СУБД

Рисунок 11. Схема взаимодействия клиентов ZuluServer и СУБД

Для удобства и единообразия доступа к семантическим данным ZuluGIS (ZuluServer) описывает подключения к различным СУБД в виде собственных источников данных. Это могут быть как коммерческие, так и бесплатные клиент-серверные СУБД: Microsoft SQL Server, Oracle, Sybase, PostgreSQL, MySQL, Линтер и т.д.; файл-серверные СУБД: SQLite и прочие. Подобно источникам данных ODBC DSN или связям с данными OLEDB UDL, эти источники данных можно использовать при добавлении таблиц в базу данных или выборе таблиц для других операций. Поддерживаются различные технологии прямого доступа к PostgreSQL, SQLite, SQL Server LocalDB, а также подключения через ADO (OLE DB) и ODBC.

В поставку продуктов ZuluGIS входит бесплатная СУБД Microsoft SQL Server Express LocalDB. Чтобы обеспечить удобный и эффективный доступ к разнообразным источникам семантической информации, особенно при работе с ZuluServer и большим количеством пользователей, можно воспользоваться многопользовательской (клиент-серверной) СУБД (Microsoft SQL Server, Oracle, Sybase, PostgreSQL, MySQL, Линтер и т.д.) - подключения к таким СУБД в ZuluGIS (ZuluServer) также настраивается в виде источников данных.

Пример настройки источника данных

Рисунок 12. Пример настройки источника данных

При использовании собственных источников данных возможно пользоваться встроенными возможностями выбранного СУБД, такими как расширенный список типов полей таблицы, уникальные свойства полей (например, поля-счётчики, запрет на пустые значения, автоматически заполняемые и вычисляемые поля), операции массового импорта данных в таблицы (BULK INSERT), собственные инструменты администрирования и настройки баз данных, представления, триггеры и другие возможности.


Типы источников данных

Типы источников данных

Рисунок 13. Типы источников данных

Источники данных могут быть следующих типов:

  • Соединение ADO (OLE DB)

    Источник содержит параметры соединения OLEDB. Это может быть строка соединения или путь к файлу связи с данными UDL.

  • Источник ODBC

    Источник содержит параметры соединения ODBC. Источник может ссылается на уже имеющийся источник данных ODBC DSN (пользовательский или системный), задаваться в виде строки соединения или содержать путь к файлу связи с данными DSN.

  • Псевдоним BDE

    В текущей версии не используется, оставлен для поддержки предыдущих версий.

  • Локальная папка

    В текущей версии не используется, оставлен для поддержки предыдущих версий.

  • База данных Microsoft Access

    Источник ссылается на базу данных в файле .mdb. Может быть недоступен, если не установлен Microsoft Access Database Engine.

  • База данных SQLite

    Источник ссылается на базу данных в файле .sqlite

  • База данных SQL Server LocalDB

    Источник ссылается на базу данных в файле .mdf.

  • PostgreSQL

    Источник содержит параметры прямого подключения к PostgreSQL.


Авторизация на СУБД и передача учетных сведений

Для авторизации в системе СУБД могут быть различные ситуации:

  • Используются учётные данные, указанные в источнике данных.

    1. Логин и пароль указываются в строке подключения в открытом виде (этот способ не рекомендуется).

    2. Логин и пароль могут быть прописаны в специальных полях в разделе пользователь, при этом не учитываются параметры, указанные в строке соединения (они могут быть и не указаны); логин и пароль прописываются в источнике данных (файле DataSrc.cfg), пароль будет сохранен в зашифрованном виде (рекомендуемый способ).

      Указание учетных сведений в источнике данных (способ 2)

      Рисунок 14. Указание учетных сведений в источнике данных (способ 2)

    При работе в многопользовательском режиме, используя ZuluServer, пользователи ZuluGIS при обращении к табличным данным будут авторизоваться на СУБД указанными выше способами.

    Для СУБД все пользователи в этом случае будут подключаться под одной учетной записью, указанными в настройках источника данных.

  • Использовать учётные данные Windows.

    [Предупреждение] Предупреждение

    При авторизации с использованием учётных данных Windows ZuluGIS или ZuluServer должны выполняться от имени учётной записи, которая имеет права на доступ к СУБД.

    При доменной Windows авторизации пользователей учётные сведения могут использоваться для авторизации на ZuluServer и далее передаваться на сервер СУБД. ZuluServer будет передавать те логин и пароль, которые он получил от присоединившегося к нему пользователя. Эти логин и пароль «перекрывают» учетные сведения, которые могут быть указаны в строке соединения ADO (OLE DB) или псевдониме ODBC. Кроме того, эта опция позволяет избегать указания логина и пароля в строке соединения, в которой они будут присутствовать в незашифрованном виде.

    Подробнее смотрите раздел «Передача учетных сведений на СУБД».


Файл настроек источников данных DataSrc.cfg

Настройки источников данных хранятся в конфигурационном файле DataSrc.cfg в папке, где установлен ZuluServer. В файле DataSrc.cfg содержится информация об источниках данных, настройки СУБД и выполнения запросов с оператором ИЗМЕНИТЬ (CHANGETO).

[Подсказка] Подсказка

DataSrc.cfg – текстовый файл в кодировке UTF-8, вы можете открыть его текстовым редактором.

Создание, изменение и удаление источников данных производится в панели Источники данных, которую можно открыть из программы Монитор ZuluServer, выбрав меню Файл|Конфигурация.

[Примечание] Примечание

Настройки источников данных хранятся в конфигурационном файле DataSrc.cfg в папке, где установлен ZuluServer.

Панель Источники данных

Рисунок 15. Панель Источники данных

Источники данных можно также задать в конфигурационном файле DataSrc.cfg (расположен в папке с ZuluServer). Ниже приведен фрагмент этого файла:

#Фрагмент файла DataSrc.cfg
# To pass authorization info to DBMS transitively
#Передавать учетные сведения на сервер СУБД
dbms-auth-pass: all
Используемая СУБД по умолчанию
local-dbms: sqlite
#Ограничение запросов на изменение
restrict-changeto: no
#Версия SQL Server LocalDB по умолчанию
localdb: v11
<datasrc>
    name: ODBC_SQL_system
    type: odbc/dsn
    dsn: ODBC_SQL_con
    <access>
        require: valid-user
    </access>
</datasrc>
<datasrc>
    name: ODBC_File_DSN_SQL
    type: odbc/file
    file: C:\ZuluGIS\file_conn\File_DSN.dsn
    login: zu
    pswd: $zs2$mcmUz8WR7rEOtnfcBDh9G.
    bulk-dir: C:\Logs
</datasrc>
<datasrc>
    name: ODBC_SQL_str
    type: odbc/connstr
    connstr: DSN=ODBC_SQL_con;Trusted_Connection=No;APP=ZuluGIS 2021;WSID=DIMA-E;DATABASE=Zulu_test;
    login: zu
    pswd: $zs2$mcmUz8WR7rEOtnfcBDh9G.
</datasrc>
<datasrc>
    name: SQLite_all_layers
    type: sqlite
    path: C:\ZuluGIS\file_conn\all_layers.sqlite
</datasrc>
<datasrc>
    name: Native_PostgreSQL_1
    type: postgresql/connstr
    connstr: host=localhost;port=5432;dbname=zulu
    login: zulu
    pswd: $zs2$1eaUGwCQUX9rISXYUl7CC1
</datasrc>

Где:

  • Name – наименование источника данных, произвольный текст.

  • Type – тип источника данных, может принимать значения odbc/dsn, odbc/file, ado/udl, ado/connstr, postgresql/connstr, sqlite, localdb.

  • Connstr – указывается строка соединения, содержание зависит от выбранного типа источника данных и драйвера поставщика данных.

  • Path – указывается путь файлу dsn или файлу базы данных, в зависимости от выбранного типа источника данных.

  • Dsn – наименование dsn, используемого при построении источника данных.

  • Udl – указывается путь файлу UDL.

  • Login – логин, для авторизации на СУБД.

  • Pswd – пароль для авторизации на СУБД, записывается в зашифрованном виде.

  • dbms-auth-pass: on – при авторизации на СУБД будут использоваться учетные сведения пользователя ZuluServer.

  • bulk-dir – указывается специальная папка, позволяющая ускорить операции массового импорта (BULK INSERT).

    [Предупреждение] Предупреждение

    В случае если ZuluGIS/ZuluServer и SQL Server установлены на разных компьютерах, папка должна быть доступна по указанному пути с обоих компьютеров.

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

  • <access> …. </access> – в секции access записываются сведения о публикации источника данных на ZuluServer и его доступности. Настраивается в администраторе ZuluServer. Если секция отсутствует, значит, источник не опубликован или опция require имеет значение nobody (require: nobody).

    Возможные значения параметра require:

    • require:valid-user – источник опубликован и доступен зарегистрированным пользователям;

    • require:anybody – источник опубликован и доступен всем пользователям;

    • require:users User1 Group1 – источник опубликован и доступен перечисленным пользователям или группам пользователей.


Публикация и доступ к источникам данных

ZuluServer позволяет управлять доступом к источникам данных:

  • общий доступ для всех пользователей ZuluServer;

  • только зарегистрированные пользователи;

  • пользователи и группы из списка – позволяет работать с источником только указанным пользователям или группам пользователей.

Публикация и настройка доступа к источнику данных

Рисунок 16. Публикация и настройка доступа к источнику данных

Публикация источников данных, а также настройка прав доступа к ним осуществляется через программу Администратор ZuluServer (Администратор ZuluServer) в разделе Источники данных (СУБД). («Доступ к источникам данных СУБД»).


Создание источника данных

В ZuluServer предусмотрена возможность добавления, изменения и удаления источников данных. Эти операции доступны из панели Источники данных:

  1. В программе Монитор ZuluServer выберите меню Файл|Конфигурация, на экране появится панель Источники данных.

  2. Нажмите кнопку Создать.... На экране отобразится окно настроек источника данных.

    Создание источника данных

    Рисунок 17. Создание источника данных

  3. Укажите параметры источника данных:

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

    2. Тип подключения. Происходит прямое указание СУБД или тип источника ADO (OLE DB) и ODBC. По мнению большинства пользователей приоритетным будет использование прямого соединения, далее ADO (OLE DB) и на последнем месте ODBC. Подробнее о типах.

    3. Способ соединения. Способ соединения может быть задан строкой соединения, сохранен в файле DSN или UDL.

      Зависит от типа подключения. Подробные инструкции по созданию источников данных для различных типов подключений смотрите в документации ZuluGIS.

    4. Параметры авторизации на СУБД. Настройте параметры авторизации.

      [Примечание] Примечание

      Если нужно, чтобы соединение с источником данных осуществлялось с предопределенными логином и паролем, впишите их в окошках Логин и Пароль (пароль сохраняется в файле DataSrc.cfg в зашифрованном виде). Эта опция «перекрывает» учетные сведения, которые могут быть указаны в строке соединения или псевдониме. Кроме того, опция позволяет избегать указания логина и пароля в строке соединения OLEDB, в которой они будут присутствовать в незашифрованном виде.

    5. Папка для передачи данных. Указывается специальная директория, позволяющая ускорить операции массового импорта (BULK INSERT) и массового экспорта.

      [Предупреждение] Предупреждение

      В случае если ZuluGIS/ZuluServer и SQL Server установлены на разных компьютерах, папка должна быть доступна по указанному пути с обоих компьютеров.

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

  4. Нажмите кнопку ОК, чтобы сохранить данные.

Далее созданный источник следует опубликовать и настроить к нему доступ.

После создания все настройки источника данных будут доступны в этом же диалоге и в файле настроек источников данных DataSrc.cfg.


Передача учетных сведений на СУБД

При работе с семантическими данными на СУБД (таким как Microsoft SQL Server, Oracle и т.п.) ZuluServer может передавать те логин и пароль, которые он получил от присоединившегося к нему пользователя.

[Подсказка] Подсказка

При доменной Windows авторизации пользователей учётные сведения могут использоваться для авторизации на ZuluServer и далее передаваться на сервер СУБД. Подробнее об Windows авторизации: «Авторизация Windows».

В противном случае ZuluServer должен будет передавать общие для всех пользователей учетные сведения (заданные в настройках соединения с СУБД). Эта опция полезна в том случае, когда разграничение прав доступа на семантические данные «отданы на откуп» самому серверу СУБД.

Включить опцию Передавать учётные сведения на сервер СУБД можно:

  • указав параметр параметр dbms-auth-pass: all в конфигурационном файле DataSrc.cfg;

  • используя Мастер настройки zssetup.exe, перейти на Шаг 2. Параметры учетных сведений, где включить соответствующую опцию.

Чтобы использовать проверку подлинности с SQL Server, необходимо наличие следующих условий:

  • Компьютеры клиента и сервера должны быть частью одного домена Windows или доверенных доменов.

  • Имя участника-службы (SPN) должно быть зарегистрировано в службе каталогов Active Directory, которая играет роль центра распределения ключей в домене Windows. Имя участника-службы после регистрации сопоставляется учетной записи Windows, запустившей экземпляр службы SQL Server. Если регистрация имени участника-службы не была выполнена или завершилась неудачно, уровень безопасности Windows не может определить учетную запись, связанную с именем участника-службы, и проверка подлинности Kerberos не может быть использована.

  • При запуске службы компонента Database Engine она пытается зарегистрировать имя участника-службы (SPN). Если у учетной записи, с которой запускается SQL Server, нет права регистрировать имя участника-службы в службах домена Active Directory, вызов завершится ошибкой, и в журнал событий приложений, а также в журнал ошибок SQL Server будет добавлено предупреждение. Для регистрации имени участника-службы компонент Database Engine должен выполняться от имени встроенной учетной записи, например, Local System (не рекомендуется) или NETWORK SERVICE, либо от имени учетной записи, обладающей разрешением на регистрацию имен участников-служб, например, учетной записи администратора домена.

    Правильным будет сопоставление, при котором зарегистрированное имя субъекта-службы сопоставляется с учетной записью, с помощью которой запущена служба SQL Server.


Ограничение запросов на изменение

Возможно запретить выполнение запросов на изменение (CHANGE TO, ИЗМЕНИТЬ) сразу ко всей базе данных. В этом случае пользователь сможет выполнять запросы только по группе выделенных объектов. Запрет устанавливается с помощью параметра restrict-changeto в конфигурационном файле источников данных DataSrc.cfg.

[Предупреждение] Предупреждение

Данная настройка применяется и в однопользовательской ZuluGIS при работе с локальными данными!

Если слой открыт с ZuluServer, то производить данную настройку следует на ZuluServer; если слой открыт локально – производить настройку за своим компьютером.

Возможные значения параметра restrict-changeto:

  • yes или group – ограничивать по группе;

  • no – не ограничивать (работать как прежде).

По умолчанию параметр имеет значение group.


Используемая СУБД по умолчанию

Вы можете указать, какую из доступных СУБД использовать по умолчанию.

Можно указать её вручную, но обычно она задается в настройках ZuluGIS.

local-dbms: sqlite


Версия используемого SQL Server LocalDB по умолчанию

Вы можете указать вручную, какую версию SQL Server LocalDB использовать по умолчанию.

Аналогично настройке Версия используемого SQL Server LocalDB в клиенте ZuluGIS.

localdb: v11


Управление доступом к данным

ZuluServer позволяет регламентировать доступ к данным путем определения круга лиц, кому разрешена работа с теми или иными данными, а также разграничения прав доступа на то, какие операции с этими данными разрешены тому или иному пользователю.

При соединении с ZuluServer возможно использовать учетные сведения Windows для авторизации пользователя, а также передавать учетные сведения для доступа к СУБД. Пользователю не нужно постоянно вводить логин и пароль.

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


Авторизация

Авторизация на ZuluServer подразумевает выяснение, кто именно пытается выполнить операцию на сервере (аутентификация), и наделение этого пользователя полномочиями в соответствии с правами доступа («Права доступа»).

В ZuluServer реализованы два способа аутентификации:

  1. Обычный – путем ввода пользователем «имени пользователя» (или «логин») и пароля.

  2. Используя учетные сведения Windows («Авторизация Windows»).

Те пользователи, которые обращаются к ZuluServer с предоставлением своих учетных сведений, называются «зарегистрированными». Остальные пользователи, обращающиеся к серверу ZuluServer и не предоставляющие учетные сведения, считаются «анонимными». Сервер ZuluServer позволяет регламентировать доступ к данным как для зарегистрированных пользователей, так и для анонимных. Например, какие-то данные могут быть доступны только для определенного круга пользователей, а какие-то могут быть доступны любому подключившемуся к серверу пользователю, но с ними можно выполнять только ограниченное множество операция (допустим, только чтение, нельзя редактировать).


Список пользователей

В зависимости от режима безопасности информация о зарегистрированных пользователях хранится:

  • в текстовом файле .zsusers;

  • базе данных ZuluServer.cfdb (только в режиме повышенной безопасности, в отличии от других режимов, когда используются файлы .zusers и Access.cfg). При включении режима повышенной безопасности база ZuluServer.cfdb создаётся автоматически и импортирует текущую информацию о пользователях.

Путь к файлу .zsusers, а также другое имя файла можно задать в файле конфигурации сервера:

    #Фрагмент файла ZuluServ.cfg
    UserFile .\.zsusers

Каждая строка файла .zsusers содержит имя пользователя (логин) и пароль, разделенные двоеточием, как в примере ниже:

    douser:$zs1$xEHtCYqrvAImzTO/0W/tz7W8ccPZAEEOkRipun3TJw.
    ivanov:1234567

Пароль, независимо для разных пользователей, может задавать как в зашифрованном виде, так и в простой незашифрованной форме. В примере выше пароль для пользователя douser зашифрован, а для пользователя ivanov, его пароль «1234567» – нет. Шифрованный способ хранения пароля безопасней, однако, если пользователь забыл свой пароль, восстановить его невозможно.

Учётные записи пользователей использующие учетные сведения Windows указываются в следующем виде:

   OfficeWork\Ivanov:$winnt$
   PolitermLocal\Roman:$winnt$

Редактировать файл пользователей можно любым текстовым редактором или с помощью утилиты Администратор ZuluServer Администратор ZuluServer.

В случае, если список зарегистрированных пользователей редактируется с помощью утилиты Администратор ZuluServer, способ, которым сохраняются пароли, определяется в файле конфигурации сервера ZuluServ.cfg:

    #Фрагмент файла ZuluServ.cfg
    PasswordEncrypt: sha512

Параметр PasswordEncrypt может принимать следующие значения:

Таблица 2. Возможные значения параметра PasswordEncrypt

Значение | Описание
none | Пароли не шифруются.
gost | Пароли шифруются с помощью алгоритма ГОСТ Р34.11-94.
sha512 | Пароли шифруются с помощью алгоритма SHA512. Работает только в режиме повышенной безопасности.


Авторизация Windows

Помимо ведения собственного списка пользователей, ZuluServer поддерживает авторизацию пользователей с использованием учетных сведений Windows. Сервер не запрашивает у пользователя логин и пароль, а использует учетные сведения, указываемые при входе в Windows. Поддерживается авторизация пользователей из разных доменов. Возможно передавать учётные сведения на сервер СУБД.

[Предупреждение] Предупреждение

Компьютер с ZuluServer должны быть частью домена Windows или доверенных доменов.

Для авторизации с использованием учётных сведений Windows следует Включить проверку подлинности Windows:

  • используя Мастер настройки zssetup.exe, перейти на Шаг 2. Параметры учетных сведений, где включить соответствующую опцию

ИЛИ

  • указать параметр WinAuth: on в конфигурационном файле ZuluServ.cfg.

Авторизация windows для веб-клиентов

Поддерживается авторизация с использованием учётных сведений Windows для веб-клиентов, обращающихся к серверу по HTTP протоколу, например, ZuluGIS Online.

Чтобы включить авторизацию windows для HTTP запросов, следует указать параметра HttpWinAuth: on в конфигурационном файле ZuluServ.cfg.

Список пользователей ZuluServer

Рисунок 18. Список пользователей ZuluServer


Права доступа

Полномочия пользователя ZuluServer определяются набором «прав доступа» указанного пользователя к выбранному им ресурсу. Право доступа – это разрешение или, наоборот, запрещение выполнение определенной операции на сервере. Часть прав доступа могут быть присвоены пользователю независимо от того, к каким ресурсам он обращается, а другая часть определяется ресурсом, к которому пользователь обратился. Например, можно задать, чтобы какой-либо пользователь мог только просматривать данные с сервера, то есть права доступа определяются именем пользователя. Можно указать, что данный ресурс (допустим, слой) имеет право редактироваться определённым пользователем, а остальным нельзя, в этом случае права доступа определяются ресурсом. Возможно ограничить групповое изменения атрибутов (данных) и геометрии, а также установить ограничение пространственным фильтром, состоящим из одного или нескольких полигональных объектов, хранящихся в одном из слоев на сервере

Права доступа для пользователей задаются в отдельно файле конфигурации Access.cfg. Имя этого файла и путь можно изменить в основном файле конфигурации сервера:

    #Фрагмент файла ZuluServ.cfg
    AccessConf	.\Access.cfg

Файл Access.cfg содержит информацию о пользователях (помимо файла пользователей .zsusers), «ролях» и «группах». Настройка прав доступа может производиться путем редактирования файла Access.cfg вручную или c помощью утилиты Администратор ZuluServer.

В следующей таблице перечислены возможные права доступа:

Таблица 3. Права доступа

Права доступа

Предоставляемые возможности

Общие

all

Все операции

Разрешить все операции.

read

Чтение

Возможность читать (просматривать) данные.

write

Запись

Возможность записывать (создавать, редактировать, удалять) данные.

Сервер

server-config

Управление сервером

Возможность удаленно изменять конфигурацию сервера.

server-login

Управление пользователями

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

Папки

folder-create

Создание

Возможность создавать новые папки на сервере геоданных.

folder-delete

Удаление

Возможность удалять папки на сервере геоданных.

Слой

layer-read

Чтение

Возможность читать (просматривать) все данные слоя.

layer-read-geom

Геометрия

Возможность читать (просматривать) графические данные слоя.

layer-read-attr

Атрибуты

Возможность читать (просматривать) семантические данные слоя.

layer-enum-elem

Перечисление

Возможность программно получать выборки элементов слоя (экспорт, копирование графических данных, построение пьезометрических графиков).

layer-create

Создание

Возможность создавать новые слои.

layer-delete

Удаление

Возможность удалять слои.

layer-alter (layer-write)

Изменение

Возможность редактировать данные слоя.

layer-alter-attr

Атрибуты

Возможность изменять семантические данные слоя.

layer-alter-attr-single

 Атрибуты: Одиночное Возможность изменения атрибутов только для одиночных объектов.

layer-alter-attr-group

 Атрибуты: Групповое Возможность группового изменения атрибутов объектов.

layer-alter-mode

Режимы

Возможность менять режим элементов.

layer-alter-geom

Геометрия

Возможность изменять геометрию элементов слоя.

layer-alter-geom-single

 Геометрия: одиночное Возможность изменения геометрии только для одиночных объектов.

layer-alter-geom-group

Геометрия: групповое

 Возможность группового изменения геометрии объектов.

layer-alter-struct

Структура

Возможность редактировать структуру слоя.

layer-alter-proj

Проекция

Возможность изменять проекция слоя (систему хранения слоя).

layer-create-elem

Добавление элементов

Возможность добавлять элементы в слой.

layer-delete-elem

Удаление элементов

Возможность удалять элементы слоя.

layer-delete-elem-single

Удаление элементов: одиночное

Возможность удаления одиночного объекта.

layer-delete-elem-group

Удаление элементов: групповое

Возможность удаления группы объектов.

Надписи

label-read

Чтение

Возможность чтения (просмотра) шаблонов надписей.

label-create

Создание

Возможность создавать и пересоздавать шаблоны надписей.

label-delete

Удаление

Возможность удалять шаблоны надписей.

label-alter

Изменение

Возможность перемещать надписи на карте в режиме Редактор.

Темы

theme-read

Чтение

Возможность чтения (просмотра) тематических раскрасок. Если прав на чтение нет, то пользователь не сможет включить и увидеть тематические раскраски.

theme-create

Создание

Возможность создавать новые тематические раскраски.

theme-delete

Удаление

Возможность удалять тематические раскраски.

theme-alter

Изменение

Под изменением раскраски имеется в виду не изменение тематического фильтра, а обновление раскраски – возможность изменять и обновлять существующие тематических раскрасок.

Если прав на изменение нет, то пользователь не сможет обновить тематическую раскраску (и не сможет включить или отключить автообновление раскраски).

Если прав на изменение нет, но в раскраске включено Автообновление, то раскраска будет автоматически обновляться (но ручное обновление пользователю будет недоступно).

Карты

map-read

Чтение

Возможность открывать карты.

map-create

Создание

Возможность создавать новые карты.

map-delete

Удаление

Возможность удалять карты.

map-alter

Изменение

Возможность изменять карты.

Проекты

project-read

Чтение

Возможность открывать проекты.

project-create

Создание

Возможность создавать новые проекты.

project-delete

Удаление

Возможность удалять проекты.

project-alter

Изменение

Возможность изменять проекты.

В дальнейшем в файле конфигурации Access.cfg и в других файлах при указание конкретных прав доступа используется следующий синтаксис:

    #операции, которые разрешаются
    allow: layer-read layer-alter

    #операции, которые запрещаются
    deny: layer-create-elem layer-delete-elem


Роли

«Роль» – это совокупность прав доступа, объединенных в одну смысловую единицу. Например, роль «редактор» подразумевает возможность пользователем редактировать данные, создавать и удалять слои; роль «технолог» может давать пользователю возможность просматривать слои, менять режимы (состояния) элементов слоя, вносить изменения в семантические данные, использовать слои для технологических расчетов, но не дает ему возможность редактировать геометрию, создавать и удалять слои или менять их структуру.

ZuluServer позволяет администратору определять произвольное число ролей. В файле конфигурации Access.cfg роль задается следующим образом:

    #Фрагмент файла Access.cfg
    <role data-editor>
        description: Редактор данных
        allow: layer-alter layer-create layer-delete
    </role>


Роли пользователя

Права пользователя задаются в файле Access.cfg путем назначения этому пользователю определенных ролей, как показано на примере ниже:

    #Фрагмент файла Access.cfg
    <user ivanov>
        role: data-editor
    </user>

Здесь пользователю с логином ivanov присваивается роль data-editor, которая дает ему право редактировать слои, а также создавать их и удалять (см. пример роли data-editor в предыдущем разделе).

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


Группы пользователей

Для удобства управления большим числом пользователей в ZuluServer есть возможность объединять пользователей в «группы пользователей». Например, если нужно изменить права доступа всем пользователям, чье подразделение отвечает за ввод данных, то вместо того, чтобы вносить изменения для каждого такого пользователя, можно изменить права доступа той группы, куда эти пользователи входят, чтобы результат отразился на всех них.

Группа пользователей – это список пользователей, наделенных в рамках этой группы одинаковыми правами доступа. Один и тот же пользователь может входить в несколько групп, наследуя в совокупности права доступа от каждой из них.

Описание группы в файле Access.cfg выглядит следующим образом:

    #Фрагмент файла Access.cfg
    <group Geo-Editors>
        full-name: Редакторы
        description: Те, кто занимаются вводом данных
        role: data-editor
        users: ivanov petrov sidorov
    </group>
    <group OurUsers>
        role: view
        group: POLITERMLOCAL\Пользователи%20ZuluServer
        users: POLITERMLOCAL\anatoly1 Petrov Elena
        description: Пользователи организации
    </group>


Резервирование соединений (Права на соединение)

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

Права пользователя на соединение

Рисунок 19. Права пользователя на соединение

Если в какой-то момент число соединений оказывается недостаточным для желающих зайти на сервер, клиент получает сообщение о том, что все соединения заняты. При этом могут не подключиться те, кому важно иметь беспрепятственный доступ к данным ZuluServer в любой момент (руководители, сотрудники диспетчерской службы, пользователи, занимающиеся вводом данных и инженерными расчетами)

[Примечание] Примечание

Кроме резервирования вы можете установить лимит на количество HTTP-запросов в сутки персонально любому пользователю ZuluServer. Это можно сделать в Администраторе ZuluServer при создании пользователя или его настройке.

Рассмотрим небольшой пример: ZuluServer на 20 подключений.

Пример резервирования соединений

Рисунок 20. Пример резервирования соединений

[Предупреждение] Предупреждение

Если количество пользователей с исключительными правами равно или превышает максимальное количество доступных подключений, то ни один пользователь с обычными правами подключиться к ZuluServer не сможет.


Права доступа к ресурсам

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

Для каждой папки можно определить, кто имеет право работать с данными этой папки, а также задать правила, по которым пользователям, имеющим доступ к этим данным, назначались бы определенные права доступа к ним.

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

Для того чтобы назначить права доступа папке, необходимо наличие в этой папке файл правил доступа .zsaccess. Имя файла правил доступа можно задать иным в файле конфигурации ZuluServ.cfg:

    #Фрагмент файла ZuluServ.cfg
    RuleFile	.zsaccess

Файл .zsaccess имеет текстовый формат файла конфигурации, который содержит данные о том, кто имеет доступ к этой папке, и набор правил доступа, сообщающих, кто какие права имеет при доступе к данным в этой папке.

    #Фрагмент файла .zsaccess
    require valid-user
    <permit>
        deny write
    </permit>
    <permit>
        group: Geo-Editors
        allow: write
    </permit>

Оператор require определяет, кто имеет доступ к данным. Он может принимать следующие значения:

Таблица 4. Значения require

Значение | Описание
valid-user | Доступ имеют зарегистрированные пользователи
user user1 user2 userN | Доступ имеют указанные пользователи
group group1 group2 groupN | Доступ имеют указанные пользователи

Файл может содержать несколько строк с операторами require user и require group, чтобы указать все группы и отдельных пользователей, кому разрешается доступ к данным. Если оператор require отсутствует в файле правил, это означает, что к данным в этой папке имеют доступ все пользователи, включая анонимных.

Для задания правил доступа файл .zsaccess может содержать одну или несколько секций permit. В секции permit с помощью параметров user и group указывается, на кого распространяется данное правило, а далее параметрами allow и deny задаются операции, которые разрешаются или запрещаются. Если секция permit не содержит параметров user или group, указанное правило распространяется на любого пользователя, обратившегося к данным.

При определении, какие права доступа к ресурсу имеет пользователь, сначала выясняется, имеет ли пользователь в принципе доступ к этой папке (оператор require), а дальше применяются правила доступа в том порядке, в каком они описаны в файле .zsaccess. В результате выясняется, какие операции доступны пользователю для данного ресурса, а какие нет. Если запрашиваемая операция не разрешена, то пользователь получит отказ с сообщением «Не хватает прав доступа».

В примере, приведенном выше, доступ к папке имеют только зарегистрированные пользователи. Далее, только пользователи из группы Geo-Editors имеют право редактировать данные, остальные не имеют право как бы то ни было изменять данные.


Пространственное ограничение доступа к ресурсам

Дополнительно права доступа к данным сервера можно ограничить пространственным фильтром, состоящим из одного или нескольких полигональных объектов, хранящихся в одном из слоев на сервере. В этом случае при наличии прочих прав пользователь имеет доступ только к тем графическим объектам, которые удовлетворяют условию пространственного фильтра.

[Предупреждение] Предупреждение

Для ZuluGIS Online и ZuluGIS Mobile (а также всех zws слоев) необходимо дополнительно включить использование пространственного фильтра в настройках ZuluServer.

Пример пространственного фильтра

Рисунок 21. Пример пространственного фильтра

Информация о пространственных ограничениях доступа к данным той или иной папки, содержится в секциях restricted-area файла .zsaccess, расположенного в этой же папке. При этом ограничения распространяются на все данные этой папки.

В секции restricted-area параметрами user и group указывается, на кого распространяется пространственное ограничение. Параметры user и group могут встречаться в каждой секции restricted-area многократно.

Если секция restricted-area не содержит параметров user или group, то указанное пространственное ограничение относится к любому пользователю, обратившемуся к данным.

Параметр criterium задает условие пересечения с полигональным объектом и может принимать следующие значения:

Таблица 5. Значения criterium

Значение | Описание
full-inside | объект полностью расположен внутри полигона
full-or-part-inside | объект полностью или частично расположен внутри полигона
full-outside | объект полностью расположен вне полигона
full-or-part-outside | объект полностью или частично расположен вне полигона

Если критерий не указан, по умолчанию принимается full-inside.

Секция region, входящая в секцию restricted-area, описывает местонахождение полигонов для фильтра.

Параметр layer секции region содержит полный или относительный (относительно данной папки) путь к слою, в котором находятся полигональные объекты.

Параметр id секции region содержит список ключей ID (разделенных пробелами) полигональных объектов из указанного слоя. Параметр id может встречаться в каждой секции region многократно.

Каждая секция restricted-area может содержать несколько секций region.

Пользователь или группа могут входить в несколько секций restricted-area. В этом случае полигоны, составляющие область ограничения для данного пользователя, объединяются, а критерием пересечения с объединенной областью будет критерий из последней секции restricted-area, относящейся к данному пользователю.

[Предупреждение] Предупреждение

Оставить область видимой для пользователя, но при этом просто ограничить редактирование, можно с помощью параметра allow draw, добавленного в секцию restricted-area.

# Фрагмент файла .zsaccess
<restricted-area>
    user ivanov
    <region>
        layer ..\regions\district1.zl
        id 3 7
    </region>
    <region>
        layer ..\regions\district2.zl
        id 1
    </region>
    criterium full-inside
    allow draw
</restricted-area>

<restricted-area>
    user ivanov sidorov
    user petrov
    <region>
        layer ..\regions\district1.zl
        id 10
    </region>
    criterium full-inside
</restricted-area>

<restricted-area>
    group restricted
    <region>
        layer ..\regions\district2.zl
        id 5 7
        id 6
    </region>
    criterium full-outside
</restricted-area>


Администратор ZuluServer

Программа Администратор ZuluServer предназначена для локальной и удаленной настройки безопасности и разграничения прав доступа к серверу ZuluServer.

Доступ к настройке сервера имеет пользователь, имеющий права администрирования сервера. Такие права имеет предопределенный пользователь – «системный администратор» (логин sa, по умолчанию без пароля). В целях безопасности вы можете отключить учетную запись администратора sa.

Программа администрирования сервера выполнена в виде «проводника». Слева расположено дерево объектов. При выделении нужного объекта в дереве объектов справа отображается страница свойств, касающихся выделенного объекта.

Окно Администратора ZuluServer

Рисунок 22. Окно Администратора ZuluServer

Соединение с ZuluServer

Соединение с сервером ZuluServer осуществляется с помощью заранее созданных и настроенных «соединений с сервером». Эти соединения перечислены в папке Серверы геоданных. В качестве исходных данных для соединения задаются IP-адрес, доменное имя или имя компьютера в локальной сети, где установлен сервер, порт, а также логин и пароль, под которыми пользователь будет авторизоваться на сервере. Кроме того, соединение снабжается произвольным именем, под которым оно будет указываться в списке доступных. Заданные соединения с серверами ZuluServer становятся доступны одновременно в программах удаленной настройки ZuluServer и ZuluGIS.

Создание соединения с сервером

Для того чтобы создать новое соединение с сервером ZuluServer, выделите в дереве объектов папку Серверы геоданных и на страничке свойств справа нажмите кнопку Добавить. Далее, в появившейся странице свойств нового соединения:

Окно создания соединения

Рисунок 23. Окно создания соединения

  • В поле Имя соединения укажите произвольное имя нового соединения.

  • В поле Адрес впишите IP-адрес или доменное имя компьютера, где установлен ZuluServer.

  • В поле Порт укажите порт соединения (по умолчанию 6473).

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

  • Нажмите кнопку Сохранить, чтобы зафиксировать изменения.

Созданное соединение с сервером ZuluServer станет доступно не только в программе администрирования сервера, но и в ZuluGIS.

Изменение параметров соединения с сервером

Для того чтобы изменить параметры соединения с сервером из числа созданных ранее, выберите в дереве объектов соединение и в панели свойств этого соединения внесите нужные изменения, после чего нажмите кнопку Сохранить.

Если соединение с предыдущими настройками уже было установлено, то для того, чтобы соединиться с сервером, используя новые параметры, нажмите кнопку Отсоединиться, а затем кнопку Соединиться.

Удаление соединения с сервером

Чтобы удалить соединение с сервером, щелкните правой клавишей мыши в дереве объектов по соответствующему соединению и выберите в появившемся меню пункт Удалить. Или же откройте страницу Серверы геоданных, выделите в списке соединений нужное и нажмите кнопку Удалить.

Установка соединения с сервером ZuluServer

Для того чтобы установить соединение с сервером ZuluServer, достаточно дважды щелкнуть по соответствующему соединению в дереве объектов или на странице Серверы геоданных дважды щелкнуть по нужному соединению в списке доступных или на странице свойств данного соединения нажать кнопку Соединить.

Соединиться с сервером может только пользователь, имеющий права системного администратора. Такие права по умолчанию имеет предопределенный пользователь – «системный администратор» (логин sa, по умолчанию без пароля).

При попытке соединения на экране сразу появится диалог ввода имени пользователя и пароля:

Окно ввода имени пользователя и пароля

Рисунок 24. Окно ввода имени пользователя и пароля

Если в течение минуты правильное имя пользователя и пароль не будут введены, установка соединения будет прекращена.

В один момент времени с сервером может работать только один администратор. Если какой-то пользователь уже работает с сервером в режиме администрирования, вход второго администратора на сервер будет запрещен.

Разрыв соединения с сервером

Для того чтобы разорвать соединение с сервером, щелкните правой клавишей мыши по соответствующему соединению в дереве объектов и выберите пункт меню Отсоединить.


Обзор текущих настроек сервера

На вкладке Обзор Администратора ZuluServer выводится информация о текущих настройках сервера, доступных лицензиях, пользователях и критичных параметрах безопасности.

Для просмотра вкладки подключитесь к ZuluServer и выберите слева в дереве пункт Обзор.

[Подсказка] Подсказка

Чтобы посмотреть информацию о текущих активных соединениях и клиентах, перейдите на вкладку «Активные соединения».

Рисунок 25. Вкладка Обзор

На вкладке Обзор отображается следующая информация:

Название сервера

  • Сервер – версия программного обеспечения.

  • Адрес – IP-адрес (доменное имя), используемое для соединения с ZuluServer.

  • Порт – номер порта, на котором работает сервер.

  • Hasp ID – уникальный номер лицензионного ключа HASP.

  • User limit – максимальное количество рабочих мест (пользователей).

  • Web services – наличие лицензии на веб-службы.

  • Queries – максимальное количество HTTP-запросов в сутки (зависит от лицензии).

Настройки

  • Режим доступа – отображается текущий режим (доступа) безопасности ZuluServer.

  • Режим повышенной безопасности – показывает, включен или отключен режим повышенной безопасности.

  • Учетная запись SA – показывает, заблокирован ли аккаунт системного администратора sa. Подробнее смотрите раздел «Блокировка системного аккаунта администратора».

  • Шифрование паролей – способ шифрования хранимых паролей.

  • Политика сложности паролей – показывает, применяется ли политика сложности паролей: минимальная длина, требование содержать символы верхнего и нижнего регистра, а также специальные символы.

  • Пользователь может менять пароль.

  • Мин. длина пароля – минимальная длина пароля.

  • Срок действия пароля ограничен (дни) – срок действия пароля.

  • Хранить историю паролей (кол-во) – показывает, включена ли история паролей и какое количество паролей следует хранить.


Пользователи

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

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

[Подсказка] Подсказка

Красными значками отображаются пользователи с исключительными правами доступа, а синими – с обычными.

Щелчок правой кнопкой мыши в таблице пользователей вызывает контекстное меню с командами:

  • Добавить, Изменить, Удалить – для редактирования списка.

  • Копировать – копирует выделенные записи в буфер обмена (CTRL+C) .

  • Выделить всё – выделяет все записи в списке (CTRL+A).

  • Сохранить – для сохранения выделенные записей в текстовый формат .csv.

Окно управления пользователями

Рисунок 26. Окно управления пользователями


Добавление нового пользователя

Для того чтобы добавить нового пользователя:

  1. В администраторе ZuluServer во вкладке Пользователи нажмите кнопку Добавить (клавиша Ins).

    Окно добавления пользователя

    Рисунок 27. Окно добавления пользователя

  2. Укажите имя пользователя (логин) и пароль. В незащищенном режиме пароль может быть пустой.

    При использовании пароля для его подтверждения введите его повторно в строке ниже.

    [Примечание] Примечание

    При работе ZuluServer в режиме повышенной безопасности к паролям применяются требования:

    • пароль должен быть не менее 8 символов, минимальную длину пароля можно настроить самостоятельно;

    • содержать символы разного регистра, цифры и специальные символы.

  3. Чтобы обязать нового пользователя сменить пароль при первом входе и задать собственный, установите опцию Пользователь должен сменить пароль.

    [Предупреждение] Предупреждение

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

  4. В разделе Роли отметьте в списке галочками роли, которые должны быть присвоены новому пользователю.

  5. На вкладке Соединение указываются:

    • Права на соединение. Подробнее смотрите раздел «Резервирование соединений (Права на соединение)»

    • Максимальное кол-во соединений на имя пользователя (0 – без ограничений). Указывается максимальное количество соединений с ZuluServer для данного пользователя.

    • Максимальное время бездействия пользователя (0 – без ограничений). Если соединение пользователя с сервером неактивно дольше указанного промежутка времени, то оно завершается (пользователя отключает от ZuluServer).

    • Максимальное число HTTP запросов пользователя (0 – без ограничений). Максимальное количество HTTP-запросов в сутки для данного пользователя.

    Окно Пользователь. Вкладка Соединение

    Рисунок 28. Окно Пользователь. Вкладка Соединение

  6. Перейдите на вкладку Группы. Для включения пользователя в группу пользователей нажмите кнопку Добавить и выберите группу из списка.

    Окно Пользователь. Вкладка Группы

    Рисунок 29. Окно Пользователь. Вкладка Группы

  7. На вкладке Дополнительно возможно указать полное имя пользователя и описание. Дополнительная информация будет учитываться при поиске пользователей.

    Окно Пользователь. Вкладка Дополнительно

    Рисунок 30. Окно Пользователь. Вкладка Дополнительно

  8. Нажать кнопку ОК для сохранения.


Добавление пользователя домена

Для авторизации с использованием учётных сведений Windows следует Включить проверку подлинности Windows. Включить проверку подлинности можно, используя мастер настройки ZuluServer «Шаг 2. Параметры учетных сведений» или указав параметр WinAuth: on в конфигурационном файле ZuluServ.cfg. Файл конфигурации ZuluServer.

Для того, чтобы добавить нового пользователя ZuluServer из домена:

  1. В администраторе ZuluServer во вкладке Пользователи нажмите кнопку Добавить или в списке пользователей нажать клавишу Ins.

    Окно добавления пользователя

    Рисунок 31. Окно добавления пользователя

  2. В окне добавления пользователя установите опцию Авторизация Windows.

  3. Нажмите кнопку Поиск. Откроется стандартное диалоговое окно выбора пользователей (групп пользователей) из домена.

    Окно выбора пользователя

    Рисунок 32. Окно выбора пользователя

  4. Нажмите Размещение..., чтобы указать домен, содержащий импортируемые учетные записи Active Directory. В диалоговом окне Размещение... выберите домен для использования и нажмите кнопку ОК.

  5. Введите имя пользователя, добавляемого из домена в диалоговом окне Выбор Пользователей.

    Кнопка Проверить имена служит для быстрого поиска по частичному имени.

    Кнопка Дополнительно... позволяет выполнить поиск пользователей.

    Ввод имени пользователя

    Рисунок 33. Ввод имени пользователя

  6. После указания учетных записей пользователей нажмите кнопку ОК в диалоговом окне Выбор пользователей. Выбранные учетные записи пользователей домена Active Directory добавятся в список пользователей ZuluServer.

    Список пользователей ZuluServer

    Рисунок 34. Список пользователей ZuluServer


Изменение параметров пользователя

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

В панели данных о пользователе можно изменить пароль и роли, присвоенные ему. Чтобы изменить имя пользователя (логин), следует удалить пользователя и добавить его заново.


Блокировка пользователя

В целях безопасности и защиты от несанкционированного доступа администратор ZuluServer можете заблокировать аккаунт указанного пользователя. При попытке авторизации заблокированного пользователя будет выдаваться сообщение: Пользователь заблокирован – обратитесь к администратору ZuluServer.

Чтобы заблокировать пользователя:

  1. В администраторе ZuluServer на вкладке Пользователи дважды щелкните по имени пользователя в списке или выделите пользователя и нажмите кнопку Изменить.

  2. Установите опцию Заблокировать пользователя и нажмите ОК.

    В списке пользователей заблокированный будет отображаться иконкой [image] .

    Рисунок 35. Блокировка пользователя

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


Удаление пользователя

Для того чтобы удалить пользователя, выделите его в списке пользователей и нажмите кнопку Удалить или клавишу Del. На вопрос об удалении выбранного пользователя нажмите кнопку Да.


Группы пользователей

Для удобства управления правами доступа большого числа пользователей сервер может оперировать «группами пользователей» – списками пользователей, наделенных одинаковыми правами доступа. Один и тот же пользователь может входить в несколько групп, наследуя в совокупности права доступа от каждой из них. В группу пользователей ZuluServer можно добавить группу пользователей из Active Directory. В этом случае не потребуется создавать отдельных пользователей ZuluServer. Поддерживается авторизация пользователей из разных доменов.

Для управления группами пользователей выберите в окне Администратора ZuluServer элемент Группы. Список групп представлен в виде таблицы, которая содержит столбцы с названием, полным именем и кратким описанием. Щелчок по заголовку столбца сортирует данные по убыванию (по возрастанию). В правой верхней части окна расположен фильтр для быстрого поиска из списка и кнопки управления пользователями.

Щелчок правой кнопкой мыши в таблице вызывает контекстное меню с командами:

  • Добавить, Изменить, Удалить – для редактирования списка.

  • Копировать – копирует выделенные записи в буфер обмена (CTRL+C) .

  • Выделить всё – выделяет все записи в списке (CTRL+A).

  • Сохранить – для сохранения выделенные записей в текстовый формат .csv.

Окно управления группами

Рисунок 36. Окно управления группами


Добавление новой группы

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

Окно создания группы

Рисунок 37. Окно создания группы

В появившейся панели Группа пользователей внесите следующие данные:

  • Имя группы. Это имя должно содержать только буквы и цифры и не должно содержать пробелы.

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

  • Описание (необязательно). Краткое описание группы пользователей.

  • Роли. В разделе Роли отметьте галочками те роли, которые будут наследовать пользователи группы.

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


Добавление группы пользователей домена

Чтобы добавить в группу пользователей ZuluServer группу пользователей домена:

  1. Выберите в окне Администратора ZuluServer элемент Группы.

    Окно управления группами

    Рисунок 38. Окно управления группами

  2. Нажмите кнопку Добавить или в списке групп нажмите клавишу Ins.

    Окно создания группы

    Рисунок 39. Окно создания группы

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

  4. Отметьте галочками в разделе Роли роли, которые будут наследовать пользователи группы.

  5. Нажмите кнопку Добавить; откроется окно добавления пользователей

    Окно добавление пользователей в группу

    Рисунок 40. Окно добавление пользователей в группу

  6. Нажмите кнопку Поиск... Откроется стандартное диалоговое окно выбора групп пользователей из домена.

    Окно выбора групп пользователей

    Рисунок 41. Окно выбора групп пользователей

  7. Нажмите Размещение..., чтобы указать домен, содержащий импортируемые учетные записи Active Directory. В диалоговом окне Размещение... выберите домен для использования и нажмите кнопку ОК.

  8. Введите имя группы пользователей диалоговом окне Выбор Пользователей.

    Кнопка Проверить имена служит для быстрого поиска по частичному имени.

    Кнопка Дополнительно... позволяет выполнить поиск.

    Рисунок 42. Ввод имени

  9. После указания учетных записей нажмите кнопку ОК. Выбранные учетные записи домена добавятся в список пользователей ZuluServer.

  10. Выбрать из списка пользователей для добавления в группу:

    Добавление группы пользователей

    Рисунок 43. Добавление группы пользователей

  11. Нажать кнопку ОК для сохранения:

    Добавление группы пользователей

    Рисунок 44. Добавление группы пользователей


Изменение группы

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

В панели Группа пользователей можно изменить описательные данные о группе (полное имя, описание). В разделе Роли можно назначить другие роли, присваиваемые членам этой группы.

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


Удаление группы

Для того чтобы удалить группу, выделите ее в списке групп и нажмите кнопку Удалить или клавишу Del. На вопрос об удалении выбранной группы нажмите кнопку Да.


Управление ролями

«Роль» – это набор прав доступа, разрешающих или запрещающих те или иные операции на сервере ZuluServer. Для управления ролями установите соединение с сервером ZuluServer и выберите в дереве объектов у данного соединения папку Роли.

Окно управления ролями

Рисунок 45. Окно управления ролями

Добавление роли

Для того чтобы добавить новую роль, нажмите кнопку Добавить или в списке ролей нажмите клавишу Ins.

Панель управления ролями

Рисунок 46. Панель управления ролями

В появившейся панели Роль внесите следующие данные:

  • Имя роли. Имя роли должно содержать только буквы и цифры и не должно содержать пробелы.

  • Описание (необязательно). Краткое описание роли.

  • Права доступа. В древовидном списке Права доступа отметьте те операции, которые определены для данной роли. Зеленая галочка означает, что данную операцию выполнять разрешено, красный крестик (при повторном щелчке по галочке) означает, что операция запрещена. Подробнее о правах доступа можно узнать в разделе «Права доступа».

Для того чтобы изменения были внесены на сервере, нажмите клавишу OK.

Изменение роли

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

Для того чтобы изменения были внесены на сервере, нажмите клавишу OK.

Удаление роли

Для того чтобы удалить роль, выделите ее в списке ролей и нажмите кнопку Удалить или клавишу Del. На вопрос об удалении выбранной роли нажмите кнопку Да.


Управление доступом к данным

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

Корневая папка области данных на сервере обозначается в Администраторе папкой Данные, располагающейся в дереве объектов как дочерняя от папки соединения с данным сервером. Все вложенные папки области данных сервера будут располагаться как дочерние от папки Данные.

Права доступа делятся на две категории:

  • Кому можно работать с данными. «Закладка Фильтр доступа»

  • Что можно делать с данными. «Закладка Правила доступа»

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

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

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

Окно фильтра доступа

Рисунок 47. Окно фильтра доступа

Закладка Фильтр доступа

На закладке Фильтр доступа определяется, кто из пользователей имеет доступ к данным этой папки. Для этого указывается один из следующих вариантов:

Таблица 6. Варианты фильтра доступа к папке

Вариант | Описание
Общий доступ | Доступ разрешен всем пользователям, включая незарегистрированных.
Зарегистрированные пользователи | Доступ разрешен только зарегистрированным пользователям, т.е. тем, чье имя (логин) внесено в список пользователей сервера.
Пользователи и группы из списка | Доступ разрешен только указанным пользователям и/или группам пользователей.

Закладка Правила доступа

На закладке Правила доступа определяется, какие операции разрешены или запрещены тому или иному пользователю, группе пользователям или же всем пользователям.

Правила доступа перечислены в виде списка. Чтобы определить, разрешена или запрещена какая-то конкретная операция для данного пользователя, сначала устанавливается, имеет ли этот пользователь доступ к папке, а затем к набору прав, которые пользователь имеет на основе ролей, ему назначенных.

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

С помощью кнопок Вверх и Вниз вы можете изменить порядок применения правил.

Окно правил доступа

Рисунок 48. Окно правил доступа

Добавление правила

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

Панель правил доступа

Рисунок 49. Панель правил доступа

Изменение правила

Для того чтобы изменить правило, дважды щелкните мышью по этому правилу в списке или выделите его и нажмите кнопку Изменить.

Удаление правила

Чтобы удалить правило, выберите его в списке и нажмите клавишу Удалить.

Изменение порядка правил в списке

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

Сохранение изменений

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

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

Тестирование прав доступа

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

Окно теста доступа

Рисунок 50. Окно теста доступа

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

Тестирование доступа к папке можно проводить далее для прочих пользователей, после чего нажать кнопку Отмена, чтобы закрыть панель.


Доступ к источникам данных СУБД

Для управления доступом к источникам данных, опубликованных на сервере ZuluServer, выберите слева в списке объектов папку Источники данных (СУБД). Отобразится список доступных источников данных. Более подробно об источниках данных и о том, как их добавить, можно узнать в разделе Источники данных (СУБД)

Окно Источники данных (СУБД)

Рисунок 51. Окно Источники данных (СУБД)

На странице источников данных выберите источник и нажмите кнопку Свойства или дважды щелкните по этому источнику в списке.

Свойства источника данных (СУБД)

Рисунок 52. Свойства источника данных (СУБД)

В панели настройки доступа к источнику данных выберите нужный вариант:

  • Нет доступа (не опубликован). Источник данных не опубликован – он не виден и не доступен никаким пользователям ZuluServer.

  • Общий доступ. Источник доступен всем пользователям. Если сервер работает в режиме публичного доступа, то источник доступен анонимным пользователям.

  • Зарегистрированные пользователи. Источник виден и доступен только зарегистрированным на этом сервере пользователям.

  • Пользователи и группы из списка. Источник виден и доступен только пользователям и группам пользователей, указанным в списке. Используйте кнопки Добавить и Удалить, чтобы редактировать этот список.


Активные соединения

Для просмотра списка активных подключений выберите в дереве объектов папку Активные соединения. Это окно отображает информацию о текущих активных соединениях клиентов с сервером.

В верхней части окна отображается:

  • Пользователей – количество подключенных пользователей.

  • Слоев – количество слоёв, загруженных пользователями.

  • Http запросов – количество HTTP запросов за текущие сутки.

Окно Активные соединения

Рисунок 53. Окно Активные соединения

В таблице выводится:

  • IP адрес – адрес, с которого произведено соединение. Так как с одного адреса может быть несколько соединений, то адреса в списке могут повторяться.

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

  • Время подключения – системное время сервера в момент установления данного соединения.

  • Время бездействия – время, прошедшее с момента последнего обращения к серверу через данное соединение.

  • Используется ресурсов – количество используемых соединением ресурсов сервера (слоев, проектов).

  • Версия клиента – версия ZuluGIS, используемая клиентом для подключения.

  • ID соединения.

  • Тип соединения.

Обновление списка соединений

Для обновления списка активных соединений следует нажать кнопку Обновить или включить опцию Автообновление и указать период обновления.

Отключение пользователя

Для отключения соединения нужно выделить его в списке активных соединений и нажать кнопку Отключить. Соединение будет разорвано, и произойдет автоматическое обновление списка соединений.

Ошибки сервера

В нижней части окна отображаются сообщения об ошибках при работе ZuluServer.

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

При повторном возникновении ошибок:

  1. Включите ведение журнала работы сервера (log). «Шаг 4. Журнал активности сервера»

  2. Отправьте .log файл специалистам технической поддержки.


Соединение с сервером в ZuluGIS

Особенности работы клиента со слоями ZuluServer также указаны в справке по ZuluGIS: https://www.politerm.com/zuludoc/index.html#layer_zuluserver.html.

Создание соединения

Для создания соединения клиента с сервером в ZuluGIS:

  1. Откройте диалог открытия слоя или открытия карты и в диалоге нажмите кнопку Серверы геоданных. В диалоге отобразится виртуальная папка со списком соединений.

    Окно Серверы геоданных

    Рисунок 54. Окно Серверы геоданных

  2. В папке соединений дважды щелкните по строчке Добавить/удалить соединение.

  3. В открывшейся панели Источники геоданных нажмите кнопку Добавить.

    Панель Источники геоданных

    Рисунок 55. Панель Источники геоданных

  4. Теперь в панели Источник данных задайте параметры соединения:

    Рисунок 56. Окно Соединения

    • В поле Название впишите название источника.

      Потом это имя будет появляться в папке списка соединений.

    • В поле Адрес укажите адрес сервера. Можно указывать доменное имя (например, zs.zulugis.ru), ip-адрес или сетевое имя компьютера.

    • В поле Порт указывается номер порта, на котором работает сервер (по умолчанию 6473).

    • В разделе Пользователь укажите способ авторизации на сервере: используя учетные сведения Windows или используя логин и пароль.

      Во втором случае сами логин и пароль задавать не обязательно – Zulu запросит их в момент соединения.

  5. Нажмите ОК и в панели Источники данных нажмите Закрыть.

Загрузка слоев с сервера

Для открытия в окне Zulu слоя, размещенного на сервере:

  1. Откройте диалог выбора слоя (меню Карта > Добавить слой) и в диалоге нажмите кнопку Серверы геоданных.

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

  3. Выберите требуемый слой.

Загрузка карты с сервера

Для открытия в окне Zulu карты, размещенной на сервере:

  1. Вызовите диалог открытия карты (меню Файл > Открыть > Карту...) и в диалоге нажмите кнопку Серверы геоданных.

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

  3. Выберите требуемую карту.


Работа с данными сервера через объектную модель ZuluGIS

Открытие слоя

Открытие слоя, расположенного на сервере, аналогично открытию локального слоя, только вместо файлового пути слоя задается URL, имеющий вид:

    zulu://login:password@host:port/dir/name.zl

  • zulu:// – протокол Zulu.

  • login – имя пользователя (может отсутствовать).

  • password – пароль для данного пользователя (если он указан).

  • host – IP-адрес сервера.

  • port – номер порта сервера.

  • dir – путь от корневого каталога области данных сервера до каталога, где расположен слой.

  • name – имя слоя.

  • .zl – расширение файлов описателей для серверных слоев Zulu (Zulu Layer)

Примеры

    Dim Layer1  As Layer

    'Создали слой- объект Layer
    Set Layer1 =  New Layer

    'Открыли слой на сервере
    Layer1.Open "zulu://192.168.0.1:6473/Piter/cells.zl"

    Dim Map1  As MapDoc

    'Создали карту- объект MapDoc
    Set Map1 = New MapDoc

    'Добавили в карту слой
    Map1.AddLayer "zulu://Alex:pass@Server_3:6473/Rastr/242908.zl"

Открытие карты

Открытие карты, расположенной на сервере, не отличается от открытия локальной карты, только вместо файлового пути карты задается URL, имеющий вид, аналогичный URL слоя:

    zulu://login:password@host:port/dir/name.zmp

Открытие проекта

Открытие проекта, расположенного на сервере, не отличается от открытия локального проекта, только вместо файлового пути проекта задается URL, имеющий вид, аналогичный URL слоя и карты:

    zulu://login:password@host:port/dir/name.zpr

Windows авторизация пользователя

Если используется Windows авторизация пользователя, то при открытии на сервере слоя, карты или проекта в качестве login следует указывать строку $winnt$ без пароля:

    zulu://$winnt$@host:port/dir/name.zmp


Веб-службы ZuluServer 2021

Веб-служба WMS позволяет отображать слои и карты сервера на клиентах, поддерживающих спецификации WMS, в частности: ZuluGIS, Google Earth, Google Api, Open Layers, Yandex Map, MapInfo, ArcGIS и многие другие.

Веб-служба WFS обеспечивает доступ к векторной и семантической информации сервера для клиентов, поддерживающих данную спецификацию. ZuluServer позволяет работать с данными сервера по спецификациям WMS 1.1.1, WMS 1.3.0 (Web Map Service) и WFS 1.0.0 (Web Feature Service) разработанными OGC (Open Geospatial Consortium).

Примеры использования ZuluServer 2021 в веб-приложениях можно посмотреть на нашем сайте: http://www.politerm.com/ogc/

[Предупреждение] Предупреждение

В текущей версии поддерживаются только http-запросы. Для организации работы с https-запросами можете использовать прозрачный обратный прокси-сервер.


WMS (OGC Web Map Service)

WMS (Web Map Service) – это стандартный протокол для работы через Интернет с географически привязанными изображениями, генерируемыми картографическим сервером, и получения семантической информации по запросам.

ZuluServer 2021 поддерживает протоколы WMS 1.1.1, WMS 1.3.0 организации Open Geospatial Consortium, протестирован на совместимость этим протоколам и имеет соответствующие сертификаты. Для настройки доступа по протоколам WMS к данным ZuluServer предназначена утилита публикации данных веб-служб ZsWsSetup.exe. Просмотр данных WMS возможен с помощью веб-браузера или различных ГИС («Просмотр данных по протоколам WMS и WFS»).

ZuluServer дает возможность построить WMS сервис на базе исходных пространственных и семантических данных, полученных из произвольного слоя или карты Zulu.

Чтобы настроить доступ по протоколам WMS к данным ZuluServer, следует использовать утилиту публикации данных веб-служб ZsWsSetup.exe или задать параметры в файле wms.xml («Файл публикации данных веб-службы (wms.xml)» , что позволяет:

  • Указать для сервера точку входа (URI http запроса) в WMS/WFS сервис (далее URI сервиса).

  • Указать серверу слой/карту для использования в WMS/WFS сервисе.

  • Указать служебные данные WMS/WFS сервиса (владелец, контакты и прочие).

  • Определить способы отображения возвращаемых данных (CSS стили отображения).

  • Настроить журнал входящих и исходящих запросов к серверу.

  • Настроить на сервере публикацию слоев в режиме тайл-сервера.

ZuluServer поддерживает следующие команды WMS:

  • GetCapabilities – запрос на получение xml файла с параметрами опубликованных на сервере данных. Например:

    http://zs.zulugis.ru:6473/ws?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

  • GetTile – запрос на получение конкретного тайла.

    Например:

    http://zs.zulugis.ru:6473/ws?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:3857&WIDTH=1631&HEIGHT=903&LAYERS=world%3Aworld&TRANSPARENT=TRUE&FORMAT=image/png&BBOX=-4596331.232224672101,248512.933675369510,12717520.547739554197,9834293.532883029431&STYLES=&BGCOLOR=0xffffff


WFS (OGC Web Feature Service)

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

ZuluServer 2021 поддерживает протоколы WFS 1.0.0, WFS 1.1.0 организации Open Geospatial Consortium (http://www.opengeospatial.org/standards/wfs), протестирован на совместимость этим протоколам и имеет соответствующие сертификаты. Для настройки доступа по протоколам WFS к данным ZuluServer предназначена утилита публикации данных веб-служб ZsWsSetup.exe (Утилита публикации данных веб-служб (ZsWsSetup)). Просмотр данных возможен с помощью веб-браузера или различных ГИС («Просмотр данных по протоколам WMS и WFS»).


WMTS (OpenGIS Web Map Tile Service)

Web Map Tile Service (WMTS) – протокол, разработанный организацией Open Geospatial Consortium, Inc. (OGC), является открытой спецификацией для публикации в сети цифровых карт с использованием кэшированных изображений.

ZuluServer поддерживает спецификацию OGC WMTS http://www.opengeospatial.org/standards/wmts (только для проекций EPSG:3857 и 4326).

Подробнее о работе в режиме тайл сервера Работа в режиме Tile-сервера.

ZuluServer поддерживает следующие команды WMTS:

  • GetCapabilities – запрос на получение xml файла с параметрами опубликованных на сервере данных. Например:

    http://zs.zulugis.ru:6473/ws?service=WMTS&request=GetCapabilities

  • GetTile – запрос на получение конкретного тайла.

    Например:

    http://zs.zulugis.ru:6473/ws?SERVICE=WMTS&REQUEST=GETTILE&TileMatrix=2&TileRow=1&TileCol=2&layer=world_3857&FORMAT=image/png&Style=default&TileMatrixSet=EPSG:3857&version=1.0.0


ZWMTS (Zulu Web Map Tile Service)

ZuluServer поддерживает собственную упрощенную спецификацию ZWMTS. Подробнее о работе в режиме тайл сервера: Работа в режиме Tile-сервера.

ZuluServer поддерживает два запроса ZWMTS:

  • GetCapabilities – запрос на получение xml файла с параметрами данных, опубликованных на сервере. Запрос имеет следующий формат: http://<имя сервера или ip адрес>:<порт zulu server>/<URI сервиса>?service=ZWMTS&request=GetCapabilities

    Например:

    http://zs.zulugis.ru:6473/ws?service=ZWMTS&request=GetCapabilities

  • GetTile – запрос на получение конкретного тайла. Запрос имеет следующий формат: http://<имя сервера или ip адрес>:<порт zulu server>/<URI сервиса>?service=ZWMTS&request=GetTile&x=<X>&y=<Y>&z=<Z>&layer=<Имя слоя>&model=xyz

    Например:

    http://zs.zulugis.ru:6473/ws?service=ZWMTS&request=GetTile&layer=world_3857&z=4&x=8&y=5


ZWS (Zulu Web Service)

Zulu Web Service – собственный протокол ZuluServer для общения с клиентами по HTTP протоколу.

Большинство команд являются POST запросами HTTP.

В качестве ответа могут прийти бинарные данные или ответ в формате XML.

Общая схема команд ZWS: ZWSCommands.xsd

Таблица 7. Примеры использования протокола ZWS

OpenLayers | http://zs.zulugis.ru:6473/examples/openlayers.html
Leaflet | http://zs.zulugis.ru:6473/examples/leaflet.html
Yandex API | http://zs.zulugis.ru:6473/examples/yandex.html
Получение тайла (GET) | http://zs.zulugis.ru:6473/examples/getlayertile.get.html
Получение тайла (POST) | http://zs.zulugis.ru:6473/examples/getlayertile.post.html
Получение списка слоев (POST) | http://zs.zulugis.ru:6473/examples/getlayerlist.html

Публикация данных для доступа по протоколам WMF/WFS выполняется в утилите публикации данных для веб-служб ZsWsSetup.exe. Общий порядок публикации:

  • «Публикация Карты по WMS»

  • «Публикация Слоя по ZWS»


Файл публикации данных веб-службы (wms.xml)

Структура wms.xml

Файл публикации данных веб-службы wms.xml должен иметь следующую структуру:

Рисунок 57. Структура wms.xml

[Предупреждение] Предупреждение

wms.xml должен располагаться в одной папке с ZuluServ.exe.

Каждому блоку схемы ставится в соответствие узел (тэг) в xml документе.

На схеме выше, соответственно представлены корневые узлы документа:

  • zulu-server – корень документа;

  • public-layers – содержит опубликованные слои, доступ к слоям может осуществляться по спецификациям WMS, WFS, ZWS. Структура раздела подробно: «Структура public-layers»;

  • public-tiles – содержит опубликованные тайловые слои. Структура раздела подробно: «Структура public-tiles»;

  • tracking-layers – содержит опубликованные слои для записи треков. Структура раздела подробно: «Структура tracking-layers»;

  • serviceuri – URI сервиса;

  • free-namespaces – содержит список пустых слоев, данные (ресурс) для которых не назначены;

  • wms-module – содержит служебные данные и настройки wms сервиса.

  • css-classes – содержит объявления css стилей для их подключения в wms слоях;

  • wfs-module – содержит служебные данные и настройки wfs сервиса аналогично wms-module.

На примере ниже общий вид документа:

#Фрагмент файла wms.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<zulu-server>
    <public-layers>
        <layer>
            <quick-namespace>
            <namespace>
            <resource>
            <wms>
            <wfs>
            <zws>
        </layer>
        <layer>
    </public-layers>
    <public-tiles>
    <serviceuri>
    <free-namespaces>
    <wms-module>
        <Service>
            <Name>
            <Title>
            <Abstract>
            <KeywordList/>
            <ContactInformation>
            <Fees>
            <AccessConstraints>
        </Service>
        <log traffic=""/>
    </wms-module>
    <css-classes/>
</zulu-server>

Структура public-layers

  • «Раздел public-layers/layer/WMS »

  • «Раздел public-layers/layer/WFS»

  • «Раздел public-layers/layer/ZWS»

Раздел public-layers конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 58. Структура public-layers

public-layers имеет следующую структуру:

  • quick-namespace – ссылка на пространство имен;

  • namespace – идентификатор пространства имен;

  • resource – путь к файлу слоя/карты;

  • wms – узел, описывающий OGC WMS Layer в рамках спецификации Web Map Service (http://www.opengeospatial.org/standards/wms). Подробнее можно узнать «Раздел public-layers/layer/WMS ».

  • wfs – узел, описывающий OGC WFS Feature в рамках спецификации Web Feature Service (http://www.opengeospatial.org/standards/wfs). Подробнее можно узнать «Раздел public-layers/layer/WFS».

  • zws – узел, описывающий OGC WFS Feature в рамках спецификации ZWS. Подробнее можно узнать «Раздел public-layers/layer/ZWS».

Пример описания layer целиком:

#Фрагмент файла wms.xml

          <layer>
            <quick-namespace>
                Seti
            </quick-namespace>
            <namespace>
                Seti
            </namespace>
            <resource>
                E:\Moskow\electrostal\vodootvedenie.b00
            </resource>
            <wms>
                <name>
                    Drain
                </name>
                <title>
                    Drain
                </title>
                <css>

                </css>
                <queryable>
                    1
                </queryable>
                <antialiasing>
                    1
                </antialiasing>
            </wms>
            <wfs>
                <types>
                    <type-id>
                        1
                    </type-id>
                    <type-id>
                        2
                    </type-id>
                </types>
                <name>
                    seti_db
                </name>
                <title>
                    база Drain
                </title>
                <srs>
                    EPSG:4326
                </srs>
            </wfs>
            <zws>
                <name>
                    hydro
                </name>
                <title>
                    hydro
                </title>
            </zws>
        </layer>

Раздел public-layers/layer/WMS

Раздел public-layers/layer/WMS конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 59. Раздел public-layers/layer/WMS

Раздел public-layers/layer/WMS имеет следующую структуру:

  • name – имя WMS Layer (служебное, задается латинскими буквами);

  • title – пользовательское имя элемента WMS;

  • css – идентификатор css стиля;

  • queryable – признак того, что к слою можно выполнять запросы (просматривать информацию);

  • antialiasing – признак сглаживания;

  • styles – список стилей;

    style – элемент Style в рамках спецификации Web Map Service;

Пример описания public-layers/layer /WMS целиком:

#Фрагмент файла wms.xml

            <wms>
                <name>
                    Doma
                </name>
                <title>
                    Здания
                </title>
                <css>

                </css>
                <queryable>
                    0
                </queryable>
                <antialiasing>
                    1
                </antialiasing>
            </wms>

Раздел public-layers/layer/WFS

Раздел public-layers/layer/WFS конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 60. Раздел public-layers/layer/WFS

Раздел public-layers/layer/WFS имеет следующую структуру:

  • types – идентификаторы типов в структуре слоя с общей базой данных Zulu;

  • name – имя WFS Feature (служебное, задается латинскими буквами);

  • title – пользовательское имя элемента WFS;

  • srs – пространственная система (Spatial Reference System в рамках спецификации OGC), задается WFS элементу.

Пример описания public-layers/layer /WFS целиком:

#Фрагмент файла wms.xml

            <wfs>
                <types>
                    <type-id>
                        1
                    </type-id>
                    <type-id>
                        2
                    </type-id>
                </types>
                <name>
                    seti_db
                </name>
                <title>
                    база Drain
                </title>
                <srs>
                    EPSG:4326
                </srs>
            </wfs>

Раздел public-layers/layer/ZWS

Раздел public-layers/layer/ZWS конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 61. Раздел public-layers/layer/ZWS

Раздел public-layers/layer/ZWS имеет следующую структуру:

  • types – идентификаторы типов в структуре слоя с общей базой данных Zulu;

  • name – имя WFS Feature (служебное, задается латинскими буквами);

  • title – пользовательское имя элемента WFS;

  • srs – пространственная система (Spatial Reference System в рамках спецификации OGC), задается WFS элементу.

Пример описания public-layers/layer /ZWS целиком:

#Фрагмент файла wms.xml

            <zws>
                <name>
                    hydro
                </name>
                <title>
                    hydro
                </title>
            </zws>

Структура public-tiles

Раздел public-tiles конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 62. Структура public-tiles

public-tiles имеет следующую структуру:

  • name – имя тайлового слоя;

  • resource – путь к файлу тайлового слоя;

Пример описания public-tiles целиком:

#Фрагмент файла wms.xml

<public-tiles>
        <tile>
            <name>
                mo_tiles
            </name>
            <resource>
                D:\zsdata\data\Tiles\mo_tiles.zww
            </resource>
        </tile>
</public-tiles>

Структура tracking-layers

Структура tracking-layers конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 63. Структура tracking-layers

tracking-layers имеет следующую структуру:

  • name – имя тайлового слоя;

  • resource – путь к файлу тайлового слоя;

Пример описания tracking-layers целиком:

#Фрагмент файла wms.xml

<tracking-layers>
        <layer>
            <name>
                tracking
            </name>
            <resource>
                d:\zsdata\data\zws\mobile\TrackingObjects1.zl
            </resource>
        </layer>
    </tracking-layers>

Структура wms-module

Раздел wms-module конфигурационного файла wms.xml должен иметь следующую структуру:

Рисунок 64. Структура wms-module

  • Service – служебные данные;

  • Name – имя сервиса;

  • Title – словесное описание сервиса;

  • Abstract – краткий обзор;

  • KeywordList – список ключевых слов;

  • AccessConstraints – ограничения доступа;

  • Fees – указание о платности/бесплатности сервиса;

  • ContactInformation – контактные данные;

  • log – настройки журнала.

    #Фрагмент файла wms.xml
<log traffic="in,out" file="D:\wms\wms.log" />

    Атрибут traffic определяет журнал. Он может принимать следующие значения:

    Таблица 8. Значения аттрибута traffic

    Значение

    Описание

    in

    Журнал ведется для входящих запросов.

    out

    Журнал ведется для ответов.

    in,out

    В журнал записываются запросы и ответы.

Пример описания wms-module целиком:

#Фрагмент файла wms.xml

    <wms-module>
        <Service>
            <Name>
                Вебсервер ООО Политерм
            </Name>
            <Title>
                WMS сервер
            </Title>
            <Abstract>
                Официальный геосервер ООО Политерм
            </Abstract>
            <KeywordList>
                <Keyword>ГИС</Keyword>
                <Keyword>Инженерные задачи</Keyword>
                <Keyword>Теплогидравлические расчеты</Keyword>
    </KeywordList>
            <ContactInformation>
                <ContactPersonPrimary>
                    <ContactPerson>
                        Иванов
                    </ContactPerson>
                    <ContactOrganization>
                        ООО Политерм
                    </ContactOrganization>
                </ContactPersonPrimary>
                <ContactPosition>
                    Вед. специалист
                </ContactPosition>
                <ContactAddress>
                    <AddressType>

                    </AddressType>
                    <Address>
                        ул.Ворошилова 33 лит а3
                    </Address>
                    <City>
                        СПБ
                    </City>
                    <StateOrProvince>
                        Ленинградская область
                    </StateOrProvince>
                    <PostCode>
                        192007
                    </PostCode>
                    <Country>
                        Россия
                    </Country>
                </ContactAddress>
                <ContactVoiceTelephone>
                    812 7670352
                </ContactVoiceTelephone>
                <ContactFacsimileTelephone>
                    812 7670352
                </ContactFacsimileTelephone>
                <ContactElectronicMailAddress>
                    politerm@politerm.com
                </ContactElectronicMailAddress>
            </ContactInformation>
            <Fees>
                NONE
            </Fees>
            <AccessConstraints>
                1
            </AccessConstraints>
        </Service>
        <log traffic="in,out"
         file="C:\Program Files (x86)\Zulu 8.0\LOG\WMSlog\wms.log"/>
    </wms-module>

Структура wfs-module

Рисунок 65. Структура wfs-module

wfs-module имеет структуру и назначение функциональных элементов, идентичную wms-module.


Утилита публикации данных (ZSDataPrepare)

Утилита публикации данных Публикация данных для ZuluServer 2021 (ZSDataPrepare.exe) предназначена для подготовки локальных данных ZuluGIS к их использованию на сервере ZuluServer – публикации слоев и карт на сервере. Утилита входит в состав ZuluServer и располагается в том же каталоге, где установлен ZuluServer (и в меню Пуск).

[Внимание] Внимание

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

Если вы хотите работать с вашими данными в ZuluGIS Online и ZuluGIS Mobile, то следует опубликовать слои по протоколу ZWS. Это выполняется в утилите публикации данных для веб-служб ZsWsSetup.exe (подробнее смотрите раздел «Публикация Слоя по ZWS»).

Утилита публикации позволяет делать доступными для клиентов слои, карты и проекты, размещенные на компьютере, где установлен сервер. При этом сами данные не изменяются. Создаются только дополнительные файлы с расширением .ZL, ссылающиеся на реальные данные.

  • Для выбранных слоев в области данных сервера создаются файлы-описатели слоев.

  • Для каждого слоя, входящего в выбранный файл карты, в области данных сервера создаются описатели слоев и новый файл карты, содержащий все настройки исходной карты и ссылающаяся не на исходные слои, а на созданные для них описатели.

  • Для каждого выбранного файла проекта в области данных сервера создается новый файл проекта. Для каждой карты, входящей в исходный проект, создается новая карта, содержащая ссылки на созданные описатели слоев, входящих в исходную карту.

[Примечание] Примечание

Особенности работы клиента со слоями ZuluServer также указаны в справке по ZuluGIS: http://politerm.com.ru/zuludoc/layer_zuluserver.htm.

Область данных сервера находится в корневом каталоге данных сервера и любых его подкаталогах. Корневой каталог данных сервера указан в конфигурационном файле ZuluServ.cfg в переменной RootDir. Если в конфигурации каталог не указан, то по умолчанию в качестве него принимается подкаталог Data каталога, где установлен сервер.

Окно Публикации данных

Рисунок 66. Окно Публикации данных


Каталог для записи

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


Путь к слою в описателе

При публикации данных в описателях .ZL указывается путь к слою (.b00, .zrs, .zrg, и т.д.). Он может быть абсолютным или относительным в зависимости от организации доступа и удобства работы с данными.

Абсолютный путь – это путь, который указывает на одно и то же место в файловой системе вне зависимости от текущей рабочей директории. Этот способ позволяет хранить данные ZuluServer вне корневой директории RootDir. Если путь абсолютный, а описатель скопирован, то путь к данным не меняется.

Пример абсолютного пути
D:\MyMaps\Example.b00

Относительный – в описателе .ZL указывается путь к данным (например, к файлам .b00) относительно расположения самого файла описателя. Этот способ позволяет легко переносить данных между директориями внутри папки области данных RootDir, если при копировании отношение между .b00 и .zl сохранится.

Пример относительного пути
..\..\MyMaps\Example.b00

Авто – выбирает автоматически относительный или абсолютный путь в зависимости от расположения данных относительной папки области данных RootDir.

  • Данные хранятся внутри RootDir папки области данных

    В этом случае в описателе .ZL указывается относительный путь.

  • Данные хранятся вне папки области данных RootDir.

    В этом случае в описателе .ZL указывается абсолютный путь.


Перезапись описателей

При публикации данных идёт проверка уже существующих описателей (.ZL файлов), и в таком случае открывается диалог со списком перезаписываемых файлов.

Окно со списком перезаписываемых файлов

Рисунок 67. Окно со списком перезаписываемых файлов


Слои

В этой вкладке можно выбрать один или несколько слоев и создать их описатели в выбранном каталоге для записи.

Рисунок 68. Публикация слоя

Таблица 9. Описание кнопок

Выбрать слои | Вызывает диалог выбора слоев. Выбранные слои отображаются в списке. Для выбора слоев из разных каталогов компьютера можно вызывать команду выбора слоев нужное количество раз.
Исключить | Редактирует список выбранных слоев, исключая из списка выделенную строку.
Очистить | Очищает список выбранных слоев.
Создать | Создает описатели для слоев из списка в каталоге, выбранном для записи.

Пример:
Каталог для записи: D:\ZuluData\SPB
Исходный слой: d:\RU-SPB\building-polygon.b00

Созданный файл описатель:
D:\ZuluData\SPB\building-polygon.zl

Содержание файла описателя:
Path: d:\RU-SPB\building-polygon.b00


Карты

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

Рисунок 69. Публикация карты

Таблица 10. Описание кнопок

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

Пример 1:
Каталог для записи: D:\ZuluData\SPB
Опция "Помещать слои в подкаталог карты": отключена
Исходная карта: d:\RU-SPB\SPB.zmp
Слой 1 карты: d:\RU-SPB\building-polygon.b00
Слой 2 карты: d:\RU-SPB\highway-line.b00

Созданный файл карты:
D:\ZuluData\SPB\SPB.zmp
Описатель слоя 1:
D:\ZuluData\SPB\building-polygon.zl
Описатель слоя 2:
D:\ZuluData\SPB\highway-line.zl

Пример 2:
Каталог для записи: D:\ZuluData
Опция "Помещать слои в подкаталог карты": включена
Исходная карта:  d:\RU-SPB\SPB.zmp
Слой 1 карты: d:\RU-SPB\building-polygon.b00
Слой 2 карты: d:\RU-SPB\highway-line.b00

Созданный файл карты:
D:\ZuluData\SPB.zmp
Описатель слоя 1:
D:\ZuluData\SPB\building-polygon.zl
Описатель слоя 2:
D:\ZuluData\SPB\highway-line.zl


Проекты

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

Рисунок 70. Публикация проекта

Таблица 11. Описание кнопок

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


Публикация слоя с помощью копирования

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

[Примечание] Примечание

Видеоурок по копированию слоя можно посмотреть, пройдя по ссылке: https://www.politerm.com/videos/layerstruct/layer_copy/.

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

  1. В меню Слой выберите команду Скопировать…. Откроется диалог копирования слоя.

    Диалог копирования слоя

    Рисунок 71. Диалог копирования слоя

  2. В поле со списком Исходный слой выберите слой для копирования. В том случае, если слой находится в текущей карте, выберите его из открывающегося списка; если же слой находится на диске, воспользуйтесь кнопкой Обзор....

  3. Чтобы скопировать не все объекты слоя, выделите группу объектов и во время копирования установите флажок Только выделенные.

  4. Для наследования ключей при копировании группы (ID объектов не изменятся) следует установить опцию Наследовать ключи.

  5. В том случае, если требуется уменьшить время копирования или трафика или размер архива, можно скопировать базу данных слоя без данных в полях BLOB; для этого следует установить опцию Без BLOB.

  6. В строке имя задайте полный путь к новому файлу слоя; для этого воспользуйтесь кнопкой Обзор….

  7. В поле название укажите пользовательское название для нового слоя.

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

  9. Выберите требуемый вариант копирования:

    • Графику и таблицы – при выборе данного варианта будет скопирована вся информация слоя, включая графику и базу данных со всей внесенной ранее информацией.

    • Только графику – копируется только графическая информация без баз данных.

    • Только структуру – копируется только структура слоя.

  10. Если необходимо поменять источник данных для хранения табличной информации (например, из SQLite в SQL LocalDB), выберите новый из списка Источник для таблиц.

  11. Для автоматического добавления в текущую карту нового слоя установите флажок Добавить в карту.

  12. Нажмите кнопку ОК чтобы начать процесс копирования.

Данные в результате будут скопированы на сервер, и к ним будет добавлен файл-описатель с расширением *.zl, содержащим путь до скопированного файла. При этом путь будет указан относительный. Например, в результате копирования слоя, представленного на рисунке выше, содержимое файла *.zl будет таким:

Файл описатель .zl

Рисунок 72. Файл описатель .zl

Это означает, что файл слоя находится в той же папке, что и файл-описатель.

[Примечание] Примечание

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


Утилита публикации данных веб-служб (ZsWsSetup)

Утилита Публикация данных для веб-служб ZuluServer 2021 позволяет задавать основные настройки веб-служб ZuluServer, публиковать слои и карты, а также управлять слоями и картами, опубликованными в веб-службах.

Публикация данных для веб-служб ZuluServer 2021 позволяет:

  • Настроить информацию о службах WMS/WFS – так как веб-службы публикуются в сети, то служба содержит данные о сервисе и контактные данные, которые вы можете отредактировать. Подробнее смотрите «Настройка информации о службах WMS/WFS».

  • Настроить веб-публикацию слоев или карт по протоколам:

    • WMS – позволяет предоставлять доступ к данным ZuluGIS клиентам, поддерживающим WMS спецификации, в частности, Google API, OpenLayers, Leaflet, Yandex Maps, MapInfo, ArcGIS, Google Earth и т.д.

    • WFS – позволяет предоставлять доступ к данным ZuluGIS клиентам, поддерживающим WFS спецификации.

    • ZWS – разработан специалистами нашей компании, предоставляет наибольшие возможности публикации в веб и работы с данным ZuluGIS (по сравнению с другими протоколами), а также позволяет работать с опубликованными данными с помощью ZuluGIS Mobile и ZuluGIS Online.

  • Настроить публикацию слоев в режиме тайл сервера по протоколу WMTS Open Geospatial Consortium, Inc. (OGC) или по более упрощенному ZWMTS, разработанному для ZuluServer.

  • Создать и управлять настройками слоев трекинга.

Утилита Публикация данных для веб-служб ZuluServer 2021 устанавливается вместе с ZuluServer, для запуска вы можете воспользоваться меню Пуск или запустить файл ZsWsSetup.exe из папки, где установлен ZuluServer.

[Внимание] Внимание

Следует запускать с правами администратора.

Интерфейс Публикация данных для веб-служб ZuluServer 2021 выполнен в виде «проводника». Слева расположено дерево разделов. При выделении нужного раздела в дереве разделов справа отображается страница свойств, касающихся выделенного раздела.

[Подсказка] Подсказка

Все заданные пользователем настройки сохраняются в файле публикации данных веб-служб wms.xml, расположенном в папке с ZuluServer.

Утилита публикации данных веб-службы ZuluServer и пример настроек публикации слоя

Рисунок 73. Утилита публикации данных веб-службы ZuluServer и пример настроек публикации слоя


Общие вопросы настройки веб-служб

При настройке веб-служб следует учитывать принцип вложенности: редактирование одного узла затрагивает все дочерние узлы. Это значит, к примеру, что при удалении элемента WMS удаляются стили, объявленные в нем. При удалении слоя-ссылки удаляются все WMS и WFS элементы, объявленные в рамках этого слоя-ссылки. При удалении пространства имен удаляются по цепочке:

  • слои-ссылки, объявленные в нем;

  • WMS и WFS элементы, объявленные во рамках каждого дочернего слоя-ссылки;

  • стили, объявленные в WMS элементах.

При настройке веб-служб также следует понимать принцип ссылки: действия со ссылками не влекут за собой изменения объекта, но изменения в объекте влияют на ссылки. Это значит, к примеру, что при удалении слоев-ссылок с реальными данными (слоями/картами Zulu) ничего не произойдет. Они всего лишь станут недоступными для веб-служб. Однако, если, к примеру, в слое изменился тип, и объявленный ранее в wms.xml тип отсутствует, то данные будут недоступны. Все изменения данных будут немедленно отражаться на веб-службах, поэтому следует аккуратно следить за актуальностью настроек WMS/WFS. После файловых операций со слоями/картами, используемыми в качестве данных для WMS/WFS (перенесения, удаления), требуется перенастройка служб.

Публикация веб-данных выполняется в утилите Публикация данных для веб-служб ZuluServer 2021 (ZsWsSetup.exe). Общий порядок публикации смотрите в разделах:

  • Публикация слоя по протоколу ZWS

  • Публикация всех слоев карты по ZWS

  • «Публикация Карты по WMS»


URI веб-служб

Так как ZuluServer имеет смешанное назначение, при использовании WMS/WFS служб в запросе необходимо задавать префикс – URI службы. URI службы, будучи помещенным в тело запроса, явно сигнализирует серверу о том, что такой запрос должен быть обработан WMS или WFS службой сервера.

Для WMS/WFS служб используется значение URI ws, а для ZWS службы – zws.

Ниже представлены примеры запросов к веб-службам с разными URI.

  • Таким образом будет выглядеть запрос к WMS службе по умолчанию:

    http://localhost:6473/ws?service=WMS&version=1.1.1&request=GetCapabilities;

    http://localhost:6473/ws?service=WMS&amp;version=1.1.1&amp;request=GetCapabilities;

Следует также подчеркнуть, что при запросе требуемый URI службы необходимо указывать как в случае использования GET метода, так и при использовании POST метода. Запрос с URI отличным от начального (в случае если иной не указан) или указанного в настройках будет проигнорирован.


Настройка информации о службах WMS/WFS

WMS/WFS службы предназначены преимущественно для построения веб-решений. Обычно такие службы размещаются в интернете, поэтому служба содержит данные о сервисе и контактные данные. Эти данные получит клиент при запросе документа, описывающего возможности (capabilities) соответствующего сервиса.

Для задания таких данных в утилите Настройка WMS/WFS ZuluServer 2021 предусмотрены два раздела:

  • Настройки WMS.

  • Настройки WFS.

Переход по разделам осуществляется кликом в левой части окна: Настройки WMS и Настройки WFS.

Также в каждом из этих разделов есть возможность задать файл журнала для входящего и исходящего трафика.

После заполнения формы с данными обязательно надо сохранить настройки через меню Файл|Сохранить или панель инструментов Сохранить.

Рисунок 74. Настройки WMS


Tile-сервер

В разделе Tile-сервер выполняется настройка слоёв, публикуемых в режиме тайл-сервера. После публикации доступ к данным возможен одновременно по двум протоколам: WMTS («WMTS (OpenGIS Web Map Tile Service)») и ZWMTS («ZWMTS (Zulu Web Map Tile Service)»). Подробнее можно узнать в соответствующем разделе: Работа в режиме Tile-сервера

Вкладка Tile-сервер в утилите ZsWsSetup

Рисунок 75. Вкладка Tile-сервер в утилите ZsWsSetup


Слои трекинга

ZuluServer предоставляет доступ и используется для хранения слоев трекинга. С помощью ZuluServer организуется работа слоя трекинга, при этом поддерживается одновременная работа с несколькими опубликованными слоями трекинга. Утилита публикации данных веб-служб позволяет создавать и управлять слоями трекинга: добавлять, изменять и удалять их.

[Примечание] Примечание

Слой трекинга – специальный слой для хранения и отображения текущего положения и маршрутов объектов. Подробнее смотрите раздел ZuluGIS: Слой трекинга.

По умолчанию в качестве базы данных для слоя трекинга используется MS SQL LocalDВ (вы можете легко перенести данную базу на MS SQL Server). Возможно использование СУБД Oracle; для этого потребуется самостоятельно подготовить базу данных для трекинга (подробнее вы можете узнать, связавшись с отделом технической поддержки).

Для обмена информацией с ZuluServer используются следующие HTTP запросы:

  • TrackingGetLayerList (ZWS)

  • TrackingRegisterDevice (ZWS)

  • TrackingSetPosition (ZWS)

  • TrackingGetInfoByXY (ZWS)

  • TrackingGetVector (ZWS)

[Примечание] Примечание

При публикации слоя трекинга в файле данных веб-служб wms.xml создаётся соответствующая ему запись. Подробнее смотрите раздел: «Файл публикации данных веб-службы (wms.xml)»


Управление слоями трекинга

Утилита публикации данных веб-служб позволяет создавать слои трекинга и управлять ими.

Для создания (добавления) слоя трекинга:

  1. Запустите утилиту публикации данных веб-служб.

  2. Выберите пункт [image] Трекинг в дереве в левой части окна.

    Утилита публикации данных для веб-служб. Пункт Трекинг

    Рисунок 76. Утилита публикации данных для веб-служб. Пункт Трекинг

  3. Нажмите кнопку Создать в правой части окна.

    [Подсказка] Подсказка

    Для добавления существующего слоя с диска нажмите кнопку Добавить и укажите путь до слоя трекинга.

    Для удаления слоя из списка слоев используйте кнопку Удалить.

  4. В появившемся диалоге нажмите кнопку Обзор... и укажите путь для сохранения слоя трекинга.

    Создание слоя трекинга

    Рисунок 77. Создание слоя трекинга

  5. Введите Имя слоя трекинга, отображаемое в утилите публикации.

  6. Укажите пользовательское название слоя трекинга.

  7. Нажмите кнопку ОК для того, чтобы началось создание слоя трекинга.

После успешного создания слой отобразится в окне утилиты публикации в списке слоев (Рисунок 78, «Список слоев трекинга»).

Теперь вы можете использовать ZuluGIS Mobile и ZuluGIS для дальнейшей работы с созданным слоем: включить отправку текущего местоположения устройства на сервер, настроить отображение текущего положения и треков и так далее.

Список слоев трекинга

Рисунок 78. Список слоев трекинга


Пространства имен

Публикуемые данные веб-служб (слои, карты, ...) находятся в рамках именованной структурной области – пространства имен.

[Примечание] Примечание

Пространство имен – это некое абстрактное объединение опубликованных слоев по какому-то признаку (один и тот же город, проект, область и т.д.). Например, для демонстрационных примеров пространство имен можно назвать examples.

Допустимыми в имени являются латинские буквы, арабские цифры и символ "_".

Имя пространства имен должно уникально в рамках ZuluServer. Например, если создать пространство имен examples, то это имя уже будет "занято", и повторно создать пространство имен с таким же именем не получится.

Имена слоев внутри одного пространства имен уникальные. В одном пространстве имен не может быть слоев с одинаковым именем.

Пространства имен управляются, создаются и редактируются через страницу утилиты Публикация данных для веб-служб ZuluServer 2021. Для перехода в этот раздел нужно кликнуть в узле дерева Пространства имен. Подробно о пространствах имён и их настройке смотрите в разделе: «Настройка пространства имен».

Управление пространствами имен

Рисунок 79. Управление пространствами имен


Настройка пространства имен

Публикуемые данные веб-служб (слои, карты, ...) находятся в рамках именованной структурной области – пространства имен.

[Примечание] Примечание

Пространство имен – это некое абстрактное объединение опубликованных слоев по какому-то признаку (один и тот же город, проект, область и т.д.).

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

Имена слоев внутри одного пространства имен уникальные. В одном пространстве имен не может быть слоев с одинаковым именем.

Пространство имен содержит в себе один или несколько слоев.

Слой представляет собой промежуточную структурную единицу, ссылающуюся на реальные данные, такие как слой или карта Zulu. Слой обязан ссылаться на карту или на слой Zulu и не может ссылаться одновременно на более чем одну единицу с данными.

Наконец слой содержит в себе конечные публичные элементы веб-служб – WMS Layer и/или WFS Feature. В свою очередь группа WMS представляет собой опубликованные WMS Layer элементы. Возможности и поведение слоя зависят от того, на что он ссылается. Если слой ссылается на карту Zulu, то он может содержать только элементы WMS Layer. Если же слой ссылается на слой Zulu, то в этом случае он может содержать как элементы WMS Layer, так и WFS Feature. Если слой ссылается на неактуальные данные (например, файлы были перенесены или переименованы), то зависимые от него элементы (WMS Layer и WFS Feature) на момент их использования будут недоступны. Устройство системы накладывает ограничение на названия пространств имен, слоев, WMS Layer и WFS Feature элементов – они должны быть уникальными. Все структурные элементы кроме слоев и карт с данными представляют собой ссылки и являются записями в конфигурационном файле wms.xml («Файл публикации данных веб-службы (wms.xml)»).

Из указанной структуры данных следуют два общих сценария размещения данных в веб-службах:

  1. Публикация WMS Layer элемента

    Для того чтобы опубликовать WMS Layer элемент, требуется:

    1. Создать пространство имен.

    2. В пространстве имен создать слой, который будет ссылаться на слой или карту Zulu.

    3. Создать WMS Layer элемент в рамках ранее созданного слоя-ссылки.

  2. Публикация WFS Feature элемента

    Для того чтобы опубликовать WFS Feature элемент, требуется:

    1. Создать пространство имен

    2. В пространстве имен создать слой, который будет ссылаться на слой Zulu.

    3. Создать WFS Feature элемент в рамках ранее созданного слоя-ссылки.

WMS Layer элементы могут быть стилизованными. Для этого в спецификации OGC WMS предусмотрено понятие Style – стиль карты. К WMS Layer при объявлении опционально подключаются Style элементы. Если в WMS слое объявлены стили, то слои можно запрашивать, указывая стили.

Слой Zulu содержит в себе тематические раскраски и надписи. Стилизация осуществляется путем связывания комбинации необходимых тематических раскрасок и стилей в структурной именованной области- Style. Таким образом, в WMS Layer создается Style, ссылающийся на тематические раскраски и стили, которые должны быть активированы при запросе. В случае отсутствия у Zulu слоя тематических раскрасок или подписей создать Style не представляется возможным. Подробнее о стилях можно узнать в соответствующем разделе.


Управление пространствами имён

  • «Управление WMS Layer элементами»

  • «Управление WFS Feature элементами»

  • «Управление Style элементами»

Для создания слоя предварительно требуется создать пространство имен. Операции со слоями осуществляются на вкладке Управление слоями пространства имен. Для перехода в этот раздел надо кликнуть на Пространства имен в дереве слева (Рисунок 80, «Управление пространствами имен»).

Управление пространствами имен

Рисунок 80. Управление пространствами имен


Создание пространства имен

Для создания пространства имён следует:

  1. Перейти на страницу Управление пространствами имен.

  2. Нажать кнопку Добавить.

  3. В появившемся диалоге Пространство имен задать имя. Имя произвольно задается уникальной строкой латинскими буквами с учётом регистра.

    Диалог Пространство имен

    Рисунок 81. Диалог Пространство имен

  4. Нажать OK. Далее можно создавать слои внутри пространства имен.

    Диалог Управление слоями пространства имён

    Рисунок 82. Диалог Управление слоями пространства имён


Редактирование пространства имен

  1. Перейти на страницу Управление пространствами имен.

  2. Выбрать пространство имен из списка.

  3. Нажать кнопку Изменить.

  4. В появившемся диалоге Пространство имен отредактировать имя.

  5. Нажать OK.


Удаление пространства имен

  1. Перейти на страницу Управление пространствами имен.

  2. Выбрать пространство имен из списка.

  3. Нажать Удалить.


Создание слоя внутри пространства имен

  1. Перейти на страницу Управление пространствами имен.

  2. Нажать кнопку Добавить. Откроется окно Слой.

  3. Нажать Удалить.


Управление WMS Layer элементами

Для создания WMS Layer элемента предварительно требуется создать слой, ссылающийся на карту или слой Zulu. Операции с WMS Layer осуществляются через вкладку Публикация WMS и WFS Данных. Для перехода в этот раздел надо кликнуть на имени слоя в дереве слева.

Добавление слоя в пространство имён

Рисунок 83. Добавление слоя в пространство имён

Диалог Слой WMS

Рисунок 84. Диалог Слой WMS

Операции создания и редактирования WMS Layer производятся через диалог Слой WMS. В таблице представлено описание параметров диалога:

Таблица 12. Параметры диалога WMS Layer

Параметр | Описание
Имя | Произвольный, обязательный, уникальный параметр, обозначающий служебное имя WMS Layer. Задается латинскими буквами в верхнем и нижнем регистре.
Описание | Произвольный, обязательный параметр, обозначающий пользовательское название WMS Layer. Задается латинскими и русскими буквами в верхнем и нижнем регистре.
CSS | Опциональный параметр, обозначающий подключаемый CSS стиль. Используется если слой запрашиваемый.
Сглаживание | При установленном флажке слой при визуализации сглаживается.
Запрос информации | Признак, указывающий на возможность осуществления запроса к слою через WMS службу. Признак выставляется в том случае, если требуется запрашивать данные слоя.
Пользовательские названия полей | Параметр переключает отображаемыми названиями полей при получении информации. При включении данной опции в ответе отображаются пользовательские наименования (UserName), в противном случае – реальные название полей из БД.
Стили | Опциональные (необязательные) параметры, обозначающие объявляемые Style элементы WMS слоя. В рамках слоя названия Style должны быть уникальными.

Создание WMS Layer:

  1. Перейти на страницу Публикация WMS и WFS данных.

  2. В секции WMS Слои нажать Добавить.

  3. В появившемся диалоге Слой WMS заполнить необходимые данные.

  4. Нажать OK.

Изменение параметров WMS Layer:

  1. Перейти на страницу Публикация WMS и WFS данных.

  2. В секции WMS Слои выбрать WMS Layer элемент из списка.

  3. В секции WMS Слои нажать Изменить.

  4. В появившемся диалоге Слой WMS изменить требуемые данные.

  5. Нажать OK.

Удаление WMS Layer:

  1. Перейти на страницу Публикация WMS и WFS данных.

  2. В секции WMS Слои выбрать WMS Layer элемент из списка.

  3. В секции WMS Слои нажать Удалить.


Управление WFS Feature элементами

Для создания WFS Feature элемента предварительно требуется создать слой, ссылающийся на слой Zulu. Слой, ссылающийся на карту, не позволяет опубликовать Слой WFS. Операции с WFS Feature осуществляются через страницу утилиты Публикация WMS и WFS Данных. Для перехода в этот раздел надо кликнуть на имени слоя в дереве слева.

Диалог Слой WFS

Рисунок 85. Диалог Слой WFS

Операции создания и редактирования WFS Feature производятся через диалог Слой WFS. В таблице представлено описание параметров диалога:

Таблица 13. Параметры диалога WFS Feature

Параметр | Описание
Имя | Произвольный, обязательный, уникальный параметр, обозначающий служебное имя WFS Feature элемента. Задается латинскими буквами в верхнем и нижнем регистре.
Описание | Произвольный, обязательный параметр, обозначающий пользовательское название WFS Feature элемента. Задается латинскими и русскими буквами в верхнем и нижнем регистре.
Типы | Обязательный параметр, обозначающий типы объектов в структуре слоя, публикуемые под одним именем. Выбирается из доступных в слое типов. Типы, публикуемые под одним именем, обязаны иметь одинаковый атрибутивный состав, поэтому выбор осуществляется из списков, ссылающихся на одну общую базу данных (или типов, не ссылающихся ни на одну из них).
SRS | Обязательный параметр, обозначающий пространственную систему отсчета, с которой будет опубликован WFS Feature.

Создание WFS Feature:

  1. Перейти на страницу Публикация WMS и WFS данных.

  2. В секции WFS Слои нажать Добавить.

  3. В появившемся диалоге Слой WFS заполнить необходимые данные.

  4. Нажать OK.

Изменение параметров WFS Feature:

  1. Перейти на страницу Публикация WMS и WFS данных.

  2. В секции WFS Слои выбрать WFS Feature элемент из списка.

  3. В секции WFS Слои нажать Изменить.

  4. В появившемся диалоге Слой WFS изменить требуемые данные.

  5. Нажать OK.

Удаление WFS Feature:

  1. Перейти на страницу Публикация WMS и WFS данных.

  2. В секции WFS Слои выбрать WFS Feature элемент из списка.

  3. Нажать Удалить.


Управление Style элементами

Style подключается к WMS Layer. Style может содержать в себе только те тематические раскраски и подписи, которые принадлежат слою Zulu, на который ссылается конкретный WMS Layer. По этой причине Style элементы создаются напрямую из диалога Слой WMS. Операции добавления и редактирования Style элементов осуществляются через диалог Стиль WMS.

Диалог Стиль WMS

Рисунок 86. Диалог Стиль WMS

В таблице представлено описание параметров диалога:

Таблица 14. Описание параметров style (стиля) WMS

Параметр | Описание
Имя | Идентификатор Style элемента. Произвольное, уникальное в рамках слоя имя, задаваемое латинскими буквами в верхнем и нижнем регистре.
Описание | Пользовательское название Style элемента. Произвольно задается латинскими и русскими буквами в верхнем и нижнем регистре.
Тематические раскраски | Тематические раскраски из слоя Zulu.
Подписи | Подписи из слоя Zulu.

Создание Style в WMS Layer:

  1. Перейти в диалог Слой WMS.

  2. Нажать «+» справа от списка стилей.

  3. В появившемся диалоге Стиль WMS, заполнить поля и выбрать требуемые тематические раскраски и подписи.

  4. Нажать OK.

Редактирование Style в WMS Layer:

  1. Перейти в диалог Слой WMS.

  2. Выбрать Style элемент из списка Стили.

  3. Нажать «...» справа от списка стилей.

  4. В появившемся диалоге Стиль WMS, изменить требуемые данные.

  5. Нажать OK.

Удаление Style в WMS Layer:

  1. Перейти в диалог Слой WMS.

  2. Выбрать Style элемент из списка Стили.

  3. Нажать «x» справа от списка стилей.

  4. Нажать OK.


Стили CSS

В WMS службе предусмотрена функция получения данных по клику на карте. WMS сервис способен возвращать данные в HTML формате. В некоторых случаях требуется оформить данные определенным образом. Общепринятый способ стилизации HTML осуществляется с помощью Cascading Style Sheets (css). Для того чтобы задействовать css, в утилите Настройка WMS/WFS ZuluServer 2021 предусмотрена настройка css стилей.

Для настройки стилей css в утилите надо кликнуть в узле дерева Стили css.

Создание css стиля:

В общем случае для создания css стиля требуется:

  1. Перейти на вкладку Стили css.

  2. Заполнить поля Имя и Идентификатор класса.

    • Имя – пользовательское название стиля, выбирается произвольно.

    • Идентификатор класса – уникальная строковая комбинация, используется для связи таблицы со стилем (class).

  3. Нажать Сохранить.

При создании Пользовательского css стиля необходимо:

  1. Выбрать Пользовательский на вкладке Стили css.

  2. Задать требуемые настройки:

    • Интервал ячеек (cellspacing)

    • Внутренние отступы (cellpadding)

    • Толщина границы (border)

    • Цвет фона (bgcolor)

    • Высота (height)

    • Ширина (width)

    • Выравнивание (align)

При создании css стиля из файла:

  1. Выбрать Из файла на вкладке Стили css.

  2. Нажать ... и в стандартном диалоге выбрать css файл.

[Предупреждение] Предупреждение

Идентификатор класса применяется к таблице с данными, возвращаемыми с сервера. Необходимо учитывать это при создании css стиля и указывать идентификатор, эквивалентный объявленному в css файле. Только в этом случае он применится к таблицам.

Изменение css стиля:

  1. Перейти на вкладку Стили css.

  2. Выбрать название редактируемого стиля в списке Стили.

  3. Изменить требуемые параметры.

  4. Нажать Сохранить на вкладке Стили css.

Удаление css стиля:

  1. Перейти на вкладку Стили css.

  2. Выбрать название удаляемого стиля в списке Стили.

  3. Нажать Удалить на вкладке Стили css.

Применение css стиля к WMS слою:

Для того чтобы данные, возвращаемые при запросе к WMS службе, были оформлены в соответствии с объявленным стилем, следует применить стиль css к WMS слою. Для этого:

  1. Перейти на вкладку Слой WMS.Рисунок 84, «Диалог Слой WMS»

  2. В выпадающем списке css диалога Слой WMS выбрать имя ранее объявленного стиля.

  3. Нажать ОК.

  4. Сохранить изменения кнопкой Сохранить или командой главного меню ФайлСохранить.


Просмотр данных по протоколам WMS и WFS

  • «Просмотр данных в веб-браузере»

  • «Просмотр WMS данных в программе MapInfo»

  • «Просмотр WFS данных в программе MapInfo»

  • «Просмотр WMS данных в программе Google Планета Земля»

  • «Просмотр WMS данных в программе Quantum GIS»

  • «Просмотр WMS данных в программе ESRI ArcGIS»

  • «Просмотр WMS данных в программе ZuluGIS»

  • «Веб-ориентированные WMS клиенты»


Просмотр данных в веб-браузере

Просмотреть опубликованные данные можно, сделав соответствующий запрос посредством веб-браузера.

Требуемый формат запроса – http://<имя сервера или ip адрес>:<порт zulu server>/<URI сервиса>?service=<сервис>&version=<версия сервиса>&request=GetCapabilities. Например, если запрос осуществляется с серверной машины, а сервер запущен с URI (ws) и портом (6473) по умолчанию:

  • Для службы WMS 1.1.1 запрос выглядит как:

    http://localhost:6473/ws?service=WMS&version=1.1.1&request=GetCapabilities;

  • Для службы WMS 1.3.0 запрос выглядит как:

    http://localhost:6473/ws?service=WMS&version=1.3.0&request=GetCapabilities;

  • Для службы WFS 1.0.0 запрос выглядит как:

    http://localhost:6473/ws?service=WFS&version=1.0.0&request=GetCapabilities;

На запрос сервер должен вернуть xml документ, описывающий возможности службы и его опубликованные данные.

Также просмотреть опубликованные данные можно, используя ГИС со встроенным WMS/WFS клиентом. На официальном сайте Open Geospatial Consortium в разделе Implementing Products (http://www.opengeospatial.org/resource/products/implementing) находится исчерпывающий список официально зарегистрированных программ, которые поддерживают спецификацию WMS и WFS. Вот некоторые из этих программ:

  1. MapInfo Professional http://www.esti-map.ru/

  2. Google Планета Земля http://www.google.com/intl/ru/earth/index.html

  3. Quantum GIS http://qgis.org/

  4. ESRI ArcGIS http://www.esri.com/software/arcgis

  5. ZuluGIS http://politerm.com.ru/


Просмотр WMS данных в программе MapInfo

  1. Выбрать меню File|Open Web Service|Open WMS Table или нажать кнопку на панели инструментов Open WMS Table.

  2. В появившемся диалоге Open WMS Table нажать Servers....

  3. В диалоге WMS Servers List нажать Add....

  4. Указать Server URL и название.

  5. Нажать OK.

  6. В WMS Servers List выбрать добавленный сервер из списка.

  7. Нажать OK.

  8. Выбрать слой из WMS Layers диалога Open WMS Table и добавить его в правый список.

  9. Нажать OK и дождаться загрузки растровой карты.

Просмотр WMS в MapInfo

Рисунок 87. Просмотр WMS в MapInfo


Просмотр WFS данных в программе MapInfo

  1. Выбрать меню File|Open Web Service|Open WFS Table или нажать кнопку на панель инструментов Open WFS Table.

  2. В появившемся диалоге Open WFS Table нажать Servers....

  3. В диалоге WFS Servers List нажать Add....

  4. Указать Server URL и название.

  5. Нажать OK.

  6. В WFS Servers List выбрать добавленный сервер из списка.

  7. Нажать OK.

  8. Выбрать слой из WFS Layers диалога Open WFS Table и добавить его в правый список.

  9. Нажать Column Filter и выбрать столбцы.

  10. Нажать Row Filter и задать фильтр.

  11. Нажать OK и дождаться загрузки векторной карты.

Просмотр WFS в MapInfo

Рисунок 88. Просмотр WFS в MapInfo


Просмотр WMS данных в программе Google Планета Земля

  1. Выбрать меню Добавить|Накладываемое изображение или комбинацией клавиш Ctrl+Shift+O.

  2. В появившемся диалоге Google Планета Земля – Создать: Накладываемое изображение выбрать вкладку Обновить.

  3. Нажать Параметры WMS.

  4. В появившемся диалоге Google Планета Земля – Настройки WMS нажать Добавить....

  5. Указать Адрес URL и нажать OK.

  6. Выбрать добавленный Сервер WMS в диалоге Google Планета Земля – Настройки WMS.

  7. Дождаться загрузки слоев.

  8. Выбрать слои из списков Прозрачные слои и Непрозрачные слои и добавить в правый список кнопкой Добавить ->.

  9. Нажать Применить.

  10. Нажать OK.

Просмотр WMS в Google Earth

Рисунок 89. Просмотр WMS в Google Earth


Просмотр WMS данных в программе Quantum GIS

  1. Выбрать меню Слой|Добавить WMS-слой или Добавить WMS-слой на панели инструментов.

  2. В появившемся диалоге Добавить слои с сервера нажать Создать.

  3. В диалоге Создание нового WMS соединения указать название и URL сервера.

  4. Нажать OK.

  5. В диалоге Добавить слои с сервера выбрать добавленный сервер из выпадающего списка.

  6. Нажать Подключить.

  7. Дождаться загрузки данных.

  8. Выбрать слой в списке Слои.

  9. Нажать Добавить.

Просмотр WMS в QGIS

Рисунок 90. Просмотр WMS в QGIS


Просмотр WMS данных в программе ESRI ArcGIS

  1. Выбрать меню File|Open.

  2. В открывшемся диалоге Open Content нажать на Servers слева.

  3. Выбрать WMS в верхней части диалога Open Content.

  4. В открывшемся диалоге Add New Server Connection задать параметры сервера и нажать OK.

  5. Нажать OK в диалоге Open Content.

Просмотр WMS в ESRI ArcGIS

Рисунок 91. Просмотр WMS в ESRI ArcGIS


Просмотр WMS данных в программе ZuluGIS

Для просмотра WMS карт в ZuluGIS необходимо предварительно создать файл описатель WMS(*.zww), после чего открыть аналогично тому, как открывается обычный слой Zulu. Для того чтобы создать файл описатель WMS(*.zww) для WMS службы, требуется:

  1. Выбрать меню Слой|WMS....

  2. В появившемся диалоге Параметры WMS задать имя слоя.

  3. Указать адрес WMS сервера в поле Сервер WMS.

  4. Загрузить данные сервера нажав «...» .

  5. Выбрать требуемые слои из списка WMS Слои и добавить их в правый список.

  6. Выбрать формат карты.

  7. Запустить предварительный просмотр и убедиться в наличии требуемых данных на карте.

  8. Сохранить описатель, нажав Сохранить и указав имя файла описателя.

  9. Выбрать меню Карта|Добавить слой или в панели инструментов Добавить слой.

  10. В диалоге выбора слоя указать Тип файлов WMS(*.zww), найти созданный файл описатель и выбрать его.

Просмотр WMS в ZuluGIS

Рисунок 92. Просмотр WMS в ZuluGIS


Веб-ориентированные WMS клиенты

Также на сегодняшний день существуют реализации WMS клиентов, которые могут быть размещены в рамках сайта. Вот некоторые из них:

  • OpenLayers project. http://openlayers.org/

  • Компонент-карта для работы в WMS. http://zs.zulugis.ru:6473/projections/index.htm

  • Компонент для работы в WFS. http://zs.zulugis.ru:6473/webwfs/index.htm

Эти и подобные им компоненты совместно с WMS/WFS службами позволяют достаточно быстро создать простое интернет-ориентированное ГИС решение.


Порядок публикации веб-данных

В данном разделе описан основной порядок публикации веб-данных на ZuluServer: слоев или карт по протоколам WMS и ZWS.

[Подсказка] Подсказка

ZWS предоставляет наибольшие возможности публикации в веб и работы с данным ZuluGIS (по сравнению с другими протоколами), а также позволяет работать с опубликованными данными с помощью ZuluGIS Mobile и ZuluGIS Online.

WMS позволяет предоставлять доступ к данным ZuluGIS клиентам, поддерживающим данную спецификацию, в частности, Google API, OpenLayers, Leaflet, Yandex Maps, MapInfo, ArcGIS, Google Earth и т.д.

Публикация веб-данных выполняется в утилите Публикация данных для веб-служб ZuluServer 2021 (ZsWsSetup.exe). Далее приведен общий порядок публикации:

  • Публикация слоя по протоколу ZWS

  • Публикация всех слоев карты по ZWS

  • «Публикация Карты по WMS»


Публикация Слоя по ZWS

Публикация слоя по протоколу ZWS возможна несколькими способами:

  1. С помощью специальной утилиты Публикация данных для веб-служб ZuluServer 2021 (ZsWsSetup.exe) – требуется доступ администратора на компьютере, где установлен ZuluServer. Пример публикации c ZuluServer смотрите в разделе «Публикация слоя по ZWS с ZuluServer».

  2. Непосредственно из ZuluGIS – не требует доступа администратора на компьютере с ZuluServer. Пример публикации с клиента ZuluGIS смотрите в разделе «Публикация слоя по ZWS с помощью ZuluGIS».

Публикация слоя по ZWS с ZuluServer

Публикация слоя по ZWS выполняется с помощью утилиты Публикация данных для веб-служб ZuluServer 2021 (ZsWsSetup.exe). Утилита входит в состав ZuluServer и располагается в том же каталоге, где установлен ZuluServer, а также доступна в меню Пуск. Требуется доступ администратора на компьютере, где установлен ZuluServer.

[Предупреждение] Предупреждение

Слой для публикации в веб должен быть обязательно опубликован на ZuluServer и находиться в корневом каталоге данных сервера (по умолчанию папка Data).

Если вы уже работаете со слоем как с серверным, значит, он уже опубликован.

Далее приведен общий порядок публикации слоя для доступа по протоколу ZWS:

  1. Запустите утилиту Публикация данных для веб-служб ZuluServer 2021.

    [Внимание] Внимание

    Следует запускать с правами администратора.

  2. Создайте пространство имён – в левой части окна выберите Пространства имен и нажмите кнопку Добавить.

    Если нужное пространство уже имеется, то выберите его из соответствующего списка.

    Создание пространства имен

    Рисунок 93. Создание пространства имен

  3. В открывшемся окне введите уникальное имя для пространства имен и нажмите кнопку ОК.

    [Примечание] Примечание

    Пространство имен – это некое абстрактное объединение опубликованных слоев по какому-то признаку (один и тот же город, проект, область или т.д.). Например, для демонстрационных примеров пространство имен можно назвать examples.

    Допустимыми в имени являются латинские буквы, арабские цифры и символ "_".

    Имя пространства имен должно быть уникальным в рамках ZuluServer. Например если создать пространство имен examples, то это имя уже будет "занято" и повторно создать пространство имен с таким же именем не получится.

    Имена слоев внутри одного пространства имен уникальные. В одном пространстве имен не может быть слоев с одинаковым именем.

    Ввод имени пространства

    Рисунок 94. Ввод имени пространства

  4. В левой части окна выберите созданное пространство имен и в верхнем правом углу нажмите кнопку Добавить...:

    Управление слоями пространства имен

    Рисунок 95. Управление слоями пространства имен

  5. Чтобы выбрать слой для публикации, в открывшемся окне нажмите кнопку Обзор....

    В окне выборе файлов проверьте, что указан тип файлов Слои ZuluServer (*.zl), и укажите слой для публикации.

    [Предупреждение] Предупреждение

    Слой для веб-публикации должен быть опубликован на сервере и находиться в корневом каталоге данных сервера (по умолчанию папка Data).

    Выбор типа файлов для публикации

    Рисунок 96. Выбор типа файлов для публикации

  6. Установите галочку Доступ в области Протокол ZWS. При необходимости введите имя слоя.

    [Примечание] Примечание

    Имя слоя при публикации при ZWS служебное и используется для обращения к слою при выполнении запросов ZWS. В ZuluGIS Mobile и ZuluGIS Online пользователь будет видеть пользовательское Название слоя.

    <Layer>
  <Name>Имя_пространство_имен:Имя слоя при публикации</Name>
  <Title>Название слоя ZuluGIS </Title>
</Layer>

    Добавление слоя в пространство имен

    Рисунок 97. Добавление слоя в пространство имен

  7. Укажите дополнительные параметры веб-публикации слоя:

    1. Параметры отображения слоя:

      • По умолчанию

        Слой будет отображаться со стандартными настройками отображения.

      • Из настроек слоя

        При отображении слоя будут использоваться индивидуальные настройки отображения (масштаб отображения слоя, типов и режимов, направлений), сохранённые в слое. Подробнее о сохранении настроек внутри слоя: https://www.politerm.com/zuludoc/index.html#layer_setup_save.html

      • Интервал обновления слоя.

        [Примечание] Примечание

        Интервал обновления – указывается в секундах частота обращения клиента к серверу для проверки актуальности текущих данных.

        Можно использовать, когда данные слоя меняются "внешними средствами", например, при записи в базу данных слоя SCADA системой или изменении данных с помощью запросов внутри СУБД.

    2. Поиск по ID – включает в опубликованном слое возможность быстрого поиска по ID идентификатору объекта, например, https://www.politerm.com/zulugisonline/webhelp/index.html#map_search.html и https://politerm.com/zulugismobile/webhelp/index.html#search_rules.html.

    3. Редактирование геометрии через веб-службы отключено – при включении данной опции геометрию объектов (перемещение, добавление, удаление объектов) слоя нельзя будет отредактировать из веб-приложений: ZuluGIS Online, ZuluGIS Mobile и т.п. Сменить режим или изменить информацию по объектам слоя в этом случае возможно.

    4. Редактировать в ZuluGIS Mobile только по GPS – при включении данной опции этот слой будет редактироваться в ZuluGIS Mobile только по текущим GPS-координатам устройства. В ZuluGIS Mobile при вводе нового объекта будет доступна только кнопка ввода по текущим координатам устройства.

    5. Расчетная модель – для проведения расчетов из ZuluGIS Online указывается расчетная модель инженерной сети: ZuluThermo, ZuluHydro, ZuluSteam, ZuluGaz или ZuluDrain. Данный параметр следует обязательно указывать только в том случае, если планируется вести гидравлические расчеты из веб-интерфейса через тонкого клиента с использованием ZuluNetTools.

  8. Для сохранения настроек нажмите кнопку ОК и выберите команду главного меню Файл|Сохранить.

    Слой будет опубликован в веб и доступен для дальнейшей работы.

Публикация слоя по ZWS с помощью ZuluGIS

Чтобы опубликовать серверный слой для веб-служб ZuluServer из ZuluGIS:

  1. Выберите меню Слой|Опубликовать для веб-служб ZuluServer.

  2. Если слой заранее не загружен в активную карту, то в открывшемся окне Выбор слоя укажите слой на сервере геоданных для публикации. Если слой загружен, то откроется диалоговое окно Публикация слоев по протоколу ZWS. В нем из списка Слой выберите слой. Также слой можно выбрать, нажав кнопку Обзор.

    [Предупреждение] Предупреждение

    Слой для веб-публикации должен быть опубликован на ZuluServer и находиться на доступном сервере геоданных.

  3. Создайте пространство имён. Для этого следует нажать кнопку Добавить и в появившемся окне внести название для пространства. Допустимыми в названии являются латинские буквы, арабские цифры и символ "_". Если нужное пространство уже имеется, то его надо выбрать из соответствующего списка.

  4. В строке Имя ZWS введите служебное имя слоя и установите опцию Доступ.

  5. Выберите параметры отображения слоя:

    • по умолчанию – слой будет отображаться без собственных настроек отображения;

    • из настроек слоя – при отображении слоя будут использоваться настройки (масштаб отображения слоя, типов и режимов, направлений), сохранённые в слое.

  6. При необходимости укажите в секундах Интервал обновления слоя.

    [Примечание] Примечание

    Интервал обновления – указывается в секундах частота обращения клиента к серверу для проверки актуальности текущих данных.

    Необходимо указывать в случаях, когда данные слоя меняются «внешними средствами», например, при записи в базу данных слоя SCADA системой или изменении данных с помощью запросов внутри СУБД.

  7. При установке опции Редактирование геометрии через веб отключено запрещается редактирование графической информации через веб-службы. В этом случае при попытке редактирования геометрии через ZuluGIS Online или ZuluGISMobile будет появляться ошибка.

  8. При установке опции Редактировать в ZuluGISMobile только по GPS в ZuluGISMobile координаты при вводе объекта возможно получать только по GPS данным.

  9. Для инженерных сетей из списка Расчетная модель можно указать расчетную модель, которая соответствует публикуемому слою. Данный параметр следует обязательно указывать только в том случае, если планируется вести гидравлические расчеты из веб-интерфейса через тонкого клиента с использованием ZuluNetTools.

    Диалог Публикация слоев по протоколу ZWS

    Рисунок 98. Диалог Публикация слоев по протоколу ZWS

  10. Нажать кнопку Опубликовать.

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


Публикация всех слоев карты по ZWS

Публикация карты по ZWS позволяет быстро опубликовать все слои, входящих в состав карты.

[Примечание] Примечание

При публикации карты публикуются только слои, входящие в состав карты. Сам файл карты не создается; его следует создать самостоятельно из слоев, опубликованных в веб. Например, можно использовать ZuluGIS Online для создания карты для веб, подробнее.

Публикация выполняется с помощью утилиты Публикация данных для веб-служб ZuluServer 2021 (ZsWsSetup.exe). Утилита входит в состав ZuluServer и располагается в том же каталоге, где установлен ZuluServer, а также доступна в меню Пуск. Требуется доступ администратора на компьютере, где установлен ZuluServer.

Далее приведен общий порядок публикации всех слоев карты по ZWS:

  1. Запустите утилиту Публикация данных для веб-служб ZuluServer 2021.

    [Внимание] Внимание

    Следует запускать с правами администратора.

  2. Создайте пространство имён – в левой части окна выберите Пространства имен и нажмите кнопку Добавить.

    Если нужное пространство уже имеется, то выберите его из соответствующего списка.

    Создание пространства имен

    Рисунок 99. Создание пространства имен

  3. В открывшемся окне введите уникальное имя для пространства имен и нажмите кнопку ОК.

    [Примечание] Примечание

    Пространство имен – это некое абстрактное объединение опубликованных слоев по какому-то признаку (один и тот же город, проект, область или т.д.). Например, для демонстрационных примеров пространство имен можно назвать examples.

    Допустимыми в имени являются латинские буквы, арабские цифры и символ "_".

    Имя пространства имен должно быть уникальным в рамках ZuluServer. Например, если создать пространство имен examples, то это имя уже будет "занято" и повторно создать пространство имен с таким же именем не получится.

    Имена слоев внутри одного пространства имен уникальные. В одном пространстве имен не может быть слоев с одинаковым именем.

    Ввод имени пространства

    Рисунок 100. Ввод имени пространства

  4. В левой части окна выберите созданное пространство имен и в верхнем правом углу нажмите кнопку Добавить...:

    Управление слоями пространства имен

    Рисунок 101. Управление слоями пространства имен

  5. Чтобы выбрать слой для публикации, в открывшемся окне нажмите кнопку Обзор....

    В окне выборе файлов проверьте, что указан тип файлов Карты ZuluGIS (*.zmp), и укажите карту для публикации.

    [Предупреждение] Предупреждение

    Карта для веб-публикации должна быть опубликована на сервере и находиться в корневом каталоге данных сервера (по умолчанию папка Data).

    Выбор типа файлов для публикации

    Рисунок 102. Выбор типа файлов для публикации

  6. Установите галочку Опубликовать все векторные слои карты:

    Добавление карты в пространство имён

    Рисунок 103. Добавление карты в пространство имён

  7. Вы можете указать дополнительные параметры веб-публикации сразу для всех слоев карты (или позже настроить отдельно для каждого слоя):

    1. Имя слоя и Доступ по ZWS – при необходимости вы можете изменить имя слоя или отключить его публикацию (отключить опцию Доступ).

      [Примечание] Примечание

      Имя слоя при публикации при ZWS служебное и используется для обращения к слою при выполнении запросов ZWS. В ZuluGIS Mobile и ZuluGIS Online пользователь будет видеть пользовательское Название слоя.

      <Layer>
  <Name>Имя_пространство_имен:Имя слоя при публикации</Name>
  <Title>Название слоя ZuluGIS </Title>
</Layer>

    2. Параметры отображения:

      • По умолчанию

        Слой будет отображаться со стандартными настройками отображения.

      • Из настроек слоя

        При отображении слоя будут использоваться индивидуальные настройки отображения (масштаб отображения слоя, типов и режимов, направлений), сохранённые в слое. Подробнее о сохранении настроек внутри слоя: https://www.politerm.com/zuludoc/index.html#layer_setup_save.html

      • Интервал обновления слоя.

        [Примечание] Примечание

        Интервал обновления – указывается в секундах частота обращения клиента к серверу для проверки актуальности текущих данных.

        Можно использовать, когда данные слоя меняются "внешними средствами", например, при записи в базу данных слоя SCADA системой или изменении данных с помощью запросов внутри СУБД.

    3. Поиск по ID – включает в опубликованном слое возможность быстрого поиска по ID идентификатору объекта, например, https://www.politerm.com/zulugisonline/webhelp/index.html#map_search.html и https://politerm.com/zulugismobile/webhelp/index.html#search_rules.html.

    4. Редактирование геометрии через веб-службы отключено – при включении данной опции геометрию объектов (перемещение, добавление, удаление объектов) слоя нельзя будет отредактировать из веб-приложений: ZuluGIS Online, ZuluGIS Mobile и т.п. Сменить режим или изменить информацию по объектам слоя в этом случае возможно.

    5. Редактировать в ZuluGIS Mobile только по GPS – при включении данной опции этот слой будет редактироваться в ZuluGIS Mobile только по текущим GPS-координатам устройства. В ZuluGIS Mobile при вводе нового объекта будет доступна только кнопка ввода по текущим координатам устройства.

    6. Расчетная модель – для проведения расчетов из ZuluGIS Online указывается расчетная модель инженерной сети: ZuluThermo, ZuluHydro, ZuluSteam, ZuluGaz или ZuluDrain. Данный параметр следует обязательно указывать только в том случае, если планируется вести гидравлические расчеты из веб-интерфейса через тонкого клиента с использованием ZuluNetTools.

  8. Для сохранения настроек нажмите кнопку ОК. На экране отобразится список опубликованных слоев.

  9. Чтобы настроить отображение для определенного слоя, выберите его двойным щелчком и внесите необходимые изменения:

  10. Для сохранения изменения выберите команду главного меню Файл|Сохранить.

    Указанные слои будут опубликованы в веб и доступны для дальнейшей работы.


Публикация Карты по WMS

Публикация данных для доступа по протоколам WMF/WFS выполняется в утилите публикации данных для веб-служб ZsWsSetup.exe (подробнее смотрите раздел: Утилита публикации данных веб-служб (ZsWsSetup)). Далее приведен общий порядок публикации карты для доступа по протоколу WMS:

  1. Создать пространство имён. Для этого следует нажать кнопку Добавить в окне Управление пространствами имен (Рисунок 104, «Создание пространства имен»).

    Создание пространства имен

    Рисунок 104. Создание пространства имен

  2. В открывшемся окне ввести имя пространства и нажать кнопку ОК.

    Ввод имени пространства

    Рисунок 105. Ввод имени пространства

  3. Перейти в окно Управление слоями пространства имен; для этого надо выделить курсором пространство в левой части окна (Рисунок 106, «Управление слоями пространства имен»).

    Управление слоями пространства имен

    Рисунок 106. Управление слоями пространства имен

  4. Добавить карту в пространство имён, нажав кнопку Добавить в правой верхней части окна (Рисунок 106, «Управление слоями пространства имен»). С помощью кнопки ... выбрать карту для публикации (Рисунок 107, «Добавление карты в пространство имён»).

    Добавление карты в пространство имён

    Рисунок 107. Добавление карты в пространство имён

  5. Выбрать карту внутри пространства имён в левой части окна (Рисунок 108, «Создание WMS Layer») и нажать кнопку Добавить для создания WMS Layer.

    Создание WMS Layer

    Рисунок 108. Создание WMS Layer

  6. Настроить необходимые параметры WMS Layer (Рисунок 109, «Настройка параметров WMS слоя»):

    Имя – уникальное служебное имя WMS Layer. Задается латинскими буквами в верхнем и нижнем регистре.

    Описание – произвольный, обязательный параметр, обозначающий пользовательское название WMS Layer. Задается латинскими или русскими буквами с учетом регистра.

    Сглаживание- опция, отвечающая за визуальное сглаживание.

    Запрос информации – опция, которая разрешает запрашивать данные слоя.

    Пользовательские название полей – опция, которая определяет, какие названия будут отображается при получении информации: пользовательские (UserName) или реальные названия полей.

    Параметры из настроек слоя – при включении данной опции будут использоваться параметры отображения, сохранённые для слоя (например, отображение направлений, типов и т.д.). Подробнее о сохранении настроек слоя: https://www.politerm.com/zuludoc/index.html#layer_setup_save.html. Если опция отключена, слой будет отображаться по умолчанию.

    Настройка параметров WMS слоя

    Рисунок 109. Настройка параметров WMS слоя

  7. В результате в окне Публикация WMS и WFS данных отобразится следующее:

    Рисунок 110. Результат настройки

  8. Сохранить, выбрав команду главного меню Файл|Сохранить.

    [Внимание] Внимание

    Если невозможно сохранить настройки, утилиту следует запускать с правами администратора.

  9. Дополнительно при необходимости настройки данных в HTML формате указать CSS стиль. Подробнее о CSS: «Стили CSS».


Работа в режиме Tile-сервера

ZuluServer 2021 реализует функции Tile-сервера. Служба Tile-сервера обеспечивает доступ к пространственным графическим данным (карте), хранимым на сервере в формате растровых изображений искомых данных с разной степенью приближения (слоев), нарезанных на фрагменты, называемые плитками или тайлами. Принцип нарезки следующий: каждый следующий слой имеет разрешение в четыре раза больше предыдущего и содержит в четыре раза больше тайлов, при этом тайлы всех уровней имеют одинаковый размер, наиболее распространенный – 256x256 пикселей. Набор слоев тайлов с разным приближением для одних и тех же картографических данных образует тайловый слой, эквивалентный одному слою карты. На тайловом сервере может храниться несколько тайловых слоев, и программа-клиент запрашивает с сервера данные только необходимых ей слоев.

Тот факт, что графические данные хранятся в виде уже подготовленных к выгрузке растров заданного формата, позволяет значительно упростить выполнение задач сервера по сравнению с другими типами серверов картографических данных. Вся работа Tile-сервера заключается в передаче клиенту растров по его запросам, минуя сложный и затратный с точки зрения ресурсов процесс "визуализации" исходных картографических данных. Благодаря этому Tile-сервер позволяет обслуживать большее число клиентов одновременно, чем другие виды картографических серверов, или работать на более слабом аппаратном обеспечении при равной нагрузке.

Тайловые слои для подключения к тайловому серверу ZuluServer 2021 создаются с помощью программы Zulu и подключаются к тайловому серверу ZuluServer через файл описатель тайлового слоя с расширением .zww. Настройки тайловых слоев, публикуемых ZuluServer 2021 в режиме Tile-сервера, могут задаваться в конфигурационной утилите ZsWsSetup.exe («Управление тайловыми слоями») или напрямую в конфигурационном файле wms.xml («Структура public-tiles»).

ZuluServer поддерживает нашу упрощенную спецификацию ZWMTS («ZWMTS (Zulu Web Map Tile Service)») и спецификацию OGC WMTS («WMTS (OpenGIS Web Map Tile Service)»). Просмотреть опубликованные тайловые слои можно с помощью веб-браузера (например, http://zs.zulugis.ru:6473/ws?service=ZWMTS&request=GetTile&layer=world_3857&z=4&x=8&y=5) или специальных программ. Подробнее о просмотре: («Просмотр опубликованных тайловых слоёв»).


Управление тайловыми слоями

Для управления тайловыми слоями на ZuluServer 2021 следует использовать утилиту публикации данных для веб-служб ZsWsSetup.exe. Подробнее об утилите смотрите: Утилита публикации данных веб-служб (ZsWsSetup).

Настройка тайловый слоев выполняется в разделе Tile-сервер. Для перехода в него следует щелкнуть левой кнопкой мыши по строке Tile-сервер в дереве настроек в левой части окна утилиты. В правой части раздела диалога отображается список публикуемых на сервере тайловых слоев и кнопки добавления, редактирования и удаления слоев.

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

Для удаления тайлового слоя из списка публикуемых выберите его в списке и нажмите кнопку Удалить. Физическое удаление данных слоя с сервера при этом не производится.

Настройка тайлового слоя в утилите публикации данных веб-служб

Рисунок 111. Настройка тайлового слоя в утилите публикации данных веб-служб


Порядок публикации тайловых слоёв

Настройки слоев, публикуемых ZuluServer 2021 в режиме Tile-сервера, также могут быть указаны в конфигурационном файле wms.xml («Структура public-tiles»).

Для публикации слоя в режиме тайл-сервера следует:

  1. Создать zww описатель тайлового слоя с помощью ZuluGIS.

  2. В утилите ZsWsSetup.exe перейти на вкладку Tile-сервер и нажать кнопку Добавить....

    Публикация слоя в режиме тайл-сервера

    Рисунок 112. Публикация слоя в режиме тайл-сервера

  3. В открывшемся окне настроек Tile-слоя (Рисунок 113, «Параметры тайлового слоя») указать служебное Имя тайлового слоя.

    [Предупреждение] Предупреждение

    Все имена слоев должны быть уникальными и состоять из прописных и строчных латинских букв.

  4. Нажать кнопку ... в поле Слой и указать путь к файлу описателю тайлового слоя (zww). После указания пути к слою нажать ОК.

    Параметры тайлового слоя

    Рисунок 113. Параметры тайлового слоя

  5. После добавления в список tile-слоёв (Рисунок 114, «Список tile слоёв») сохранить изменения командой главного меню Файл|Сохранить.

    Список tile слоёв

    Рисунок 114. Список tile слоёв

  6. Проверить опубликованный слой можно в браузере:

OpenGIS Web Map Tile Service

http://localhost:6473/ws?service=WMTS&request=GetCapabilities – запрос на получение xml файла с параметрами опубликованных на сервере данных.

http://localhost:6473/ws?SERVICE=WMtS&REQUEST=GETTILE&TileMatrix=2&TileRow=1&TileCol=2&layer=OpenStreetMap&FORMAT=image/png&Style=default&TileMatrixSet=ogc:1.0:googlecrs84quad&version=1.0.0 – запрос на получение конкретного тайла.

  1. localhost:6473 – имя (адрес) сервера и порт.

  2. ws – URI сервиса.

  3. OpenStreetMap – служебное имя слоя.

Zulu Web Map Tile Service

http://localhost:6473/ws?service=ZWMTS&request=GetCapabilities – запрос на получение xml файла с параметрами опубликованных на сервере данных.

http://localhost:6473/ws?service=ZWMTS&request=GetTile&layer=OpenStreetMap&z=4&x=8&y=5 – запрос на получение конкретного тайла.


Просмотр опубликованных тайловых слоёв

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

Описание спецификации можно изучить здесь: http://www.opengeospatial.org/standards/wmts. ZuluServer поддерживает два запроса WMTS:

  • GetCapabilities – запрос на получение xml файла с параметрами опубликованных на сервере данных. Например:

    http://zs.zulugis.ru:6473/ws?service=WMTS&request=GetCapabilities

  • GetTile – запрос на получение конкретного тайла. Например:

    http://zs.zulugis.ru:6473/ws?SERVICE=WMtS&REQUEST=GETTILE&TileMatrix=2&TileRow=1&TileCol=2&layer=world_3857&FORMAT=image/png&Style=default&TileMatrixSet=ogc:1.0:googlecrs84quad&version=1.0.0

Zulu Web Map Tile Service

ZuluServer поддерживает два запроса ZWMTS:

  • GetCapabilities – запрос на получение xml файла с параметрами опубликованных на сервере данных. Запрос имеет следующий формат: http://<имя сервера или ip адрес>:<порт zulu server>/<URI сервиса>?service=ZWMTS&request=GetCapabilities

    http://zs.zulugis.ru:6473/ws?service=ZWMTS&request=GetCapabilities

  • GetTile – запрос на получение конкретного тайла. Запрос имеет следующий формат: http://<имя сервера или ip адрес>:<порт zulu server>/<URI сервиса>?service=ZWMTS&request=GetTile&x=<X>&y=<Y>&z=<Z>&layer=<Имя слоя>&model=xyz

    http://zs.zulugis.ru:6473/ws?service=ZWMTS&request=GetTile&layer=world_3857&z=4&x=8&y=5


Журналирование событий ZuluServer

Журнал событий приложений Windows

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

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

[Примечание] Примечание

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

Общий вид окна программы

Рисунок 115. Общий вид окна программы

[Внимание] Внимание

По умолчанию в журнал событий попадают только общие события жизни сервера с кодами 1xx (запуск, остановка). Планируется добавить ещё и случай сбоя (вылет). Расширенное логирование включается при работе ZuluServer в режиме повышенной безопасности (strict).

Таблица 15. События сервера

Код | Название | Параметры
101 | Server Start | HaspID – ID ключа защиты. UserLimit – макс. кол-во соединений. WebSvc – наличие лицензии на веб-службы. WebSvcLimit – лимит на веб-службы (запросы).
102 | Server Stop |

Таблица 16. События авторизации

Код | Название | Параметры
200 | Auth: User logged in | Login – логин пользователя. ClientIP – IP адрес, откуда была попытка авторизации.
201 | Auth: User logged out
202 | Auth: User limit exceeded
203 | Auth: Attempt limit exceeded
204 | Auth: User account disabled
205 | Auth: Login attempt disabled

Таблица 17. События действий администратора

Код Название Параметры

300

Admin: Operation succeeded

Login – логин пользователя, проводящего операцию.

ClientIP – IP клиента, откуда выполняется операция.

Op – операция (add, delete, change).

ObjType – тип объекта безопасности (user, group, role).

ObjName – имя объекта безопасности.

Prop – (зарезервировано).

ErrCode – код результата операции.

ErrMsg – расшифровка результата операции.

301

Admin: Operation failed

302

Admin: Group member list changed

(изменился состав группы)

Login – логин пользователя, проводящего операцию.

ClientIP – IP клиента, откуда выполняется операция.

GroupName – имя группы.

Op – операция (add, delete).

ObjType – тип объекта безопасности (user, group).

ObjName – имена объекта безопасности через запятую.

303

Admin: Roles assigned to a user or group

(пользователю или группе назначены роли)

Login – логин пользователя, проводящего операцию.

ClientIP – IP клиента, откуда выполняется операция.

ObjType – тип объекта безопасности (user, group).

ObjName – имя объекта безопасности.

Roles – назначенные роли через запятую.

304

Admin: Role permissions changed

(изменился состав полномочий для роли)

Login – логин пользователя, проводящего операцию.

ClientIP – IP клиента, откуда выполняется операция.

Role – имя роли.

Allow – перечисление полномочий через запятую.

Deny – перечисление полномочий через запятую.

Таблица 18. События доступа к данным (ресурсам)

Код Название Параметры

400

Access: Operation succeeded

Login – логин пользователя, проводящего операцию.

ClientIP – IP клиента, откуда выполняется операция.

Op – операция (read).

ObjType – тип ресурса (layer, map, project).

ObjName – имя ресурса (URI).

ErrCode – код результата операции.

ErrMsg – расшифровка результата операции.

401

Access: Operation failed

Собственный журнал событий

Собственный журнал событий сервера (лог) записывается в текстовый файл вида ZuluServ_DDMMYYYY.log, где DD, MM и YYYY обозначают день, месяц и год соответственно. Иными словами, на каждый день работы сервера будет создаваться свой файл протокола.

Файлы протокола работы сервера

Рисунок 116. Файлы протокола работы сервера

Чтобы анализировать информацию лог-файлов и выводить различную статистику вместе с ZuluServer 2021, устанавливается утилита Журнал ZuluServer 2021 (zslogview.exe).

Для запуска журнала

Выберите пункт в главном меню Пуск|Журнал ZuluServer 2021 или запустите файл ZSLogView.exe из папки, где установлен ZuluServer 2021.

Подробнее о работе с Журналом ZuluServer смотрите разделы:

  • Описание интерфейса и панелей инструментов утилиты: «Знакомство с интерфейсом».

  • Работы с анализатором лога: «Работа с анализатором лога».


Знакомство с интерфейсом

Журнал ZuluServer по внешнему виду весьма похожа на продукты семейства Microsoft Office и имеет ленточный интерфейс – панели инструментов, разделенных вкладками.

Общий вид окна программы

1 – Главное окно программы. 2 – Панель с дополнительными окнами программы.

3 – Панели инструментов, разделенные вкладками. 4 – Строка состояния.

Рисунок 117. Общий вид окна программы

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

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

  • Меню

  • «Вкладка Главная»

  • «Вид»

  • «Анализ и статистика»

  • «Слои»

  • «Как открыть файл или папку с логами»

Панель инструментов состоит из кнопки [image] Меню и нескольких панелей, разделенных вкладками.

Кнопка [image] Меню предназначена для вызова главного меню. Во вкладке Главная находятся инструменты для фильтра текста лога, во вкладке Вид – инструменты для преобразования текста лога в более удобный для восприятия вид, а также кнопки включения дополнительных окон, во вкладке Работа с редактором – инструменты анализа лога и вывода статистики.

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

Меню

При нажатии на кнопку [image] Меню вызывается главное меню, представленное на рисунке ниже.

Рисунок 118. Главное меню

Кнопка Открыть предназначена для вызова диалога открытия файла.

Кнопка Выход закрывает программу.

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


Вкладка Главная

Во вкладке Главная находятся инструменты для настройки фильтра.

1 – Поле ввода параметра «Время»; 2 – Поле ввода параметра ID – соединения;

3 – Поле ввода параметра «Проценты»; 4 – Вызов диалога «Ввод времени»;

5 – Вызова диалога «Ввод ID - соединения»; 6 – Вызов диалога «Ввод процентов»;

7 – Отключение параметра «Время»; 8 – Отключение параметра «ID - соединения»;

9 – Отключение параметра «Проценты»; 10 – Поле ввода параметра «IP – адрес»;

11 – Поле ввода параметра «Команды»; 12 – Поле ввода параметра «Пользователи»;

13 – Вызов диалога «Ввод IP - адреса»; 14 – Вызов диалога «Ввод команды»;

15 – Вызов диалога «Ввод имени пользователя»; 16 – Отключение «IP – адрес»;

17 – Отключение параметра «Команда»; 18 – Отключение параметра «Пользователи»;

19 – Поле ввода параметра «Кол-во пакетов»; 20 – Вызов диалога «Ввод кол-во пакетов»; 21 – Отключение параметра «Кол-во пакетов»;

22 – Установка значения «Http» параметра протокол соединения;

23 – Установка значения «Zulu» параметра протокол соединения;

24 – Кнопка Очистить все; 25 – Кнопка «Применить фильтр».

Рисунок 119. Вкладка Главная

Поля ввода 1,2,3,10,11,12,19 предназначены для задания параметров фильтра. Формат строк параметров подробнее описан в разделе 3.1.

Кнопки 4,5,6,13,14,15,20 вызывают дополнительные диалоги. Данные диалоги позволяют облегчить пользователю ввод параметров (раздел 2.6).

Кнопки 7,8,9,16,17,18,21 отключают соответствующие параметры и не дают им участвовать в фильтрации. При этом поле ввода параметра и кнопка вызова дополнительного диалога становятся неактивными (подробнее в разделе 3.1).

Протокол соединения может принимать два значения – «Zulu» и «Http». Флажки 22 и 23 позволяют задать эти значения.

Кнопки 24 очищает все значение параметров: удаляет текст из полей ввода и снимает флажки (если они стоят) «Zulu» и «Http».

Кнопка 25 применяет фильтр (подробнее описано в разделе «Работа с анализатором лога»).


Вид

Во вкладке Вид находятся настройки интерфейса главного окна программы и кнопки вызова дополнительных окон.

1 – Флажок «Перевод команд»; 2 – Флажок «Развернуть / Свернуть»;

3 – кнопка «Информация о действиях»; 4 – Кнопка «Версии»;

5 – Кнопка «Статистика по пользователям»; 6 – Кнопка «Статистика по слою»;

7 – Кнопка «Статистика сервера»; 8 – Кнопка «Длительность команд»;

9 – Кнопка «Лог по слою»

Рисунок 120. Вкладка Вид

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

Если поставить флажок Развернуть / Свернуть, то все блоки текста в главном окне программы будут развернуты. Если флажок снять, то все блоки будут свернуты. Также флажок имеет и третье состояние (закрашенный флажок). Это состояние означает, что в главном окне программы есть и свернутые блоки текста, и развернутые.

Кнопки 5, 6, 7, 8, 9 соответствуют названиям дополнительных окон. Соответственно, каждая кнопка открывает свое окно. Если окно было открыто, оно станет активным.


Анализ и статистика

Во вкладке Анализ и статистика находятся инструменты для анализа и вывода статистики загруженного файла лога.

Вкладка Анализ и статистика

1 – Поле ввода параметра «Время»; 2 – Поле ввода параметра «Пользователи»;

3 –Вызов диалога «Ввод времени»; 4 –Вызов диалога «Ввод имени пользователя»;

5 – Отключение параметра «Время»; 6 – Отключение параметра «Пользователи»;

7 – Кнопка «Вывод статистики по пользователям»;

8 – Кнопка «Вывод статистики по слоям»; 9 – Кнопка «Вывод версий клиентов»;

10 – Кнопка «Вывод статистики сервера»; 11 – Флажок «Скрыть подключения»;

12 – Список условий; 13 – Список со значениями лимита;

14 – Поле ввода времени команды; 15 - Кнопка «Вывести»;

16 – Флажок «Все действия команды»

Рисунок 121. Вкладка Анализ и статистика

Поля ввода 1,2 предназначены для задания параметров статистики. Формат строк параметров подробнее описан в разделе 3.2.

Кнопки 3,4 вызывают дополнительные диалоги. Данные диалоги позволяют облегчить пользователю ввод параметров.

Кнопки 5,6 отключают соответствующие параметры и дают им участвовать при подсчете статистики. При этом поле ввода параметра и кнопка вызова дополнительного диалога становятся неактивными.

Кнопка Вывод статистики по пользователям выводит статистику редактирования объектов по пользователям, а кнопка Вывод статистики по слоям – по слоям.

Кнопка Вывод версий клиентов выводит версии клиентов в соответствующее окно.

Кнопка Вывод статистики сервера выводит статистику сервера в соответствующее окно. Флажок «Скрыть подключения» изменяет формат вывода информации о статистике сервера.

Список условий, список со значениями лимита вывода команд, поле ввода времени задают условия поиска команд по длительности, а кнопка Вывести выводит эту статистику в соответствующее окно.

Флажок Все действия команды отвечает за вывод цепочки команд, представляющих действие.


Слои

Во вкладке Слои находятся инструменты для вывода информации в виде лога о конкретном слое.

1 – Флажок «Добавленные объекты»; 2 – Флажок «Измененные объекты»;

3 – Флажок «Удаленные объекты»; 4 – Поле ввода названия слоя;

5 – Кнопка «Вывести информацию о слое»; 6 – Вызова диалога «Выбор слоя»

Рисунок 122. Вкладка Слои

Флажки «Добавленные объекты», «Измененные объекты», «Удаленные объекты» – параметры, определяющие выводимую информацию о слое.

В поле ввода 4 вводится название слоя, по которому необходимо вывести информацию.

Кнопка Вывести информацию о слое выводит информацию о слое в соответствующее окно. Кнопка 6 вызывает дополнительный диалог выбора слоя (подробнее «Лог по слою»).


Как открыть файл или папку с логами

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

Для того чтобы открыть файл лога (или папку) и навигации по лог-файлам:

  1. В левой верхней части приложения нажмите на кнопку [image] Меню. Откроется диалог выбора файла:

    Диалог выбора файла

    Рисунок 123. Диалог выбора файла

  2. Выберите нужный файл и нажмите на кнопку диалога Открыть. Выбранный файл загрузится в программу и отобразится в главном окне программы. Автоматически будут "подгружены" все лог-файлы, которые находятся в папке с выбранным.

    Для навигации по лог-файлам:

    1. На вкладке Главная в правой части окна включите фильтр по дате, нажав кнопку [image] , и укажите даты для анализа в полях Начало и Конец.

    2. Для выбора определенного файла и просмотра его содержимого выберите необходимый лог-файл в выпадающем списке Файлы.

      Выбора лог-файла для просмотра

      Рисунок 124. Выбора лог-файла для просмотра


Главное окно программы

На рисунке ниже показано главное окно программы.

Главное окно программы

Рисунок 125. Главное окно программы

В этом окне можно просматривать .log файлы – журнал работы ZuluServer. Далее отображается список команд, выполняемых клиентами на сервере, и информация по каждой команде:

  • Время.

  • Протокол (zulu или http).

  • IP-адрес клиента.

  • Имя пользователя.

  • Идентификатор команды.

  • Код команды (каждой команде соответствует свой код).

  • Размер команды в байтах.

  • Процент доставленных пакетов.

  • Номер версии клиента.

Перемещение по файлу осуществляется следующим образом:

  • С помощью движения ползунка (scrollbar) справа. Перемещать ползунок можно, перетаскивая его, нажимая клавиши KeyUp и KeyDown или прокручивая колесо мыши.

  • Клавиша Home – перемещение в начало строки.

  • Клавиша End – перемещение в конец строки.

  • Клавиша PageDown – перемещение на одну страницу (или экран) вниз.

  • Сочетание клавиш Ctrl + Home – перемещение в начало файла.

  • Сочетание клавиш Ctrl + End – перемещение в конец файла.

    Чтобы удобнее было анализировать лог, команды и некоторые блоки текста раскрашиваются. По умолчанию настроены цвета для следующих ситуаций:

    • Голубой – строка с командой «HTTP Запрос».

    • Светлый стальной синий – строка с командой «HTTP ответ».

    • Бледно-синий – текст HTTP запроса и HTTP ответа.

    • Тёмно-лососевый – Сведения об аварийных ситуациях (исключениях) сервера.

    • Тёмный золотарник – строка с командой «Запрос к БД слоя».

    • Светло-золотой – текст запроса к БД.

    Текст из редактора можно перемещать в буфер обмена. Для этого необходимо выделить нужный фрагмент текста с помощью мыши или удерживая клавишу Shift и используя клавиши со стрелками. Затем щелкните правой кнопкой мыши и в появившемся контекстном меню выберите пункт Копировать.

    В редакторе есть возможность скрывать/показывать текст HTTP запросов и ответов, сведения об аварийных ситуациях, а также текст запроса к БД. Для того чтобы скрыть текст, нужно нажать на символ - в окне редактора, а для того чтобы показать – на +.

    В главном окне возможен стандартный поиск информации в тексте. Для этого необходимо нажать комбинацию клавиш Ctrl + F. Откроется дополнительное окно в правом верхнем углу, представленное на рисунке ниже.

    Окно поиска информации в тексте

    1 – Текстовое поле ввода строки для поиска; 2 – Поиска назад;

    3 – Поиска вперед; 4 – Скрыть окно поиска;

    Рисунок 126. Окно поиска информации в тексте

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


Вспомогательные окна (панели)

  • Информация о действиях

  • Версии

  • Статистика по пользователям

  • Статистика по слою

  • Статистика сервера

  • Количество HTTP-команд

  • Длительность команд

  • Лог по слою

Вспомогательные окна используются для вывода дополнительной информации. Вызов вспомогательных окон выполняется через панель «Окна» на вкладке меню «Вид».

Любую из описанных ниже панелей можно переместить в удобное вам положение рабочего окна программы Журнал ZuluServer. Для этого «возьмите» панель за заголовок и перетащите в новое положение. Для того чтобы панель не «прилипала» к краям экрана, при перемещении панели нажмите и удерживайте кнопку Ctrl.

Для изменения размеров панели надо подвести курсор к ее краю, когда курсор поменяет вид нажать левую кнопку мыши и, удерживая ее, изменить размеры панели, затем отпустить кнопку мыши.

Любую панель можно скрыть, щелкнув правой кнопкой мыши по ее заголовку и выбрав в открывшемся контекстном меню пункт «Скрыть» или нажав на крестик в правом верхнем углу панели.

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

  • С помощью движения ползунка (scrollbar) справа. Перемещать ползунок можно, перетаскивая его, нажимая клавиши KeyUp и KeyDown или прокручивая колесо мыши.

  • Клавиша End – перемещение в конец строки.

  • Клавиша Home – перемещение в начало строки.

  • Клавиша PageUp – перемещение на одну страницу (или экран) вверх.

  • Клавиша PageDown – перемещение на одну страницу (или экран) вниз.

Текст из редактора можно перемещать в буфер обмена. Для этого необходимо выделить нужный фрагмент текста либо с помощью мыши или удерживая клавишу Shift и используя клавиши со стрелками. Затем щелкнуть правой кнопкой мыши и в появившемся контекстном меню выбрать пункт «Копировать».

Информация о действиях

Для того чтобы открыть данное окно, нужно нажать на кнопку «Информация о действиях» на панели «Окна» во вкладке «Вид» на панели инструментов. При выборе команды в главном окне отображается вся цепочка команд, входящих в выполнение какого-то действия. Например, если выбрана команда «HTTP запрос», то в окне Информация о действиях попадут HTTP запрос, HTTP ответ и возможные запросы к БД.

Пример вывода информации в окно «Информация о действиях»

Рисунок 127. Пример вывода информации в окно «Информация о действиях»

Как и в главном окне, для удобства блоки текста раскрашиваются в следующие цвета:

  • Голубой - строка с командой «HTTP Запрос».

  • Светлый стальной синий – строка с командой «HTTP ответ».

  • Бледно - синий – текст HTTP запроса и HTTP ответа.

  • Тёмный золотарник – строка с командой «Запрос к БД слоя».

  • Светло-Золотой – текст запроса к БД.

Аналогично, как и в главном окне, скрываются и показываются тексты HTTP запросов и ответов и запросов к БД.

Версии

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

Рисунок 128. Окно Версии

Информация представлена в виде двух уровней. На первом уровне выводятся номера версий, а на втором их пользователи.

Статистика по пользователям

В окне Статистика по пользователям отображается информация о деятельности пользователей на сервере: сколько времени они работали, сколько объектов и на каких слоях добавляли, редактировали или изменяли.

Для того чтобы открыть данное окно, нужно нажать на кнопку Вывод статистики по пользователям на панели Окна во вкладке Вид на панели инструментов.

Информация представлена в виде трех уровней. На первом уровне выводятся имена пользователей, их время работы на сервере и общее количество редактируемых объектов в виде «добавлено/модифицировано/удалено». На втором уровне уже подробно описано, сколько объектов редактировалось каждым пользователем, а также слои, на которых это происходило. На третьем уровне показывается, сколько объектов было добавлено, модифицировано или удалено уже на конкретном слое.

Окно Статистика по пользователям

Рисунок 129. Окно Статистика по пользователям

Статистика по слою

В окне Статистика по слою отображается обратная информация статистике по пользователям, то есть в каких слоях какое количество объектов пользователи добавляли, редактировали или изменяли.

Для того чтобы открыть данное окно нужно нажать на кнопку Вывод статистики по слоям на панели Окна во вкладке Вид на панели инструментов.

Информация представлена в виде трех уровней. На первом уровне выводятся названия слоев и общее количество редактируемых объектов в виде «добавлено / модифицировано / удалено». На втором уровне уже подробно описано, сколько объектов редактировалось на каждом слое, а также пользователи, которые это делали. На третьем уровне показывается, сколько объектов было добавлено, модифицировано или удалено уже конкретным пользователем.

Окно Статистика по слоям

Рисунок 130. Окно Статистика по слоям

Статистика сервера

В окне Статистика сервера выводится полная статистика работы сервера: время работы сервера, количество HTTP запросов, общее количество работавших пользователей, а также включения/выключения сервера и подключения/отключения пользователей в виде лога.

Для того чтобы открыть данное окно, нужно нажать на кнопку Статистика сервера на панели Окна во вкладке Вид на панели инструментов.

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

Окно Статистика сервера

Рисунок 131. Окно Статистика сервера

Для удобства текст раскрашивается в следующие цвета:

  • Голубой – начало работы сервера, начало лога и завершение лога.

  • Зеленый – старт сервера и подключение пользователей.

  • Серый – отключение пользователей и выключение сервера.

  • Красный – аварийное выключение сервера.

Длительность команд

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

Формат вывода команд: время начала команды, ID соединения, расшифрованная команда, общее время выполнения команды в секундах, логин пользователя. Для удобства названия столбцов раскрашены светло-золотым цветом. Каждая нечётная строка представляет собой информацию о команде, а каждая чётная строка представляет собой информацию об астрономическом времени завершения команды (чётные строки выделены серым цветом).

Окно Длительность команд

Рисунок 132. Окно Длительность команд

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

Лог по слою

В окне Лог по слою выводятся действия в конкретном слое.

Окно Лог по слою

Рисунок 133. Окно Лог по слою


Дополнительные диалоги

  • Диалог «Ввод времени»

  • Диалоги «Ввод ID - соединения», «Ввод команды», «Ввод IP - адреса», «Ввод команды», «Ввод имени пользователя»

  • Диалоги «Ввод процента загрузки», диалог «Ввод переданных пакетов»

  • Диалог «Выбор слоя»

Дополнительные диалоги предназначены для облегчения ввода различных параметров. От пользователя требуется только задать значения параметров и нажать и нажать кнопку ОК. Программа сама сформирует необходимые строки и заполнит соответствующие поля на панели инструментов. Подробнее каждый диалог рассмотрен в данном разделе.

Диалог «Ввод времени», «Ввод процента загрузки», «Ввод переданных пакетов»

Диалоги «Ввод времени», «Ввод времени», «Ввод процента загрузки» и «Ввод переданных пакетов» имеют схожую структуру и помогают пользователю вводить значения параметров, соответствующих названию диалогов, – «Время» при фильтре («Фильтр») или выводе статистики измененных объектов («Статистика редактирования объектов по пользователям/слоям»), «Количество переданных пакетов» и «Процент загрузки» при фильтре.

На примере диалога Ввод времени будут рассмотрены данные диалоги.

Диалог Ввод времени

1 – Таблица ввода значений параметра; 2 – Кнопка Удалить;

3 – Кнопка Очистить все; 4 – Кнопка «ОК»;

5 – Кнопка «Отмена»

Рисунок 134. Диалог Ввод времени

Значения необходимо вводить в таблицу для ввода значений параметра. Параметр «Время» состоит из условного знака ( >, <, >< , =, <=, >=) и значения времени (далее знак со значением будем называть УСЛОВИЕМ). Иногда нужно, чтобы условия выполнялись одновременно (логическое И) или выполнялось одно условие из нескольких (логическое ИЛИ). Из-за этого таблица ввода времени имеет следующую структуру: нечетные столбцы служат для ввода условного знака, а четные – для ввода времени. Несколько условий, введенных в одну строку, выполняются одновременно (логическое И). Условия в разных строках соответствуют логическому ИЛИ.

Пример: предположим, что необходимо применить фильтр и получить информацию из двух промежутков времени – 00:00:00 – 05:00:00 и 13:00:00 – 18:00:00. Сформируем условия : (>= 00:00:00 И <= 05:00:00) ИЛИ (>= 13:00:00 И 18:00:00). Далее вводим в таблицу, дважды нажав левой кнопкой мыши на нужную ячейку. Точно так же можно редактировать и уже введенные значения, если это необходимо.

Пример ввода условий

Рисунок 135. Пример ввода условий

Таким образом, все команды, попадающие в заданные интервалы, будут выведены пользователю.

Кнопка Удалить удаляет все выделенные строки из таблицы. Чтобы выделить несколько строк подряд, нужно нажать клавишу Shift и левой кнопкой мыши щелкнуть на последнюю строку, которую необходимо выделить. Также это можно сделать, зажав клавишу Shift и нажимая стрелки Up или Down. Чтобы выделить несколько строк не подряд, необходимо зажать клавишу Ctrl и левой кнопкой мыши щелкать на нужные строки.

Удалить значение времени можно в режиме редактирования: нужно снять флажок, появившийся в ячейке, или удалить все содержимое клавишей Backspace, а затем нажать Enter.

Удалить знак также можно в режиме редактирования: нужно удалить все содержимое в ячейке клавишей Backspace, а затем нажать Enter.

Кнопка Очистить все очищает таблицу ввода параметров.

Кнопка ОК закрывает диалог, формирует строку параметра время и вставляет её в соответствующее поле ввода на панели инструментов.

Кнопка Отмена закрывает диалог без формирования строки параметра.

Диалоги «Ввод ID - соединения», «Ввод команды», «Ввод IP - адреса», «Ввод имени пользователя»

Диалоги «Ввод ID - соединения», «Ввод команды», «Ввод IP - адреса», «Ввод имени пользователя» имеют схожую структуру и помогают пользователю вводить значения параметров, соответствующих названию диалогов, – IP адрес, команды, ID соединения, имя пользователя. Параметры «IP – адрес», «Команды» и «ID соединения» участвую при применении фильтра («Фильтр»), а параметр «Имя пользователя» при применении фильтра и выводе статистики измененных объектов («Статистика редактирования объектов по пользователям/слоям»). На примере диалога «Ввод ID - соединения» будут рассмотрены данные диалоги.

Диалог Ввод ID соединения

1 - Таблица ввода значений параметра; 2 - Кнопка Удалить;

3 – Кнопка Очистить все; 4 – Поле ввода одного значения параметра

5 – Кнопка «Добавить»; 6 – Кнопка «ОК»; 7 – Кнопка «Отмена».

Рисунок 136. Диалог Ввод ID соединения

Значения формируются в таблице ввода. Пользователь может ввести туда несколько значений. Тогда программой при применении фильтра или подсчете статистики значения из лога будут проверяться на соответствие одному из нескольких значений, находящихся в таблице, что соответствует операции логическое ИЛИ. Значения можно вводить в таблицу напрямую. Для этого нужно дважды нажать левой кнопкой мыши на нужную ячейку, а по завершению ввода нажать Enter. Также можно вводить по одному значению в поле ввода и добавлять кнопкой Добавить. Пример заполнения таблицы:

Пример заполнения таблицы

Рисунок 137. Пример заполнения таблицы

Кнопка Удалить удаляет все выделенные строки из таблицы. Чтобы выделить несколько строк подряд, нужно нажать клавишу Shift и левой кнопкой мыши щелкнуть на последнюю строку, которую необходимо выделить. Также можно это сделать, нажав клавишу Shift и нажимая стрелки Up или Down. Чтобы выделить несколько строк не подряд, необходимо зажать клавишу Ctrl и левой кнопкой мыши щелкать на нужные строки.

Удалить одну строку можно в режиме редактирования: клавишей Backspace стереть все, что находится в ячейке и нажать Enter.

Кнопка Очистить все очищает таблицу ввода параметров.

Кнопка ОК закрывает диалог, формирует строку параметра время и вставляет её в соответствующее поле ввода на панели инструментов.

Кнопка Отмена закрывает диалог без формирования строки параметра.

Диалог Выбор слоя

Диалог выбора слоя представляет собой список со всеми слоями, с которыми работали пользователи.

Диалог Выбор слоя
1 – Список со слоями; 2 – Кнопка «ОК»; 3 – Кнопка «Отмена»

Рисунок 138. Диалог Выбор слоя

Для выбора слоя необходимо щелкнуть на строку с названием слоя. Выбранная строка выделится голубым цветом. Затем нажать на кнопку ОК. Выбранный слой отобразится в соответствующем поле на панели инструментов. Если нажать кнопку Отмена, диалог закроется без выбора слоя.


Работа с анализатором лога

  • «Фильтр»

  • «Статистика сервера»

  • «Версии клиентов»

  • «Статистика сервера»

  • «Количество HTTP-команд»

  • «Длительность команд»

  • «Подробная информация о команде»

  • «Лог по слою»

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

Фильтр

Информацию в файле лога можно фильтровать, то есть выводить только определенные команды сервера. Строка с командой представляет собой девять параметров: «Дата», «Время», «Протокол соединения», «IP – адрес», «Логин пользователя», «ID – соединения», «Команды», «Количество переданных пакетов», «Процент загрузки». Для всех параметров, кроме даты, можно задать условия, по которым фильтровать лог. Параметр «дата» не настраивается, так как обычно дата одна на весь файл лога.

Все параметры, кроме протокола соединения, имеют текстовые поля для ввода строк с условиями фильтра на панели Фильтр во вкладке Главная на панели инструментов.

Параметры «IP – адрес», «Логин пользователя», «ID – соединения», «Команды» из лог файла проверяются на точное совпадение со значением, введенным пользователем в соответствующее текстовое поле из соответствующего текстового поля, введенного пользователем. Также для них можно задавать и несколько значений. Тогда каждый параметр строки с командой из файла будет проверяться на точное совпадение хотя бы с одним значением из строки в соответствующем поле (логическое ИЛИ).

Формат вводимых строк для параметров «IP – адрес», «Логин пользователя», «ID – соединения», «Номер команды» следующий: через пробел вводятся значения, которым должен равняться тот или иной параметр строки с командой из лог-файла.

Для параметра «Номер команды» можно вводить как сам номер (число) команды, так и название. Одно значение параметра «IP - адрес» представляет собой запись в виде четырёх десятичных чисел значением от 0 до 255, разделённых точками. Параметры «Логин пользователя», «ID - соединения» и «Номер команды» регистронезависимые – их можно вводить как в верхнем, так и в нижнем регистре.

Для облегчения ввода этих параметров предусмотрены вспомогательные диалоги. Вызываются они кнопками вызова диалога, находящимся рядом с текстовым полем каждого параметра на панели инструментов.

Параметры «Время», «Количество переданных пакетов», «Процент загрузки» из лог-файла проверяются на удовлетворение условию (знак >, <, ><, =, >=, <= и значение), введенному пользователем в соответствующее текстовое поле на панели инструментов. Можно вводить несколько условий, которым значения из файла должны будут удовлетворять одновременно (логическое И). Также можно вводить несколько условий и проверять на удовлетворение одному из них (логическое ИЛИ). Примером операции логическое И может служить интервал:

«> 0 И < 100». Пример операции логическое ИЛИ – «< 100 ИЛИ > 200».

Формат вводимых строк для параметров «Время», «Количество переданных пакетов», «Процент загрузки» следующий: через пробел вводятся условия (знак пробел значение). Если параметр должен удовлетворять нескольким условиям одновременно, то эти условия заключаются в скобки. Пример: (> 0 < 100). Если параметр должен удовлетворять только одному из условий, скобки ставить необязательно.

Для облегчения ввода этих параметров также предусмотрены вспомогательные диалоги (для времени и для остальных). Вызываются они кнопками вызова диалога, находящимся рядом с текстовым полем каждого параметра на панели инструментов.

Параметр «Протокол соединения» может принимать два значения: «zulu» или «http». Для того чтобы задать условие для параметра «протокол соединения», нужно поставить флажок «zulu» и/или «http».

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

Для удобства для параметров «Время», «IP – адрес», «Логин пользователя», «ID – соединения», «Команды», «Количество переданных пакетов», «Процент загрузки» есть кнопки отключения. При нажатии на них соответствующие текстовые поля будут недоступны для редактирования, а введенные в них значения не будут участвовать в поиске. Включить параметры можно еще одним нажатием на соответствующие кнопки отключения.

Статистика редактирования объектов по пользователям/слоям

В программе можно собрать информацию о том, какой пользователь и на каких слоях добавлял, редактировал и удалял объекты. Чтобы вывести эту статистику, необходимо нажать на кнопку Вывод статистики по пользователям на панели Пользователи во вкладке Анализ и статистика. Информация отобразится в окне Статистика по пользователям.

Также можно получить и обратную информацию: на каких слоях какие пользователи работали с объектами. Чтобы вывести эту статистику, необходимо нажать на кнопку Вывод статистики по слоям на панели «Пользователи» во вкладке «Анализ и статистика». В левом нижнем углу в строке статуса появится текст, который пояснит пользователю, какая операция выполняется. В правом нижнем углу появится индикатор выполнения, показывающий пользователю, на какой стадии находится выполнение операции. Информация отобразится в окне Статистика по слою.

Представленную статистику по пользователям и по слоям можно фильтровать: например, получить информацию о том, какие объекты редактировали конкретные пользователях в конкретный промежуток времени. Для этого, прежде чем нажать кнопки Вывод статистики по пользователям и Вывод статистики по слоям, необходимо настроить параметры «Время» и «Пользователи» на панели «Статистика по объектам» во вкладке Анализ и статистика. Настраиваются эти параметры точно так же, как аналогичные параметры из раздела Фильтр .

Версии клиентов

Для того чтобы вывести информацию о версиях клиентов, необходимо нажать на кнопку Вывод версий клиентов на панели «Сервер» во вкладке Анализ и статистика на панели инструментов. В левом нижнем углу в строке статуса появится текст, который пояснит пользователю, какая операция выполняется. В правом нижнем углу появится индикатор выполнения, который покажет пользователю, на какой стадии выполнение операции. Информация выведется в окно Версии.

Статистика сервера

Для вывода статистики сервера необходимо нажать кнопку Вывод статистики сервера на панели «Сервер» во вкладке Анализ и статистика. В левом нижнем углу в строке статуса появится текст, который пояснит пользователю, какая операция выполняется. В правом нижнем углу появится индикатор выполнения, который покажет пользователю, на какой стадии выполнение операции. Данная статистика состоит из набора параметров (время работы сервера, количество работающих пользователей, добавленные объекты, удаленные объекты, измененные объекты, количество запросов) и лога, состоящего из включений/выключений сервера и подключений/отключений пользователей. Вся эта информация выведется в окно Статистика сервера. Подключения/отключения пользователей можно не отображать. Для этого нужно поставить флажок «Скрыть подключения» на панели «Сервер» во вкладке «Анализ и статистика» на панели инструментов

Количество HTTP-команд

Вы можете посмотреть общее количество HTTP запросов к серверу с разделением на платные и бесплатные. Для этого следует перейти на вкладку Анализ и статистика и в правом верхнем углу нажать кнопку Количество HTTP команд. В нижней части окна отобразится статистика вашего лог-файла:

Количество и статистика HTTP команд

Рисунок 139. Количество и статистика HTTP команд

Длительность команд

Для вывода длительности команд необходимо на панели инструментов во вкладке Анализ и статистика на панели Длительность команд выбрать условие (>, <, ><, =, >=, <= ) из списка условий, ввести время выполнения в секундах в поле ввода времени команды и настроить количество выводимых команд в окне, выбрав значение из списка значений лимита. Затем нажать кнопку Вывести. В левом нижнем углу в строке статуса появится текст, который пояснит пользователю, какая операция выполняется. В правом нижнем углу появится индикатор выполнения, который покажет пользователю, на какой стадии выполнение операции. Найденные команды буду выведены в окно Длительность команд.

Подробная информация о команде

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

Лог по слою

Для того чтобы вывести лог по конкретному слою, сначала необходимо настроить действия и название слоя во вкладке Слои на панели инструментов. Нужно поставить флажки на тех операция, информацию о которых необходимо выводить (добавленные объекты, удаленные объекты, измененные объекты), а также в текстовом поле задать имя слоя, для которого выводить выбранные действия. Имя слоя можно задать вручную или выбрать из списка. Для выбора из списка потребуется нажать на кнопку вызова диалога Выбор слоя. После того как будут заданы все настройки, нужно нажать кнопку Вывести информацию о слое. В левом нижнем углу в строке статуса появится текст, который пояснит пользователю, какая операция выполняется. В правом нижнем углу появится индикатор вполнения, который покажет пользователю, на какой стадии выполнение операции. Найденная информация отобразится в окне Лог по слою.


Организация защиты продуктов линейки ZuluGIS

Во всех программных продуктах линейки ZuluGIS применяется программно-аппаратная защита с использованием локального или сетевого ключа электронного ключа защиты HASP HL (Sentinel HASP): https://sentinel.gemalto.com/software-monetization/sentinel-hasp-hl/.

Ключи защиты: слева (фиолетовый) – локальный, справа (красный) – сетевой.

Рисунок 140. Ключи защиты: слева (фиолетовый) – локальный, справа (красный) – сетевой.

Все ключи защиты продуктов линейки ZuluGIS принадлежат к одной серии с маркировкой QZRKE на корпусе ключа. Один ключ может одновременно защищать несколько программных продуктов или модулей продукта. Ключ подключается к USB порту компьютера. Ключ защиты обладает энергонезависимой памятью, в которой содержится информация о том, с какими программными модулями можно работать, используя данный экземпляр ключа.

Для каждого пользователя ключ прошивается индивидуально в соответствии с комплектом поставки программных продуктов. Помимо единой серии у всех ключей нашей компании, каждый экземпляр ключа HASP имеет уникальный номер (HASP ID). На одном компьютере может быть установлено несколько ключей. Все они могут использоваться программными модулями ZuluGIS.

[Важно] Важно

Ключи защиты более ранних версий (для Zulu 5.2, 6.0, 7.0, 8.0) с версией 2021 работать не будут. После проведения обновления программных модулей на ZuluGIS 2021 по соответствующему договору ключи, в зависимости от их типа, подлежат замене или дополнительной программной прошивке.


Драйвер ключа HASP

Для работы ключа на компьютере, где установлен ключ, обязательно должен быть установлен драйвер ключа HASP. Драйвер поставляется в составе полного установочного пакета ZuluGIS и устанавливается вместе с системой (если это не демонстрационная версия). Драйвер ключа можно скачать отдельным файлом: https://www.politerm.com/download/zulu/hasp/srm/HASPUserSetup.exe.

Если драйвер требуется переустановить, то установочный файл драйвера ключа можно скачать с нашего сайта (раздел Скачать https://www.politerm.com/download/?pr=hasp) и, в зависимости от скачанного варианта, запустить из командной строки: Hinstall\haspdinst.exe /i или с помощью графического интерфейса.


Sentinel HASP Admin Control Center

После установки драйвера HASP становится доступен центр администрирования ключей Sentinel HASP Admin Control Center. Он запускается из веб-браузера по адресу http://localhost:1947/ (операционная система должна разрешать работу по порту 1947).

Центр администрирования ключей Sentinel Hasp

Рисунок 141. Центр администрирования ключей Sentinel Hasp

Центр администрирования позволяет просматривать информацию локальным и сетевым ключам, составу и количеству лицензий на программные модули и продукты, количеству текущих пользователей лицензий и т.д. Подробное описание Sentinel HASP Admin Control Center можно прочитать по адресу http://localhost:1947/_int_/ACC_help_index.html.


Локальная защита ZuluServer

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

[Подсказка] Подсказка

Для просмотра доступных HASP ключей и лицензий, записанных на ключ, используйте утилиту Тест ключа (ZuluGIS HASP Test ). Подробнее смотрите раздел «Просмотр доступных лицензий на ключе HASP».


Корпоративная защита ZuluServer

При корпоративной защите один ключ может использоваться при работе нескольких пользователей, чьи компьютеры находятся в сети. Сетевой ключ одновременно будет осуществлять лицензирование ZuluServer и расчётных продуктов.

На сетевом ключе NetHasp записано количество рабочих мест, которые могут одновременно использовать каждый расчетный модуль, и количество одновременных подключений к ZuluServer. Количество одновременно запущенных модулей одного наименования не может превышать количества, записанного в ключе.

[Подсказка] Подсказка

Для просмотра доступных HASP ключей и лицензий, записанных на ключ, используйте утилиту Тест ключа (ZuluGIS HASP Test ). Подробнее смотрите раздел «Просмотр доступных лицензий на ключе HASP».

Ключ должен быть подключен на том же компьютере, где установлен ZuluServer, кроме тех случаев, когда невозможно подключить USB ключ (или программа используется на виртуальной машине). Такой случай рассматривается в разделе: «Лицензирование ZuluServer на виртуальной машине».

На компьютере, где установлен ZuluServer:

  1. Ключ должен быть сетевым, модели NetHasp. Это всегда ключ красного цвета, он должен быть подключен к компьютеру, и на нем должна гореть красная лампочка.

    [Подсказка] Подсказка

    Кроме тех случаев, когда невозможно подключить USB ключ (или программа используется на виртуальной машине). Такой случай рассматривается в разделе: «Лицензирование ZuluServer на виртуальной машине».

  2. Должен быть установлен драйвер ключа HASP.

  3. Следует проверить доступность ключа в центре администрирования ключей Sentinel HASP http://localhost:1947/_int_/devices.html.

  4. В центре администрирования ключей Sentinel HASP на странице http://localhost:1947/_int_/config_from.html должен быть разрешен доступ тех или иных клиентов к использованию сетевого ключа данного компьютера.

    (по умолчанию указано allow=all – разрешено всем).

[Предупреждение] Предупреждение

Операционная система должна разрешать работу по порту 1947.

На компьютерах пользователей (клиентов)

ШАГ 1. Настройка доступа к лицензиям

На компьютерах пользователей:

  1. Должен быть установлен драйвер ключа HASP.

  2. Следует проверить доступность ключа в центре администрирования ключей Sentinel HASP http://localhost:1947/_int_/devices.html.

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

    1. Открыть страницу Configuration.

    2. Перейти на вкладку Allow access to remote licenses.

    3. Включить опцию Allow access to remote licenses.

    4. Включить Aggressive Search for Remote Licenses.

    5. Отключить Broadcast Search for Remote Licenses.

    6. В параметре Specify Search Parameters указать публичный (белый) IP адрес компьютера, где установлен ключ защиты.

    7. Нажать кнопку Submit.

    После сохранения в директории C:\Program Files\Common Files\Aladdin Shared\HASP появится файл настройки конфигурации hasplm.ini.

ШАГ 2. Настройка лицензия для продуктов

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

Признак опроса сетевого ключа можно установить из программы:

  • для ZuluHydro, ZuluThermo, ZuluGaz, ZuluSteam и ZuluDrain на панели расчетов кнопка Настройки, закладка HASP, опция Производить опрос сетевого ключа;

  • для инструмента Пьезометрический график в окне построения графика команда меню Файл|Настройки, опция Производить опрос сетевого ключа;

  • для модуля Коммутационные задачи в панели расчетов кнопка Настройки, закладка HASP, опция Производить опрос сетевого ключа.

[Подсказка] Подсказка

Признак также можно установить через системный реестр. Ниже приведены переменные системного реестра для Zulu, ZuluXTools, ZuluHydro, ZuluThermo, ZuluSteam, ZuluDrain, ZuluGaz, соответственно.

Файл для регистрации этих переменных в папке NetHasp.reg можно скачать по адресу (http://www.politerm.com/download/zulu/NetHasp.reg).

[HKEY_CURRENT_USER\Software\Zulu\5.0\Zulu\Hasp]
«NetHasp»=dword:00000001
«XToolsNetHasp»=dword:00000001
[HKEY_CURRENT_USER\Software\Zulu\5.0\ZuluHydro\Hasp]
«NetHasp»=dword:00000001
[HKEY_CURRENT_USER\Software\Zulu\5.0\ZuluThermo\Hasp]
«NetHasp»=dword:00000001
[HKEY_CURRENT_USER\Software\Zulu\5.0\ZuluSteam\Hasp]
«NetHasp»=dword:00000001
[HKEY_CURRENT_USER\Software\Zulu\5.0\ZuluDrain\Hasp]
«NetHasp»=dword:00000001
[HKEY_CURRENT_USER\Software\Zulu\5.0\ZuluGaz\Hasp]
«NetHasp»=dword:00000001


Лицензирование ZuluServer на виртуальной машине

Если невозможно подключить USB ключ (или при установке ZuluServer на виртуальную машину), следует использовать сетевую лицензия ZuluServer 2021 NET (для получения следует связаться с отделом маркетинга) и опрос лицензии с сетевого ключа. В этом случае проверка лицензии происходит по TCP/IP протоколу с удалённого компьютера, где подключен сетевой ключ HASP.

Чтобы использовать лицензию ZuluServer 2021 NET на виртуальной машине, необходимо:

  • Использовать сетевую лицензию ZuluServer 2021 NET (для получения следует связаться с отделом маркетинга).

  • Установить в файле конфигурации ZuluServ.cfg параметр NetHasp: on. Подробнее смотрите раздел «Опрос сетевой лицензии ZuluServer».

  • В центре администрирования ключей Sentinel Hasр на странице Configuration http://localhost:1947/_int_/config_from.html

    1. Перейти на вкладку Allow access to remote licenses.

    2. Включить опцию Allow access to remote licenses.

    3. Включить Aggressive Search for Remote Licenses.

    4. Отключить Broadcast Search for Remote Licenses.

    5. В параметре Specify Search Parameters указать публичный (белый) IP адрес компьютера, где установлен ключ защиты.

    6. Нажать кнопку Submit.

    Через некоторое время ключ должен отобразиться в центре администрирования ключей Sentinel HASP.

    Также для просмотра лицензий на ключе HASP вы можете воспользоваться утилитой ZuluGIS HASP Test.


Просмотр доступных лицензий на ключе HASP

Информацию о программных продуктах, доступных для работы с ключом, можно посмотреть при помощи утилиты ZuluGIS HASP Test, доступной по ссылке http://www.politerm.com/download/Zulu80HaspUpdate.exe

Утилита «ZuluGIS HASP Test»

Рисунок 142. Утилита «ZuluGIS HASP Test»

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

  • Hasp Net10, id: 62112**** – уникальный номер ключа (Net10 – сетевой ключ, Pro – локальный);

  • Лицензия ZuluServer может записана на ключ в виде:

    • "локальной" лицензии ZuluServer 2021 – в этом случае ключ HASP должен быть подключен к USB компьютера, где установлен ZuluServer;

    • "сетевой" лицензии ZuluServer NET – в случае, если невозможно подключить USB ключ, или при использовании ZuluServer на виртуальной машине;

  • users: 10 – количество одновременных подключений к ZuluServer;

  • ZuluThermo Naladka – лицензия на наладочный расчет тепловой сети;

  • id: 7 – порядковый номер лицензии на ключе, отображаемый в окне центра администрирования ключей http://localhost:1947/_int_/features.html;

  • seats: 1 – количество рабочих мест, имеющихся на сетевом ключе, которые могут одновременно использовать данную лицензию;

  • queries: XX – количество доступных запросов веб-служб в сутки;

  • max tags: XX – количество доступных тегов для ZuluOPC;

  • Версия программного обеспечения указывается рядом с названием продукта: 2021, 8.0 или 7.0.

[Подсказка] Подсказка

Информацию о том, какие программные модули записаны на ключ защиты, какие модули в данный момент задействованы и какие свободны, также можно посмотреть на странице Sentinel HASP Admin Control Center http://localhost:1947/_int_/devices.html, нажав на кнопку Net Features.

Как узнать, что лицензия на ZuluServer сетевая ZuluServer 2021 NET

Чтобы узнать, сетевая ли у вас лицензия ZuluServer, следует обязательно запускать утилиту ZuluGIS HASP Test на компьютере, где расположен HASP ключ (установлен в USB порт). Если лицензия сетевая, то она будет отображаться как ZuluServer 2021 NET.

[Внимание] Внимание

Если вы всё же проверяете на компьютере, где физически не расположен ключ, то лицензия может отобразиться как локальная — ZuluServer 2021.


Хранение и эксплуатация ключа

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

При присоединении ключа к порту USB нельзя прилагать слишком много усилий; если ключ не вставляется свободно в порт, необходимо проверить, правильно ли вы его присоединяете.

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

Только при правильном хранении и эксплуатации ключа мы можем гарантировать его нормальную работу.

[Предупреждение] Предупреждение

Не теряйте ключ, так как без него система будет работать только в демонстрационном режиме («Ограничение использования и лицензия»). При утере ключа восстановить его невозможно.


Команды ZWS

  • GetElemBlob (ZWS)

    Возвращает содержимое бинарного поля базы данных

  • GetElemsByID (ZWS)

    Возвращает данные объектов слоя Zulu по заданному списку ID.

  • GetLayerBaseInfo (ZWS)

    Возвращает описание базы данных слоя

  • GetLayerBounds (ZWS)

    Возвращает габариты слоя

  • GetLayerLabels (ZWS)

    Возвращает список вариантов надписей слоя

  • GetLayerList (ZWS)

    Возвращает список слоев Zulu, опубликованных на данном сервере, которые готовы работать по протоколу ZWS.

  • GetLayerThemes (ZWS)

    Возвращает список тематических раскрасок слоя

  • GetLayerTile (ZWS)

    Возвращает тайл слоя с заданными параметрами

  • GetLayerTypes (ZWS)

    Возвращает структуру типов слоя

  • GetLayerUpdateCount (ZWS)

    Возвращает временную метку слоя

  • GetZMMap (ZWS)

    Возвращает описатель карты с сервера

  • GetZMMapList (ZWS)

    Возвращает список карт Zulu, опубликованных на данном сервере, которые готовы работать по протоколу ZWS.

  • IntersectElemByLayer (ZWS)

    Пересекает объект слоя с объектами другого слоя

  • LayerAddPolygon (ZWS)

    Добавляет в слой площадной объект

  • LayerAddPolyline (ZWS)

    Добавляет в слой линейный объект

  • LayerAddSymbol (ZWS)

    Добавляет в слой символьный объект

  • LayerBatchEdit (ZWS)

    Позволяет выполнять пакетное редактирование. Поддерживаются следующие виды операций:

  • LayerDeleteElement (ZWS)

    Удаляет объект слоя

  • LayerDeleteNode (ZWS)

    Удаляет вершину из объекта

  • LayerExecSQL (ZWS)

    Выполняет SQL запрос к слою Zulu

  • LayerFindConnected (ZWS)

    Возвращает список объектов сети, связанных с заданным ID

  • LayerFindWay (ZWS)

    Поиск кратчайшего пути по сети слоя

  • LayerGetIncidentElements (ZWS)

    Возвращает список объектов, связанных с данным ID

  • LayerInsertNode (ZWS)

    Добавляет новую точку перелома в полилинию или полигон линейного или площадного объекта.

  • LayerIntersectByBox (ZWS)

    Возвращает данные объектов слоя, попавших в заданную прямоугольную область. Только с версии ZuluServer 2021

  • LayerIntersectByRadius (ZWS)

    Возвращает данные объектов слоя, попавших в окрестность заданного радиуса

  • LayerMoveElement (ZWS)

    Перемещает объект слоя

  • LayerMoveNode (ZWS)

    Перемещение узла элемента

  • LayerQueryByExample (ZWS)

    Выполняет запрос к слою

  • LayerReadCustomData (ZWS)

    Возвращает пользовательские данные заданного слоя по заданному строковому идентификатору

  • LayerWriteCustomData (ZWS)

    Записывает в слой пользовательские данные для заданного строкового идентификатора.

  • NetworkAnalyzeSwitch (ZWS)

    Выполняет анализ заданных переключений на сети.

  • NetworkRecalc (ZWS)

    Выполняет переключения на сети в соответствии с состоянием запорной арматуры

  • SelectElemByXY (ZWS)

    Возвращает данные объектов слоя Zulu, расположенных в указанной точке на местности.

  • SetElemBlob (ZWS)

    Записывает бинарные данные в базу данных слоя

  • SetElemState (ZWS)

    Устанавливает режим объекта слоя

  • TrackingGetInfoByXY (ZWS)

    Получает информацию со слоя трекинга по указанным координатам.

  • TrackingGetLayerList (ZWS)

    Возвращает список слоев трекинга Zulu, опубликованных на данном сервере, которые готовы работать по протоколу ZWS.

  • TrackingGetVector (ZWS)

    Возвращает векторные данные слоя трекинга.

  • TrackingRegisterDevice (ZWS)

    Регистрирует новое устройство на сервере трекинга.

  • TrackingSetPosition (ZWS)

    Передаёт информацию о текущем местоположении и времени на сервер.

  • UpdateElemAttributes (ZWS)

    Обновляет атрибуты объекта слоя

  • NetToolsTaskGetErrors (ZWS)

    Получение информации об ошибках во время проведения расчета.

  • NetToolsTaskGetOutput (ZWS)

    Получение протокола расчета, которые выводятся во время проведения расчетов.

  • NetToolsTaskGetStatus (ZWS)

    Получение статуса выполнения операции: завершилась ли она или еще в процессе выполнения.

  • NetToolsTaskRun (ZWS)

    Запуск задачи расчета с указанными параметрами.

  • NetToolsTaskStop (ZWS)

    Прерывание задачи расчета по указанному идентификатору задачи (хендлеру). Работу с данной задачей можно будет продолжить - повторно запустить расчет или запустить с другими параметрами расчета.

  • NetToolsTaskTerminate (ZWS)

    Завершение задачи расчета по указанному идентификатору задачи (хендлеру). После завершения, работа с данной задачей будет невозможна.


GetElemBlob (ZWS)

Возвращает содержимое бинарного поля базы данных

Схема запроса:

Схема ответа:

Пример запроса:

   http://zs.zulugis.ru:6473/zws/GetElemBlob/mo%3Adefekt_demo/80_Sys:80/f8/BaseID=11&QueryName=
    %D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F+%D0%BE%D0%B1%D1%89%D0%B0%D1%8F

Пример ответа:


GetElemsByID (ZWS)

Возвращает данные объектов слоя Zulu по заданному списку ID.

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetElemsByID" type="typeGetElemsByID"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeSampleImage">
        <xs:all>
            <xs:element name="Width" type="xs:integer"/>
            <xs:element name="Height" type="xs:integer" minOccurs="0"/>
            <xs:element name="Transparent" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="SpaceX" type="xs:integer" minOccurs="0" default="0"/>
            <xs:element name="SpaceY" type="xs:integer" minOccurs="0" default="0"/>
            <xs:element name="Angle" type="xs:double" minOccurs="0" default="0"/>
            <xs:element name="BkColor" type="xs:integer" minOccurs="0" default="16777215"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeGetElemsByID">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer" minOccurs="0"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Схема ответа:

    <xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:choice minOccurs="0">
                <xs:element name="GetElemsByID" type="typeSelectElemByXYResponse"/>
            </xs:choice>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
    </xs:element>

    <xs:complexType name="typeSelectElemByXYResponse">
        <xs:sequence>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="TypeID" type="xs:integer"/>
                        <xs:element name="ModeNum" type="typeModeNum"/>
                        <xs:element name="Modes">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Mode" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element name="Index" type="xs:integer"/>
                                                <xs:element name="Title" type="xs:string"/>
                                                <xs:element name="SwitchState" type="typeStateFlag"
                                                  minOccurs="0"/>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Queries">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element name="BaseID" type="xs:integer"/>
                                                <xs:element name="Name" type="xs:string"/>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Records" type="typeRecords"/>
                        <xs:element name="Geometry" type="typeGeometry"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetElemsByID>
        <Layer>riga:teplo</Layer>
        <Attr>No</Attr>
        <Geometry>Yes</Geometry>
        <ElemID>143 145 147</ElemID>
        </GetElemsByID>
    </Command>
</zulu-server>

Пример ответа:

    <?xml version="1.0" encoding="UTF-8"?>
    <zwsResponse>
        <Element>
            <ElemID>143</ElemID>
            <TypeID>2</TypeID>
            <ModeNum>1</ModeNum>
            <Geometry>
                <Format>KML</Format>
                   <Placemark>
                      <Point>
                          <coordinates>24.0360291621298,56.9523768333450</coordinates>
                      </Point>
                  </Placemark>
           </Geometry>
        </Element>
        <Element>
            <ElemID>145</ElemID>
            <TypeID>2</TypeID>
            <ModeNum>1</ModeNum>
            <Geometry>
                <Format>KML</Format>
                 <Placemark>
                      <Point>
                          <coordinates>24.0352832245440,56.9537345512725</coordinates>
                      </Point>
                 </Placemark>
            </Geometry>
        </Element>
        <Element>
            <ElemID>147</ElemID>
            <TypeID>2</TypeID>
            <ModeNum>1</ModeNum>
            <Geometry>
                <Format>KML</Format>
                <Placemark>
                    <Point>
                        <coordinates>24.0353179530160,56.9548176887342</coordinates>
                    </Point>
                </Placemark>
            </Geometry>
        </Element>
        <RetVal>3</RetVal>
    </zwsResponse>


GetLayerBaseInfo (ZWS)

Возвращает описание базы данных слоя

Схема запроса:

    <xs:complexType name="typeGetLayerBaseInfo">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer" minOccurs="0"/>
            <xs:element name="BasedID" type="xs:integer" minOccurs="0"/>
            <xs:element name="Queries" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="Forms" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

<xs:complexType name="typeGetLayerBaseInfoResponse">
        <xs:all>
            <xs:element name="Base">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="BaseID" type="xs:integer"/>
                        <xs:element name="UserName" type="xs:string"/>
                        <xs:element name="Queries">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Query">
                                        <xs:complexType>
                                            <xs:sequence>
                                                <xs:element name="Name" type="xs:string"
                                                  minOccurs="1" maxOccurs="1"/>
                                                <xs:element name="Fields">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="Field">
                                                  <xs:complexType>
                                                  <xs:all>
                                                  <xs:element name="Name" type="xs:string"/>
                                                  <xs:element name="UserName" type="xs:string"/>
                                                  </xs:all>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>
                                            </xs:sequence>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Forms">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Form">
                                        <xs:complexType>
                                            <xs:sequence>
                                                <xs:element name="Name" type="xs:string"
                                                  minOccurs="1" maxOccurs="1"/>
                                                <xs:element name="QueryName" type="xs:string"
                                                  minOccurs="1" maxOccurs="1"/>
                                                <xs:element name="Fields">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="Field">
                                                  <xs:complexType>
                                                  <xs:all>
                                                  <xs:element name="Name" type="xs:string"/>
                                                  <xs:element name="UserName" type="xs:string"/>
                                                  </xs:all>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>
                                            </xs:sequence>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetLayerBaseInfo>
            <Layer>riga:teplo</Layer>
            <TypeID>6</TypeID>
            <Queries>no</Queries>
            <Forms>yes</Forms>
        </GetLayerBaseInfo>
    </Command>
</zulu-server>


GetLayerBounds (ZWS)

Возвращает габариты слоя

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="GetLayerBounds" type="typeGetLayerBounds"/>
                     </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeGetLayerBounds">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:complexType name="typeGetLayerBoundsResponse">
    <xs:all>
        <xs:element name="Bounds">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="BoundingBox" type="typeBoundingBox" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:all>
</xs:complexType>

<xs:complexType name="typeBoundingBox">
    <xs:attribute name="CRS" type="typeCRS"/>
    <xs:attribute name="minx" type="xs:double"/>
    <xs:attribute name="miny" type="xs:double"/>
    <xs:attribute name="maxx" type="xs:double"/>
    <xs:attribute name="maxy" type="xs:double"/>
</xs:complexType>

Пример запроса:

    <zulu-server service="zws" version="1.0.0">
        <Command>
            <GetLayerBounds>
            <Layer>riga:teplo</Layer>
            </GetLayerBounds>
        </Command>
    </zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <GetLayerBounds>
        <Bounds>
            <BoundingBox CRS="EPSG:4326" minx="56.886598" miny="23.992510" maxx="56.977003" maxy="24.116738" />
            <BoundingBox CRS="EPSG:3857" minx="7736975.513859" miny="2670833.945157" maxx="7755419.826169" maxy="2684663.016566" />
        </Bounds>
    </GetLayerBounds>
    <RetVal>0</RetVal>
</zwsResponse>


GetLayerLabels (ZWS)

Возвращает список вариантов надписей слоя

Схема запроса:

   <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetLayerLabels" type="typeGetLayerLabels"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetLayerLabels">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="GetLayerLabels" type="typeGetLayerLabelsResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetLayerLabelsResponse">
        <xs:all>
            <xs:element name="LabelLayers">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="LabelLayer" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="UserName" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetLayerLabels>
             <Layer>riga:teplo</Layer>
        </GetLayerLabels>
    </Command>
</zulu-server>

Пример ответа:

    <?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <GetLayerLabels>
        <LabelLayers>
            <LabelLayer>
                <ID>0</ID>
                <UserName>Siltumavotu parametri</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>1</ID>
                <UserName>Siltumavoti</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>2</ID>
                <UserName>Piesleguma datums</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>3</ID>
                <UserName>Kameru nosaukumi</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>4</ID>
                <UserName>Aizbidni,koveru nosaukumi</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>5</ID>
                <UserName>Zad</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>6</ID>
                <UserName>Abonentu slodzes</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>7</ID>
                <UserName>Klients</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>8</ID>
                <UserName>PAC</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>9</ID>
                <UserName>Abonenta informacija</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>10</ID>
                <UserName>Kamera_dati</UserName>
            </LabelLayer>
            <LabelLayer>
                <ID>11</ID>
                <UserName>Участки</UserName>
            </LabelLayer>
        </LabelLayers>
    </GetLayerLabels>
    <RetVal>12</RetVal>
</zwsResponse>


GetLayerList (ZWS)

Возвращает список слоев Zulu, опубликованных на данном сервере, которые готовы работать по протоколу ZWS.

Схема запроса:

   <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetLayerList"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="GetLayerList" type="typeGetLayerListResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetLayerListResponse">
        <xs:sequence>
            <xs:element name="Layer" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Name" type="xs:string"/>
                        <xs:element name="Title" type="xs:string"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

Пример запроса:

Пример POST запроса
    <?xml version="1.0" encoding="UTF-8"?>
    <zulu-server service="zws" version="1.0.0">
        <Command>
            <GetLayerList/>
        </Command>
    </zulu-server>

Пример GET запроса
http://zs.zulugis.ru:6473/zws/getlayerlist

Пример ответа:

    <?xml version="1.0" encoding="UTF-8"?>
    <zwsResponse>
    <GetLayerList>
      <Layer>
        <Name>riga:houses</Name>
        <Title>buve 1</Title>
      </Layer>
      <Layer>
        <Name>riga:teplo</Name>
        <Title>Kreisajs</Title>
      </Layer>
      <Layer>
        <Name>mo:vo</Name>
        <Title>Водоотведение</Title>
      </Layer>
      <Layer>
        <Name>mo:ts</Name>
        <Title>Тепловая сеть</Title>
      </Layer>
      <Layer>
        <Name>mo:region</Name>
        <Title>Районы МО</Title>
      </Layer>
      <Layer>
        <Name>kr:adm</Name>
        <Title>Административное деление</Title>
      </Layer>
    </GetLayerList>
      <RetVal>6</RetVal>
    </zwsResponse>


GetLayerThemes (ZWS)

Возвращает список тематических раскрасок слоя

Схема запроса:

<xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetLayerThemes" type="typeGetLayerThemes"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetLayerThemes">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

       <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="GetLayerThemes" type="typeGetLayerThemesResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

<xs:complexType name="typeGetLayerThemesResponse">
        <xs:all>
            <xs:element name="Themes">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Theme" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="UserName" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetLayerThemes>
             <Layer>riga:teplo</Layer>
        </GetLayerThemes>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <GetLayerThemes>
        <Themes>
            <Theme>
                <ID>1</ID>
                <UserName>Источники</UserName>
            </Theme>
            <Theme>
                <ID>2</ID>
                <UserName>Участки 0.9</UserName>
            </Theme>
        </Themes>
    </GetLayerThemes>
    <RetVal>2</RetVal>
</zwsResponse>


GetLayerTile (ZWS)

Возвращает тайл слоя с заданными параметрами

Схема запроса:

<?xml version="1.0" encoding="UTF-8"?>
<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="GetLayerTile" type="typeGetLayerTile"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeGetLayerTile">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="x" type="xs:integer"/>
        <xs:element name="y" type="xs:integer"/>
        <xs:element name="z" type="xs:integer"/>
        <xs:element name="Antialiasing" type="typeFlag" minOccurs="0" default="No"/>
        <xs:element name="ShowDirection" type="typeFlag" minOccurs="0" default="No"/>
        <xs:element name="Themes" type="typeListOfIntegers"/>
        <xs:element name="Labels" type="typeListOfIntegers"/>
        <xs:element name="Hidden" minOccurs="0" maxOccurs="1">
            <xs:complexType>
                <xs:all>
                    <xs:element name="Modes" type="kml:CoordinatesType"/>
                </xs:all>
            </xs:complexType>
        </xs:element>
    </xs:all>
</xs:complexType>

Схема ответа:

Пример запроса:

<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetLayerTile>
            <x>297141</x>
            <y>160694</y>
            <z>19</z>
            <Layer>riga:teplo</Layer>
        </GetLayerTile>
    </Command>
</zulu-server>

Пример ответа:


GetLayerTypes (ZWS)

Возвращает структуру типов слоя

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="GetLayerTypes" type="typeGetLayerTypes"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeGetLayerTypes">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:choice minOccurs="0">
                <xs:element name="GetLayerTypes" type="typeGetLayerTypesResponse"/>
            </xs:choice>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeGetLayerTypesResponse">
    <xs:all>
        <xs:element name="Types">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Type" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:all>
                                <xs:element name="Id" type="xs:integer"/>
                                <xs:element name="Title" type="xs:string"/>
                                <xs:element name="GraphType" type="typeGraphType"/>
                                <xs:element name="Tag" type="xs:integer"/>
                                <xs:element name="Modes">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="Mode" minOccurs="0"
                                                maxOccurs="unbounded">
                                                <xs:complexType>
                                                    <xs:all>
                                                        <xs:element name="Index" type="xs:integer"/>
                                                        <xs:element name="Title" type="xs:string"/>
                                                        <xs:element name="SwitchState" type="typeStateFlag" minOccurs="0"/>
                                                        <xs:element name="Image" type="xs:string" minOccurs="0"/>
                                                    </xs:all>
                                                </xs:complexType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:all>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:all>
</xs:complexType>

Пример запроса:

    <?xml version="1.0" encoding="UTF-8"?>
    <zulu-server service="zws" version="1.0.0">
        <Command>
            <GetLayerTypes>
                   <Layer>riga:teplo</Layer>
               </GetLayerTypes>
        </Command>
        </zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <GetLayerTypes>
        <Types>
            <Type>
                <Id>-1</Id>
                <Title>Primitives</Title>
            </Type>
            <Type>
                <Id>1</Id>
                <Title>Источник</Title>
                <GraphType>Point</GraphType>
                <Tag>2</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Работа</Title>
                        <SwitchState>On</SwitchState>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Отключен</Title>
                        <SwitchState>Off</SwitchState>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>2</Id>
                <Title>Узел</Title>
                <GraphType>Point</GraphType>
                <Tag>5</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Тепловая камера</Title>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Разветвление</Title>
                    </Mode>
                    <Mode>
                        <Index>3</Index>
                        <Title>Смена диаметра</Title>
                    </Mode>
                    <Mode>
                        <Index>4</Index>
                        <Title>cmena vida prok</Title>
                    </Mode>
                    <Mode>
                        <Index>5</Index>
                        <Title>Kover</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>3</Id>
                <Title>Потpебитель</Title>
                <GraphType>Point</GraphType>
                <Tag>4</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Работа</Title>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Отключен</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>4</Id>
                <Title>Насосная станция</Title>
                <GraphType>Point</GraphType>
                <Tag>5</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Работа</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>5</Id>
                <Title>Задвижка</Title>
                <GraphType>Point</GraphType>
                <Tag>3</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Открыта</Title>
                        <SwitchState>On</SwitchState>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Закрыта </Title>
                        <SwitchState>Off</SwitchState>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>6</Id>
                <Title>Участки</Title>
                <GraphType>Line</GraphType>
                <Tag>1</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Включен</Title>
                        <SwitchState>On</SwitchState>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Отключен</Title>
                        <SwitchState>Off</SwitchState>
                    </Mode>
                    <Mode>
                        <Index>3</Index>
                        <Title>Отключ. обратный тp-д</Title>
                        <SwitchState>On</SwitchState>
                    </Mode>
                    <Mode>
                        <Index>4</Index>
                        <Title>Отключ. подающий тp-д</Title>
                        <SwitchState>On</SwitchState>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>7</Id>
                <Title>Дросселирующий узел</Title>
                <GraphType>Point</GraphType>
                <Tag>5</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Вычиcляемая шайба</Title>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Устанавливаемая шайба</Title>
                    </Mode>
                    <Mode>
                        <Index>3</Index>
                        <Title>Регулятор напора</Title>
                    </Mode>
                    <Mode>
                        <Index>4</Index>
                        <Title>Регулятор давления в подаюшем</Title>
                    </Mode>
                    <Mode>
                        <Index>5</Index>
                        <Title>Регулятор давления в обратном</Title>
                    </Mode>
                    <Mode>
                        <Index>6</Index>
                        <Title>Регулятор расхода на подающем</Title>
                    </Mode>
                    <Mode>
                        <Index>7</Index>
                        <Title>Регулятор расхода на обратном</Title>
                    </Mode>
                    <Mode>
                        <Index>8</Index>
                        <Title>Регулятор напора на обратном</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>8</Id>
                <Title>ЦТП</Title>
                <GraphType>Point</GraphType>
                <Tag>0</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>ЦТП</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>9</Id>
                <Title>Граница балансовой принадлежности</Title>
                <GraphType>Point</GraphType>
                <Tag>0</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Граница </Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>10</Id>
                <Title>Узел учета</Title>
                <GraphType>Point</GraphType>
                <Tag>0</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Приборы учета</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>11</Id>
                <Title>Перемычка</Title>
                <GraphType>Point</GraphType>
                <Tag>0</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Включена</Title>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Закрыта</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>12</Id>
                <Title>Обобщенный потребитель</Title>
                <GraphType>Point</GraphType>
                <Tag>4</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Работа</Title>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Отключен</Title>
                    </Mode>
                </Modes>
            </Type>
            <Type>
                <Id>13</Id>
                <Title>Вспомогательный участок</Title>
                <GraphType>Line</GraphType>
                <Tag>1</Tag>
                <Modes>
                    <Mode>
                        <Index>1</Index>
                        <Title>Для ЦТП</Title>
                        <SwitchState>On</SwitchState>
                    </Mode>
                    <Mode>
                        <Index>2</Index>
                        <Title>Указатель узла измерения регулятора</Title>
                        <SwitchState>Off</SwitchState>
                    </Mode>
                </Modes>
            </Type>
        </Types>
    </GetLayerTypes>
    <RetVal>14</RetVal>
</zwsResponse>


GetLayerUpdateCount (ZWS)

Возвращает временную метку слоя

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetLayerUpdateCount" type="typeGetLayerUpdateCount"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetLayerUpdateCount">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

Пример запроса:

<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetLayerUpdateCount>
          <Layer>riga:teplo</Layer>
        </GetLayerUpdateCount>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <GetLayerUpdateCount/>
    <RetVal>372</RetVal>
</zwsResponse>


GetZMMap (ZWS)

Возвращает описатель карты с сервера

Схема запроса:

    <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                          <xs:element name="GetZMMap" type="typeGetZMMap"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetZMMap">
        <xs:all>
            <xs:element name="Id" type="xs:string" minOccurs="1" maxOccurs="1"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

Пример запроса:

<zulu-server service="zws" version="1.0.0">
    <Command>
        <GetZMMap>
          <Id>1cf221d3-fd7e-4c2d-a2cf-15b39d5868ac</Id>
        </GetZMMap>
    </Command>
</zulu-server>

Пример ответа:

{
  "layerData": [
    {
      "mapId": "f8dd3c1f-602b-4055-b588-598ecc39763e",
      "layerId": "SQLITE-f6cef5c7-e7c1-42d6-ab54-e7353865361f",
      "data": {
        "minShowLevel": 0,
        "maxShowLevel": 21
      }
    },
    {
      "mapId": "f8dd3c1f-602b-4055-b588-598ecc39763e",
      "layerId": "86135940-e3d4-48a3-9910-b7201287f44a",
      "data": {
        "queries": {
          "11|16": "Информация общая"
        }
      }
    },
    {
      "mapId": "f8dd3c1f-602b-4055-b588-598ecc39763e",
      "layerId": "ZWS-b5ec6696-80e4-483e-93de-c90dcb47dd7c",
      "data": {
        "queries": {
          "11|16": "Информация общая"
        }
      }
    },
    {
      "mapId": "f8dd3c1f-602b-4055-b588-598ecc39763e",
      "layerId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "data": {
        "quickSearch": {
          "fields": [
            {
              "name": "Glava",
              "userName": "Глава администрации",
              "value": "",
              "baseId": "1",
              "form": {
                "name": "Основной",
                "queryname": "Основной",
                "type": "{\"id\":\"-1\",\"modes\":[],\"title\":\"Primitives\"}"
              }
            }
          ],
          "count": 5,
          "layerId": "111a5f5c-6232-447b-b923-124666e64b6e"
        }
      }
    }
  ],
  "password": "",
  "interactive": "ZWS-e3f780d4-b649-4590-a466-3c71c9f77776",
  "viewportY": -0.1876000389456749,
  "tile_layers": [
    {
      "active": true,
      "description": {
        "name": "Open Street Map",
        "type": 1,
        "id": "Default-OSM",
        "uri_data": {
          "projection": "EPSG:3857",
          "lon": "Восток",
          "xyOrder": "X/Y",
          "zeroLat": "90.00",
          "name": "Open Street Map",
          "zeroLon": "-180.00",
          "uri": "http://a.tile.openstreetmap.org/<z>/<x>/<y>.png",
          "lat": "Юг",
          "model": "OpenStreetMap"
        }
      }
    },
    {
      "active": false,
      "description": {
        "name": "Rosreestr",
        "type": 2,
        "id": "WMS-a4b3d857-57d3-4f09-a816-bced9822357d",
        "uri_data": {
          "ServerGetMapURL": "http://maps.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WmsServer?",
          "feature_info": [
            "application/vnd.esri.wms_raw_xml",
            "application/vnd.esri.wms_featureinfo_xml",
            "application/vnd.ogc.wms_xml",
            "application/geojson",
            "text/xml",
            "text/html",
            "text/plain"
          ],
          "Layers": [
            {
              "Queryable": false,
              "Title": "Кадастровое деление",
              "Query": false,
              "Layers": [
                {
                  "Queryable": true,
                  "Title": "Объекты недвижимости",
                  "Query": true,
                  "Layers": [
                    {
                      "Queryable": true,
                      "Title": "Земельные участки (крупные)",
                      "Query": true,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "1",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144386833333333,
                        0.0016379149312267273,
                        0.7273833472222223,
                        0.9983620852327448
                      ],
                      "Name": "1",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Земельные участки",
                      "Query": true,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "2",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144386833333333,
                        0.0016379149312267273,
                        0.7273833472222223,
                        0.9983620852327448
                      ],
                      "Name": "2",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Объекты капитального строительства",
                      "Query": true,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "3",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6232982694444444,
                        0.16683903551275495,
                        0.6603082611111111,
                        0.4043643786303021
                      ],
                      "Name": "3",
                      "Show": true
                    }
                  ],
                  "Level": 2,
                  "Styles": [],
                  "bounds": [
                    0.6144386833333333,
                    0.0016379149312267273,
                    0.7273833472222223,
                    0.9983620852327448
                  ],
                  "Name": "",
                  "Show": true
                },
                {
                  "Queryable": true,
                  "Title": "Кадастровые кварталы",
                  "Query": true,
                  "Layers": [
                    {
                      "Queryable": true,
                      "Title": "Кадастровые кварталы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "5",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "5",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые кварталы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "6",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "6",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые кварталы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "7",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "7",
                      "Show": true
                    }
                  ],
                  "Level": 2,
                  "Styles": [],
                  "bounds": [
                    0.6144032861111111,
                    0.0016379149312267273,
                    0.7278192638888888,
                    0.9983620852327448
                  ],
                  "Name": "",
                  "Show": true
                },
                {
                  "Queryable": true,
                  "Title": "Кадастровые районы",
                  "Query": true,
                  "Layers": [
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "9",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "9",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "10",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "10",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "11",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "11",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы границы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "12",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "12",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы границы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "13",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "13",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "14",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "14",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы границы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "15",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "15",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые районы границы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "16",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "16",
                      "Show": true
                    }
                  ],
                  "Level": 2,
                  "Styles": [],
                  "bounds": [
                    0.6144032861111111,
                    0.0016379149312267273,
                    0.7278192638888888,
                    0.9983620852327448
                  ],
                  "Name": "",
                  "Show": true
                },
                {
                  "Queryable": true,
                  "Title": "Кадастровые округа",
                  "Query": true,
                  "Layers": [
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "18",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "18",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "19",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "19",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "20",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "20",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "21",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "21",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "22",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "22",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа границы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "23",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "23",
                      "Show": true
                    },
                    {
                      "Queryable": true,
                      "Title": "Кадастровые округа границы",
                      "Query": false,
                      "Layers": [],
                      "Level": 3,
                      "Styles": [
                        {
                          "Level": 4,
                          "Name": "default",
                          "Title": "24",
                          "Show": true
                        }
                      ],
                      "bounds": [
                        0.6144032861111111,
                        0.0016379149312267273,
                        0.7278192638888888,
                        0.9983620852327448
                      ],
                      "Name": "24",
                      "Show": true
                    }
                  ],
                  "Level": 2,
                  "Styles": [],
                  "bounds": [
                    0.6144032861111111,
                    0.0016379149312267273,
                    0.7278192638888888,
                    0.9983620852327448
                  ],
                  "Name": "",
                  "Show": true
                }
              ],
              "Level": 1,
              "Styles": [],
              "bounds": [
                0.6144032861111111,
                0.0016379149312267273,
                0.7278192638888888,
                0.9983620852327448
              ],
              "Name": "",
              "Show": true
            }
          ],
          "ServerUsername": "",
          "sel_feature_info": "text/html",
          "ServerPassword": "",
          "is130": true,
          "ServerURL": "http://maps.rosreestr.ru:80/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer",
          "map_format": [
            "image/bmp",
            "image/jpeg",
            "image/tiff",
            "image/png",
            "image/png8",
            "image/png24",
            "image/png32",
            "image/gif",
            "image/svg+xml"
          ]
        }
      }
    },
    {
      "active": true,
      "description": {
        "name": "Районы МО (http://zs.zulugis.ru:6473/zws)",
        "type": 999,
        "id": "ZWS-6fc7beed-50c1-4f9b-84f8-4b49a2cb0f19",
        "uri_data": {
          "show_direction": false,
          "generation": 0,
          "keyName": 2131427409,
          "server-url": "http://zs.zulugis.ru:6473/zws",
          "selected-layer": "mo:region",
          "draw": true,
          "updateInterval": 0,
          "themes": "{\"labels\":{\"mo:region\":[{\"UserName\":\"Намиенование\",\"ID\":0}],\"mo:region_selection\":[\"0\"]}}"
        }
      }
    },
    {
      "active": true,
      "description": {
        "name": "Водоотведение_Демо (http://zs.zulugis.ru:6473/zws)",
        "type": 999,
        "id": "ZWS-57c70dca-7e5a-48cf-8c18-b3fbe0a4d449",
        "uri_data": {
          "show_direction": true,
          "generation": 0,
          "keyName": 2131427409,
          "server-url": "http://zs.zulugis.ru:6473/zws",
          "selected-layer": "mo:vo",
          "draw": true,
          "updateInterval": 0,
          "themes": "{}"
        }
      }
    },
    {
      "active": true,
      "description": {
        "name": "Водопровод_Демо (http://zs.zulugis.ru:6473/zws)",
        "type": 999,
        "id": "ZWS-3ac404a1-9153-4585-8b7f-443b7d990647",
        "uri_data": {
          "show_direction": true,
          "generation": 0,
          "keyName": 2131427409,
          "server-url": "http://zs.zulugis.ru:6473/zws",
          "selected-layer": "mo:vp",
          "draw": true,
          "updateInterval": 0,
          "themes": "{\"invis\":{\"mo:vp_selection\":[],\"mo:vp\":[{\"ID\":\"1,1\",\"UserName\":\"Источник водоснабжения: Источник\"},{\"ID\":\"1,2\",\"UserName\":\"Источник водоснабжения: Отключен\"},{\"ID\":\"2,1\",\"UserName\":\"Контррезервуар: Включен\"},{\"ID\":\"2,2\",\"UserName\":\"Контррезервуар: Отключен\"},{\"ID\":\"3,1\",\"UserName\":\"Водонапорная башня: Включена\"},{\"ID\":\"3,2\",\"UserName\":\"Водонапорная башня: Отключена\"},{\"ID\":\"4,1\",\"UserName\":\"Насосная станция: Включена\"},{\"ID\":\"4,2\",\"UserName\":\"Насосная станция: Отключена\"},{\"ID\":\"5,1\",\"UserName\":\"Потребитель: Включен\"},{\"ID\":\"5,2\",\"UserName\":\"Потребитель: Отключен\"},{\"ID\":\"6,1\",\"UserName\":\"Узел: Водопроводный колодец\"},{\"ID\":\"6,2\",\"UserName\":\"Узел: Разветвление\"},{\"ID\":\"7,1\",\"UserName\":\"Водопроводный колодец с гидрантом: Гидрант отключен\"},{\"ID\":\"7,2\",\"UserName\":\"Водопроводный колодец с гидрантом: Гидрант включен\"},{\"ID\":\"7,3\",\"UserName\":\"Водопроводный колодец с гидрантом: Колонка отключена\"},{\"ID\":\"7,4\",\"UserName\":\"Водопроводный колодец с гидрантом: Колонка включена\"},{\"ID\":\"8,1\",\"UserName\":\"Участок водопроводной сети: Включен\"},{\"ID\":\"8,2\",\"UserName\":\"Участок водопроводной сети: Отключен\"},{\"ID\":\"9,1\",\"UserName\":\"Запорные устройства: Открыто\"},{\"ID\":\"9,2\",\"UserName\":\"Запорные устройства: Закрыто\"},{\"ID\":\"10,1\",\"UserName\":\"Воздушный колпак: Включен\"},{\"ID\":\"10,2\",\"UserName\":\"Воздушный колпак: Отключен\"},{\"ID\":\"11,1\",\"UserName\":\"Регулятор: Регулятор давления\"},{\"ID\":\"11,2\",\"UserName\":\"Регулятор: Регулятор расхода\"},{\"ID\":\"12,1\",\"UserName\":\"Локальное сопротивление: Сопротивление\"},{\"ID\":\"13,1\",\"UserName\":\"Обратный клапан: Открыт\"},{\"ID\":\"14,1\",\"UserName\":\"Разрушаемая мембрана: Работа\"},{\"ID\":\"15,1\",\"UserName\":\"Вспомогательный участок: Резерв\"},{\"ID\":\"15,2\",\"UserName\":\"Вспомогательный участок: Указатель узла измерения регулятора\"}]},\"labels\":{\"mo:vp_selection\":[\"0\"],\"mo:vp\":[{\"ID\":0,\"UserName\":\"Длина/Диаметр\"}]}}"
        }
      }
    },
    {
      "active": true,
      "description": {
        "name": "Тепловая сеть_Демо (http://zs.zulugis.ru:6473/zws)",
        "type": 999,
        "id": "ZWS-8377c04e-2c75-43e6-8565-f8149d62f5cb",
        "uri_data": {
          "show_direction": true,
          "generation": 0,
          "keyName": 2131427409,
          "server-url": "http://zs.zulugis.ru:6473/zws",
          "selected-layer": "mo:ts",
          "draw": true,
          "updateInterval": 0,
          "themes": "{\"labels\":{\"mo:ts_selection\":[],\"mo:ts\":[{\"UserName\":\"Длина/Диаметр\",\"ID\":0},{\"UserName\":\"Наименов. узлов\",\"ID\":1}]},\"themes\":{\"mo:ts_selection\":[],\"mo:ts\":[{\"UserName\":\"Владельцы сетей\",\"ID\":1}]}}"
        }
      }
    },
    {
      "active": true,
      "description": {
        "name": "Дефекты (демо) (http://zs.zulugis.ru:6473/zws)",
        "type": 999,
        "id": "ZWS-e3f780d4-b649-4590-a466-3c71c9f77776",
        "uri_data": {
          "show_direction": false,
          "generation": 14,
          "keyName": 2131427409,
          "server-url": "http://zs.zulugis.ru:6473/zws",
          "selected-layer": "mo:defekt_demo",
          "draw": true,
          "updateInterval": 5000,
          "themes": "{}"
        }
      }
    }
  ],
  "viewportZ": 131072,
  "bookmarks": [],
  "id": "f8dd3c1f-602b-4055-b588-598ecc39763e",
  "viewportX": 0.10676572471857071,
  "name": "Пример карты МО",
  "poi": [],
  "viewportRotation": 0,
  "vector_layers": []
}


GetZMMapList (ZWS)

Возвращает список карт Zulu, опубликованных на данном сервере, которые готовы работать по протоколу ZWS.

Схема запроса:

   <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetZMMapList"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="GetZMMapList" type="typeGetZMMapListResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeGetZMMapListResponse">
        <xs:sequence>
            <xs:element name="Map" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Name" type="xs:string"/>
                        <xs:element name="Id" type="xs:string"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

Пример запроса:

    <?xml version="1.0" encoding="UTF-8"?>
    <zulu-server service="zws" version="1.0.0">
        <Command>
            <GetZMMapList/>
        </Command>
    </zulu-server>

Пример ответа:

    <?xml version="1.0" encoding="UTF-8"?>
    <zwsResponse>
    <GetZMMapList>
        <Map>
            <Name>Riga</Name>
            <Id>1cf221d3-fd7e-4c2d-a2cf-15b39d5868ac</Id>
        </Map>
        <Map>
            <Name>Демо карта</Name>
            <Id>2e2d0599-2d9d-477d-a3d7-3a98f112ca0a</Id>
        </Map>
        <Map>
            <Name>Новая карта</Name>
            <Id>423e0266-88ec-4097-8ea0-8404001f5ee9</Id>
        </Map>
        <Map>
            <Name>buve+kreisajs</Name>
            <Id>7f0dd42b-a7a2-4fd0-b3ca-2cf7f0c65dc7</Id>
        </Map>
        <Map>
            <Name>Новая карта 1</Name>
            <Id>d01b395f-2efa-4a83-9a71-e907ea2b571f</Id>
        </Map>
        <Map>
            <Name>Пример карты МО</Name>
            <Id>f8dd3c1f-602b-4055-b588-598ecc39763e</Id>
        </Map>
    </GetZMMapList>
    <RetVal>6</RetVal>
</zwsResponse>


IntersectElemByLayer (ZWS)

Пересекает объект слоя с объектами другого слоя

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="IntersectElemByLayer" type="typeIntersectElemByLayer"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeIntersectElemByLayer">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Layer1" type="xs:string"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
            <xs:element name="Relation" type="typeSpatialOperator"  minOccurs="0" default="Within"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="IntersectElemByLayer" type="typeIntersectElemByLayerResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeIntersectElemByLayerResponse">
        <xs:all>
            <xs:element name="Elements">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="ElemID" type="xs:integer"/>
                                    <xs:element name="Keys" type="typeListOfIntegers"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <IntersectElemByLayer>
             <Layer>riga:teplo</Layer>
            <Layer1>riga:houses</Layer1>
            <ElemID>19931</ElemID>
        </IntersectElemByLayer>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <IntersectElemByLayer>
        <Elements>
            <Element>
                <ElemID>19931</ElemID>
                <Keys>93859</Keys>
            </Element>
        </Elements>
    </IntersectElemByLayer>
    <RetVal>1</RetVal>
</zwsResponse>


LayerAddPolygon (ZWS)

Добавляет в слой площадной объект

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerAddPolygon" type="typeLayerAddPolygon"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerAddPolygon">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer"/>
            <xs:element name="ModeNum" type="typeModeNum"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerAddPolygon"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerAddPolygon>
             <Layer>riga:teplo</Layer>
            <TypeID>15</TypeID>
            <ModeNum>1</ModeNum>
            <CRS>EPSG:3857</CRS>
            <coordinates>7754557.35,2674979.51
            7754680.74,2675191.87
            7754713.32,2675005.00
            </coordinates>
        </LayerAddPolygon>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerAddPolygon />
        <RetVal>75803</RetVal>
</zwsResponse>


LayerAddPolyline (ZWS)

Добавляет в слой линейный объект

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerAddPolyline" type="typeLayerAddPolyline"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

     <xs:complexType name="typeLayerAddPolyline">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer
            <xs:element name="ModeNum" type="typeModeNum"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerAddPolyline"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerAddPolyline>
             <Layer>riga:teplo</Layer>
            <TypeID>14</TypeID>
            <ModeNum>1</ModeNum>
            <CRS>EPSG:3857</CRS>
            <coordinates>7754557.35,2674979.51
            7754680.74,2675191.87</coordinates>
        </LayerAddPolyline>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
<LayerAddPolyline />
    <RetVal>75802</RetVal>
</zwsResponse>


LayerAddSymbol (ZWS)

Добавляет в слой символьный объект

Схема запроса:

    <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerAddSymbol" type="typeLayerAddSymbol"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerAddSymbol">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer"/>
            <xs:element name="ModeNum" type="typeModeNum"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="Angle" type="xs:double" minOccurs="0" default="0"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerAddSymbol"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerAddSymbol>
             <Layer>riga:teplo</Layer>
            <TypeID>2</TypeID>
            <ModeNum>2</ModeNum>
            <X>56.96</X>
            <Y>24.03</Y>
            <CRS>EPSG:3857</CRS>
            <Angle>0</Angle>
        </LayerAddSymbol>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
    <zwsResponse>
        <LayerAddSymbol></LayerAddSymbol>
            <RetVal>75798</RetVal
    </zwsResponse>


LayerBatchEdit (ZWS)

Позволяет выполнять пакетное редактирование. Поддерживаются следующие виды операций:

Схема запроса:

Схема ответа:

Пример запроса:

Пример ответа:


LayerDeleteElement (ZWS)

Удаляет объект слоя

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerDeleteElement" type="typeLayerDeleteElement"/></xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerDeleteElement">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerDeleteElement"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerDeleteElement>
             <Layer>riga:teplo</Layer>
            <ElemID>75804</ElemID>
        </LayerDeleteElement>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerDeleteElement />
    <RetVal>0</RetVal>
</zwsResponse>


LayerDeleteNode (ZWS)

Удаляет вершину из объекта

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="LayerDeleteNode" type="typeLayerDeleteNode"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeLayerDeleteNode">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="ElemID" type="xs:integer"/>
        <xs:element name="SegmentIdx" type="typeSegmentIdx"/>
        <xs:element name="NodeIdx" type="typeNodeIdx"/>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:choice minOccurs="0">
                <xs:element name="LayerDeleteNode"/>
            </xs:choice>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
    <LayerDeleteNode>
        <Layer>riga:teplo</Layer>
        <ElemID>75803</ElemID>
        <SegmentIdx>0</SegmentIdx>
          <NodeIdx>2</NodeIdx>
    </LayerDeleteNode>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerDeleteNode />
    <RetVal>0</RetVal>
</zwsResponse>


LayerExecSQL (ZWS)

Выполняет SQL запрос к слою Zulu

Схема запроса:

  <xs:complexType name="typeLayerExecSQL">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Query" type="xs:string"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

 <xs:complexType name="typeLayerExecSQLResponse">
        <xs:all>
            <xs:element name="Records" type="typeRecords"/>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerExecSql>
            <Layer>riga:teplo</Layer>
            <Query>SELECT Sys,Geometry.AsText() where Sys=143 OR Sys=3378</Query>
                    <CRS>EPSG:4326</CRS>
        </LayerExecSql>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <LayerExecSql>
        <Records>
            <Record>
                <Field>
                    <Name> Sys </Name>
                    <Value> 143 </Value>
                </Field>
                <Field>
                    <Name> Geometry </Name>
                    <Value> POINT(56.95237683334503 24.03602916212978) </Value>
                </Field>
            </Record>
            <Record>
                <Field>
                    <Name> Sys </Name>
                    <Value> 3378 </Value>
                </Field>
                <Field>
                    <Name> Geometry </Name>
                    <Value> LINESTRING(56.96114198632733 24.03543016538373,56.96118286253028
                        24.03478607840612,56.96093337208149 24.03452454676196,56.96103605433626
                        24.03419624903532,56.96096206652768 24.03373047962202,56.96044459706884
                        24.03243668846333) </Value>
                </Field>
            </Record>
        </Records>
    </LayerExecSql>
    <RetVal> 2 </RetVal>
</zwsResponse>


LayerFindConnected (ZWS)

Возвращает список объектов сети, связанных с заданным ID

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerFindConnected" type="typeLayerFindConnected"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerFindConnected">
        <xs:all>
            <xs:element name="Layer" type="xs:string"/>
            <xs:element name="FlagID" type="typeListOfIntegers"/>
            <xs:element name="IgnoreState" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerFindConnected" type="typeLayerFindConnectedResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerFindConnectedResponse">
        <xs:all>
            <xs:element name="Keys" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerFindConnected>
          <Layer>riga:teplo</Layer>
            <FlagID>19968</FlagID>
            <IgnoreState>No</IgnoreState>
        </LayerFindConnected>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
    <zwsResponse>
        <LayerFindConnected>
            <Keys>7 9 10 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
                  42 43 44 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 63 64 66 67 68 69 70 71 72 73 74 75
                  76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 104 105
                  106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 122 123 124 125 126 127 128
                  129 130 131 133 134 135 136 137 138 139 140 141 142 143 145 146 147 149 150 151 152 153
                  154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
                  176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 196 197 198
                  199 200 201 202 203 204 205 206 208 209 210 211 212 213 214 217 219 220 222 223 225 226
                  227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
                  249 250 251 252 253 254 255 256 257
            </Keys>
        </LayerFindConnected>
    <RetVal>13613</RetVal>
</zwsResponse>


LayerFindWay (ZWS)

Поиск кратчайшего пути по сети слоя

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerFindWay" type="typeLayerFindWay"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerFindWay">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="FlagID" type="typeListOfIntegers"/>
            <xs:element name="IgnoreState" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerFindWay" type="typeLayerFindWayResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerFindWayResponse">
        <xs:all>
            <xs:element name="Keys" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerFindWay>
             <Layer>riga:teplo</Layer>
            <FlagID>19919,20004</FlagID>
            <IgnoreState>No</IgnoreState>
        </LayerFindWay>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerFindWay>
        <Keys>19919 19922 23785 23784 19921 19924 19923 19926 19925 19936 19935 19938 19937 19940
            23781 23780 19939 19946 19945 20005 20004</Keys>
    </LayerFindWay>
    <RetVal>21</RetVal>
</zwsResponse>


LayerGetIncidentElements (ZWS)

Возвращает список объектов, связанных с данным ID

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerGetIncidentElements" type="typeLayerGetIncidentElements"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
  </xs:element>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerGetIncidentElements" type="typeIntersectElemByLayerResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerGetIncidentElements">
        <xs:all>
            <xs:element name="Layer" type="xs:string"/>
            <xs:element name="ElemID" type="xs:integer"/>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerGetIncidentElements>
             <Layer>riga:teplo</Layer>
            <ElemID>19939</ElemID>
        </LayerGetIncidentElements>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerGetIncidentElements>
        <Elements>
            <Element>
                <ElemID>19939</ElemID>
                <Keys>19942 19946 23780 75747</Keys>
            </Element>
        </Elements>
    </LayerGetIncidentElements>
    <RetVal>4</RetVal>
</zwsResponse>


LayerInsertNode (ZWS)

Добавляет новую точку перелома в полилинию или полигон линейного или площадного объекта.

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="LayerInsertNode" type="typeLayerInsertNode"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeLayerInsertNode">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="ElemID" type="xs:integer"/>
        <xs:element name="SegmentIdx" type="typeSegmentIdx"/>
        <xs:element name="NodeIdx" type="typeNodeIdx"/>
        <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
        <xs:element name="X" type="xs:double"/>
        <xs:element name="Y" type="xs:double"/>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:choice minOccurs="0">
                <xs:element name="LayerInsertNode"/>
            </xs:choice>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerInsertNode>
            <Layer>riga:teplo</Layer>
            <ElemID>75806</ElemID>
            <SegmentIdx>0</SegmentIdx>
            <NodeIdx>2</NodeIdx>
            <CRS>EPSG:3857</CRS>
            <X>7754710.70</X>
            <Y>2675068.84</Y>
        </LayerInsertNode>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerInsertNode />
    <RetVal>0</RetVal>
</zwsResponse>


LayerIntersectByBox (ZWS)

Возвращает данные объектов слоя, попавших в заданную прямоугольную область. Только с версии ZuluServer 2021

Схема запроса:

  <xs:complexType name="typeBoundingBox">
        <xs:attribute name="CRS" type="typeCRS"/>
        <xs:attribute name="minx" type="xs:double"/>
        <xs:attribute name="miny" type="xs:double"/>
        <xs:attribute name="maxx" type="xs:double"/>
        <xs:attribute name="maxy" type="xs:double"/>
    </xs:complexType>

   <xs:complexType name="typeLayerIntersectByBox">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="BoundingBox" type="typeBoundingBox"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0"
                default="Intersects"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Схема ответа:

       <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerIntersectByBox" type="typeSelectElemByXYResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerIntersectByBox">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="BoundingBox" type="typeBoundingBox"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0"
                default="Intersects"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
  <Command>
    <LayerIntersectByBox>
      <Layer>riga:teplo</Layer>
          <BoundingBox>
                <CRS>EPSG:3857</CRS>
              <minx>7754552.83</minx>
              <miny>2675036.21</miny>
              <maxx>7754592.83</maxx>
              <maxy>2675096.21</maxy>
        </BoundingBox>
      <Relation>Intersects</Relation>
      <Geometry>No</Geometry>
      <Attr>Yes</Attr>
      <ModeList>No</ModeList>
      <QueryList>No</QueryList>
    </LayerIntersectByBox>
  </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <LayerIntersectByBox>
        <Element>
            <ElemID>75729</ElemID>
            <TypeID>-1</TypeID>
            <ModeNum>-1</ModeNum>
            <Records>
                <BaseID>13</BaseID>
                <QueryName>Запрос1</QueryName>
                <Record>
                    <Field>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Type>integer</Type>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Value>75729</Value>
                    </Field>
                    <Field>
                        <Name>param1</Name>
                        <UserName>param1</UserName>
                        <Type>string</Type>
                        <Value>абвгд</Value>
                    </Field>
                    <Field>
                        <Name>param2</Name>
                        <UserName>param2</UserName>
                        <Type>float</Type>
                        <Value>12345</Value>
                    </Field>
                    <Field>
                        <Name>blob1</Name>
                        <UserName>blob1</UserName>
                        <Type>blob</Type>
                        <Value/>
                        <URL>http://zs.zulugis.ru:6473/zws/GetElemBlob/riga%3Ateplo/75729_Sys:75729/blob1/data.jpg?
                             BaseID=13&amp;QueryName=%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%811</URL>
                    </Field>
                </Record>
            </Records>
        </Element>
        <Element>
            <ElemID>75802</ElemID>
            <TypeID>14</TypeID>
            <ModeNum>1</ModeNum>
            <Records>
                <Record>
                    <Field>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Value>75802</Value>
                    </Field>
                </Record>
            </Records>
        </Element>
        <Element>
            <ElemID>75803</ElemID>
            <TypeID>15</TypeID>
            <ModeNum>1</ModeNum>
            <Records>
                <Record>
                    <Field>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Value>75803</Value>
                    </Field>
                </Record>
            </Records>
        </Element>
    </LayerIntersectByBox>
    <RetVal>3</RetVal>
</zwsResponse>


LayerIntersectByRadius (ZWS)

Возвращает данные объектов слоя, попавших в окрестность заданного радиуса

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerIntersectByRadius" type="typeLayerIntersectByRadius"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerIntersectByRadius">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="R" type="xs:double"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0"
                default="Intersects"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerIntersectByRadius" type="typeSelectElemByXYResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
  <Command>
    <LayerIntersectByRadius>
      <Layer>riga:teplo</Layer>
      <X>7754552.83</X>
      <Y>2675036.21</Y>
      <R>25</R>
      <Relation>Intersects</Relation>
      <CRS>EPSG:3857</CRS>
      <Geometry>No</Geometry>
      <Attr>Yes</Attr>
      <BaseID>3</BaseID>
      <ModeList>No</ModeList>
      <QueryList>No</QueryList>
    </LayerIntersectByRadius>
  </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <LayerIntersectByRadius>
        <Element>
            <ElemID>75729</ElemID>
            <TypeID>-1</TypeID>
            <ModeNum>-1</ModeNum>
            <Records>
                <BaseID>13</BaseID>
                <QueryName>Запрос1</QueryName>
                <Record>
                    <Field>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Type>integer</Type>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Value>75729</Value>
                    </Field>
                    <Field>
                        <Name>param1</Name>
                        <UserName>param1</UserName>
                        <Type>string</Type>
                        <Value>абвгд</Value>
                    </Field>
                    <Field>
                        <Name>param2</Name>
                        <UserName>param2</UserName>
                        <Type>float</Type>
                        <Value>12345</Value>
                    </Field>
                    <Field>
                        <Name>blob1</Name>
                        <UserName>blob1</UserName>
                        <Type>blob</Type>
                        <Value/>
                        <URL>http://zs.zulugis.ru:6473/zws/GetElemBlob/riga%3Ateplo/75729_Sys:75729/blob1/data.jpg?
                             BaseID=13&amp;QueryName=%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%811</URL>
                    </Field>
                </Record>
            </Records>
        </Element>
        <Element>
            <ElemID>75802</ElemID>
            <TypeID>14</TypeID>
            <ModeNum>1</ModeNum>
            <Records>
                <Record>
                    <Field>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Value>75802</Value>
                    </Field>
                </Record>
            </Records>
        </Element>
        <Element>
            <ElemID>75803</ElemID>
            <TypeID>15</TypeID>
            <ModeNum>1</ModeNum>
            <Records>
                <Record>
                    <Field>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Value>75803</Value>
                    </Field>
                </Record>
            </Records>
        </Element>
    </LayerIntersectByRadius>
    <RetVal>3</RetVal>
</zwsResponse>


LayerMoveElement (ZWS)

Перемещает объект слоя

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerMoveElement" type="typeLayerMoveElement"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerMoveElement">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="X1" type="xs:double"/>
            <xs:element name="Y1" type="xs:double"/>
            <xs:element name="X2" type="xs:double"/>
            <xs:element name="Y2" type="xs:double"/>
            <xs:element name="Duplicate" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="KeepConnected" type="typeFlag" minOccurs="0" default="Yes"/>
        </xs:all>
  </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerMoveElement"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

  <?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <LayerMoveElement>
            <Layer>riga:teplo</Layer>
            <ElemID>75800</ElemID>
            <CRS>EPSG:3857</CRS>
            <X1>19858128.32</X1>
            <Y1>2727343.02</Y1>
            <X2>19858128.32</X2>
            <Y2>2739343.02</Y2>
            <Duplicate>No</Duplicate>
            <KeepConnected>No</KeepConnected>
      </LayerMoveElement>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <LayerMoveElement />
    <RetVal>0</RetVal>
</zwsResponse>


LayerMoveNode (ZWS)

Перемещение узла элемента

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="LayerMoveNode" type="typeLayerMoveNode"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeLayerMoveNode">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="ElemID" type="xs:integer"/>
        <xs:element name="SegmentIdx" type="typeSegmentIdx"/>
        <xs:element name="NodeIdx" type="typeNodeIdx"/>
        <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
        <xs:element name="X" type="xs:double"/>
        <xs:element name="Y" type="xs:double"/>
        <xs:element name="KeepConnected" type="typeFlag" minOccurs="0" default="Yes"/>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:choice minOccurs="0">
                <xs:element name="LayerMoveNode"/>
            </xs:choice>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
            <LayerMoveNode>
            <Layer>riga:teplo</Layer>
            <ElemID>75806</ElemID>
            <SegmentIdx>0</SegmentIdx>
          <NodeIdx>2</NodeIdx>
            <CRS>EPSG:3857</CRS>
            <X>7754710.70</X>
            <Y>2675068.84</Y>
            <KeepConnected>Yes</KeepConnected>
        </LayerMoveNode>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <LayerMoveNode/>
    <RetVal>0</RetVal>
</zwsResponse>


LayerQueryByExample (ZWS)

Выполняет запрос к слою

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerQueryByExample" type="typeLayerQueryByExample"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerQueryByExample">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="MaxCount" type="xs:integer" minOccurs="0"/>
            <xs:element name="TypeID" type="xs:integer" minOccurs="0"/>
            <xs:element name="BasedID" type="xs:integer" minOccurs="0"/>
            <xs:element name="QueryName" type="xs:string" minOccurs="0"/>
            <xs:element name="IgnoreCase" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Fuzzy" type="ty  peFlag" minOccurs="0" default="No"/>
            <xs:element name="Fields">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Field" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="Value" type="xs:string"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="LayerQueryByExample" type="typeLayerQueryByExampleResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerQueryByExampleResponse">
        <xs:all>
            <xs:element name="BaseID" type="xs:integer"/>
            <xs:element name="UserName" type="xs:string"/>
            <xs:element name="Records" type="typeRecords"/>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
  <Command>
    <LayerQueryByExample>
        <Layer>riga:teplo</Layer>
          <MaxCount>1</MaxCount>
          <TypeID>2</TypeID>
          <BasedID>1</BasedID>
          <QueryName>Основной</QueryName>
          <IgnoreCase>Yes</IgnoreCase>
          <Fuzzy>No</Fuzzy>
          <Fields>
              <Field>
                  <Name>Name</Name>
                  <Value>*</Value>
                </Field>
          </Fields>
    </LayerQueryByExample>
  </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <LayerQueryByExample>
        <Records>
            <BaseID>2</BaseID>
            <UserName>Тепловая камера</UserName>
            <QueryName>Основной</QueryName>
            <Record>
                <Field>
                    <Name>Sys</Name>
                    <UserName>Sys</UserName>
                    <Key>true</Key>
                    <ReadOnly>true</ReadOnly>
                    <Value>9</Value>
                </Field>
                <Field>
                    <Name>Nist</Name>
                    <UserName>Номер источника</UserName>
                    <Value>4</Value>
                </Field>
                <Field>
                    <Name>Siltumapgades zona</Name>
                    <UserName>Siltumapgades zona</UserName>
                    <Value>I</Value>
                </Field>
                <Field>
                    <Name>Blob1</Name>
                    <UserName>Blob1</UserName>
                    <Value/>
                    <URL/>
                </Field>
                <Field>
                    <Name>DateTime1</Name>
                    <UserName>DateTime1</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Date1</Name>
                    <UserName>Date1</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Time1</Name>
                    <UserName>Time1</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>TR</Name>
                    <UserName>TR</UserName>
                    <Value>2</Value>
                </Field>
                <Field>
                    <Name>Kat</Name>
                    <UserName>Kategorija</UserName>
                    <Value>M</Value>
                </Field>
                <Field>
                    <Name>Pied</Name>
                    <UserName>Piederiba</UserName>
                    <Value>RS</Value>
                </Field>
                <Field>
                    <Name>Pied_sta</Name>
                    <UserName>Piederiba stavoklis</UserName>
                    <Value>P</Value>
                </Field>
                <Field>
                    <Name>SK_mag</Name>
                    <UserName>Magistrales nosaukums</UserName>
                    <Value>SC</Value>
                </Field>
                <Field>
                    <Name>Name</Name>
                    <UserName>Наименование узла</UserName>
                    <Value>kol.SC Imanta</Value>
                </Field>
                <Field>
                    <Name>SK_pied</Name>
                    <UserName>Siltumkamera piederiba</UserName>
                    <Value>SC Imanta</Value>
                </Field>
                <Field>
                    <Name>Shema</Name>
                    <UserName>Shema</UserName>
                    <Value/>
                    <URL>http://zs.zulugis.ru:6473/zws/GetElemBlob/riga%3Ateplo/9_Sys:9/Shema/data.jpg?
                         BaseID=2&amp;QueryName=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9</URL>
                </Field>
                <Field>
                    <Name>H_geo</Name>
                    <UserName>Геодезическая отметка, м</UserName>
                    <Value>9</Value>
                </Field>
                <Field>
                    <Name>K_ism</Name>
                    <UserName>K_ism</UserName>
                    <Value>D</Value>
                </Field>
                <Field>
                    <Name>Jeg_dzil</Name>
                    <UserName>Jeguldisanas dzilums</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Izb_v</Name>
                    <UserName>Izbuves veids</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Izb_g</Name>
                    <UserName>Izbuves gads</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Sig</Name>
                    <UserName>Signalizacija</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Sig_sta</Name>
                    <UserName>Signalizacija stavoklis</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>TDS-pies</Name>
                    <UserName>TDS pieslegts</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>H_ras</Name>
                    <UserName>Располагаемый напоp, м</UserName>
                    <Value>54.994</Value>
                </Field>
                <Field>
                    <Name>Ppod</Name>
                    <UserName>Давление в подающем трубопроводе, м</UserName>
                    <Value>74.997</Value>
                </Field>
                <Field>
                    <Name>Pobr</Name>
                    <UserName>Давление в обратном трубопроводе, м</UserName>
                    <Value>20.003</Value>
                </Field>
                <Field>
                    <Name>Time</Name>
                    <UserName>Время прохождения воды от источника, мин</UserName>
                    <Value>0.01</Value>
                </Field>
                <Field>
                    <Name>Dist</Name>
                    <UserName>Путь, пройденный от источника, м</UserName>
                    <Value>1</Value>
                </Field>
                <Field>
                    <Name>Tpod</Name>
                    <UserName>Температура воды в подающем трубопроводе,°C</UserName>
                    <Value>73.3</Value>
                </Field>
                <Field>
                    <Name>Tobr</Name>
                    <UserName>Температура воды в обратном трубопроводе,°C</UserName>
                    <Value>58.64</Value>
                </Field>
                <Field>
                    <Name>H_pod</Name>
                    <UserName>Напор в подающем трубопроводе, м</UserName>
                    <Value>83.997</Value>
                </Field>
                <Field>
                    <Name>H_obr</Name>
                    <UserName>Напоp в обpатном тpубопpоводе, м</UserName>
                    <Value>29.003</Value>
                </Field>
                <Field>
                    <Name>Tb</Name>
                    <UserName>Давление вскипания, м</UserName>
                    <Value>-6.34</Value>
                </Field>
                <Field>
                    <Name>Hstat</Name>
                    <UserName>Статический напор, м</UserName>
                    <Value>31</Value>
                </Field>
                <Field>
                    <Name>Hstat_out</Name>
                    <UserName>Статический напор на выходе, м</UserName>
                    <Value>31</Value>
                </Field>
                <Field>
                    <Name>Gpod</Name>
                    <UserName>Слив из подающего трубопровода, т/ч</UserName>
                    <Value/>
                </Field>
                <Field>
                    <Name>Gobr</Name>
                    <UserName>Слив из обратного трубопровода, т/ч</UserName>
                    <Value/>
                </Field>
            </Record>
        </Records>
        <RecordCount>1</RecordCount>
    </LayerQueryByExample>
    <RetVal>0</RetVal>
</zwsResponse>


LayerReadCustomData (ZWS)

Возвращает пользовательские данные заданного слоя по заданному строковому идентификатору

Схема запроса:

    <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="LayerReadCustomData" type="typeLayerReadCustomData"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeLayerReadCustomData">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Name" type="xs:string"/>
        </xs:all>
    </xs:complexType>

Ответ:

   В ответ сервер возвращает блок пользовательских данных, связанный с заданным
   строковым идентификатором

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
    <LayerReadCustomData>
        <Name>_zt.tl</Name>
        <Layer>riga:teplo</Layer>
    </LayerReadCustomData>
    </Command>
</zulu-server>


LayerWriteCustomData (ZWS)

Записывает в слой пользовательские данные для заданного строкового идентификатора.

Запрос:

Пользовательские данные передаются в теле POST запроса. URI запроса содержит информацию о команде, слое и идентификаторе данных:

/zws/LayerWriteCustomData/<sLayerName><sCustomID>

Параметр

Описание
sLayerName

Имя слоя
sCustomID Строковый идентификатор пользовательских данных

Схема ответа:

<xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>
    </xs:element>

Пример заголовка запроса:

POST /zws/LayerWriteCustomData/riga:teplo/_test.tst HTTP/1.1
Host: zs.zulugis.ru:6473


NetworkAnalyzeSwitch (ZWS)

Выполняет анализ заданных переключений на сети.

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="NetworkAnalyzeSwitch" type="typeNetworkAnalyzeSwitch"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeNetworkAnalyzeSwitch">
        <xs:sequence>
            <xs:element name="Layer" type="typeLayer" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="Mode" type="xs:integer"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="NetworkAnalyzeSwitch" type="typeNetworkAnalyzeSwitchResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeNetworkAnalyzeSwitchResponse">
        <xs:all>
            <xs:element name="Count" type="xs:integer"/>
            <xs:element name="Elements" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="ElemID" type="xs:integer"/>
                                    <xs:element name="State" type="typeStateFlag"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <NetworkAnalyzeSwitch>
            <Layer>riga:teplo</Layer>
        `       <Element>
                    <ElemID>23792</ElemID>
                    <Mode>2</Mode>
                </Element>
        </NetworkAnalyzeSwitch>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetworkAnalyzeSwitch>
        <Elements>
            <Element>
                <ElemID>19980</ElemID>
                <State>off</State>
            </Element>
            <Element>
                <ElemID>19998</ElemID>
                <State>off</State>
            </Element>
            <Element>
                <ElemID>20000</ElemID>
                <State>off</State>
            </Element>
            <Element>
                <ElemID>20002</ElemID>
                <State>off</State>
            </Element>
            <Count>4</Count>
        </Elements>
    </NetworkAnalyzeSwitch>
    <RetVal>4</RetVal>
</zwsResponse>


NetworkRecalc (ZWS)

Выполняет переключения на сети в соответствии с состоянием запорной арматуры

Схема запроса:

<xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="NetworkRecalc" type="typeLayer"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
</xs:element>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="NetworkRecalc" type="typeNetworkRecalcResponse"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="typeNetworkRecalcResponse">
        <xs:all>
            <xs:element name="Count" type="xs:integer"/>
            <xs:element name="Keys" type="typeListOfIntegers" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <NetworkRecalc>
             <Layer>riga:teplo</Layer>
        </NetworkRecalc>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetworkRecalc>
        <Count>55</Count>
        <Keys>14383 14404 19588 10261 10273 13543 10285 10265 13547 19590 19153 10242 10253 19615
            10248 10257 10206 10212 10218 10226 17933 9220 9224 14770 5614 7007 5774 5758 5764 5770
            5780 5784 7001 5309 10287 10295 10303 10311 10335 10343 10351 10317 10333 19617 19611
            10281 10321 10329 10291 10307 10339 10347 10361 19661 10277</Keys>
    </NetworkRecalc>
    <RetVal>55</RetVal>
</zwsResponse>


SelectElemByXY (ZWS)

Возвращает данные объектов слоя Zulu, расположенных в указанной точке на местности.

Схема запроса:

   <xs:complexType name="typeSelectElemByXY">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="Scale" type="xs:double"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="Hidden" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Modes" type="kml:CoordinatesType"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

Схема ответа:

<xs:complexType name="typeSelectElemByXYResponse">
        <xs:sequence>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="TypeID" type="xs:integer"/>
                        <xs:element name="ModeNum" type="typeModeNum"/>
                        <xs:element name="Modes">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Mode" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element name="Index" type="xs:integer"/>
                                                <xs:element name="Title" type="xs:string"/>
                                                <xs:element name="SwitchState" type="typeStateFlag"
                                                  minOccurs="0"/>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Queries">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element name="BaseID" type="xs:integer"/>
                                                <xs:element name="Name" type="xs:string"/>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Records" type="typeRecords"/>
                        <xs:element name="Geometry" type="typeGeometry"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
      <SelectElemByXY>
        <Layer>riga:teplo</Layer>
        <X>7750570.503410</X>
        <Y>2675360.966306</Y>
        <Scale>4.77731426782351</Scale>
        <CRS>EPSG:3857</CRS>
     <ModeList>Yes</ModeList>
     <QueryList>Yes</QueryList>
     <ModeImage>
        <Width>96</Width>
        <Height>144</Height>
    </ModeImage>
     </SelectElemByXY>
   </Command>
</zulu-server>

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <SelectElemByXY>
             <Layer>riga:teplo</Layer>
            <X>7754475.90</X>
            <Y>2675068.21</Y>
            <Scale>1</Scale>
            <CRS>EPSG:3857</CRS>
            <Geometry>No</Geometry>
            <GeometryLinks>EPSG:3857</GeometryLinks>
            <Attr>Yes</Attr>
            <Hidden>No</Hidden>
        </SelectElemByXY>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <SelectElemByXY>
        <Element>
            <ElemID>19943</ElemID>
            <TypeID>3</TypeID>
            <ModeNum>2</ModeNum>
            <Records>
                <BaseID>3</BaseID>
                <QueryName>Основной</QueryName>
                <Record>
                    <Field>
                        <Name>Sys</Name>
                        <UserName>Sys</UserName>
                        <Type>float</Type>
                        <Key>true</Key>
                        <ReadOnly>true</ReadOnly>
                        <Value>19943</Value>
                    </Field>
                    <Field>
                        <Name>Blob1</Name>
                        <UserName>Blob1</UserName>
                        <Type>blob</Type>
                        <Value/>
                        <URL>http://zs.zulugis.ru:6473/zws/GetElemBlob/riga%3Ateplo/19943_Sys:19943/Blob1/data.jpg?BaseID=3&amp;QueryName=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9</URL>
                    </Field>
                    <Field>
                        <Name>Sifrs</Name>
                        <UserName>Sifrs</UserName>
                        <Type>string</Type>
                        <Value>400448000</Value>
                    </Field>
                    <Field>
                        <Name>Nist</Name>
                        <UserName>Номер источника</UserName>
                        <Type>float</Type>
                        <Value>4</Value>
                    </Field>
                    <Field>
                        <Name>Siltumavots</Name>
                        <UserName>Siltumavots nosaukums</UserName>
                        <Type>string</Type>
                        <Value>SC IZT</Value>
                    </Field>
                    <Field>
                        <Name>Siltumapgades zona kods</Name>
                        <UserName>Siltumapgades zona kods</UserName>
                        <Type>string</Type>
                        <Value>I</Value>
                    </Field>
                    <Field>
                        <Name>Tiklu_rajons</Name>
                        <UserName>Tiklu_rajons</UserName>
                        <Type>float</Type>
                        <Value>2</Value>
                    </Field>
                    <Field>
                        <Name>Adres</Name>
                        <UserName>Адрес узла ввода</UserName>
                        <Type>string</Type>
                        <Value>Kleistu 29</Value>
                    </Field>
                    <Field>
                        <Name>Qo_r</Name>
                        <UserName>Расчетная нагрузка на отопление, МВт</UserName>
                        <Type>float</Type>
                        <Value>0.188</Value>
                    </Field>
                    <Field>
                        <Name>Kso</Name>
                        <UserName>Коэффициент изменения нагрузки отопления</UserName>
                        <Type>float</Type>
                        <Value>0.14555</Value>
                    </Field>
                    <Field>
                        <Name>Qgv_sred</Name>
                        <UserName>Расчетная средняя нагрузка на ГВС, МВт</UserName>
                        <Type>float</Type>
                        <Value>0.026</Value>
                    </Field>
                    <Field>
                        <Name>Kgv</Name>
                        <UserName>Коэффициент изменения нагрузки ГВС</UserName>
                        <Type>float</Type>
                        <Value>0.14555</Value>
                    </Field>
                    <Field>
                        <Name>Qsv_r</Name>
                        <UserName>Расчетная нагрузка на вентиляцию, МВт</UserName>
                        <Type>float</Type>
                        <Value>0.045</Value>
                    </Field>
                    <Field>
                        <Name>Ksv</Name>
                        <UserName>Коэффициент изменения нагрузки вентиляции</UserName>
                        <Type>float</Type>
                        <Value>0.14555</Value>
                    </Field>
                    <Field>
                        <Name>K_slodze</Name>
                        <UserName>Kopa slodze</UserName>
                        <Type>float</Type>
                        <Value>0.259</Value>
                    </Field>
                    <Field>
                        <Name>N_schem</Name>
                        <UserName>Номер схемы подключения потребителя</UserName>
                        <Type>float</Type>
                        <Value>14</Value>
                    </Field>
                    <Field>
                        <Name>Magistrales nosaukums</Name>
                        <UserName>Magistrales nosaukums</UserName>
                        <Type>string</Type>
                        <Value>M-04</Value>
                    </Field>
                    <Field>
                        <Name>Pieslegums</Name>
                        <UserName>Piesleguma vieta</UserName>
                        <Type>string</Type>
                        <Value>IK-04-04-11-01</Value>
                    </Field>
                    <Field>
                        <Name>Apkalpe</Name>
                        <UserName>Apkalpe</UserName>
                        <Type>string</Type>
                        <Value>RS</Value>
                    </Field>
                    <Field>
                        <Name>Piesl_veids</Name>
                        <UserName>Piesleguma veids</UserName>
                        <Type>string</Type>
                        <Value>A</Value>
                    </Field>
                    <Field>
                        <Name>Liet_stav</Name>
                        <UserName>Lietotaja stavoklis</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Piesl_datums</Name>
                        <UserName>Pieslegsanas datums</UserName>
                        <Type>date</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Atsl_datums</Name>
                        <UserName>Atslegsanas datums</UserName>
                        <Type>date</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>TDS_piesl</Name>
                        <UserName>TDS_pieslegums</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>P_T_GR</Name>
                        <UserName>Paterina grupa</UserName>
                        <Type>integer</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>M_SIFRS</Name>
                        <UserName>Maksataja sifrs</UserName>
                        <Type>integer</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>RS_atb_persona</Name>
                        <UserName>RS_atb_persona</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>RS_atb_persona_tel</Name>
                        <UserName>RS_atb_persona_tel</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Liet_kont_persona</Name>
                        <UserName>Liet_kont_persona</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Liet_kont_persona_tel</Name>
                        <UserName>Liet_kont_persona_tel</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>S_t_Kontrolieris</Name>
                        <UserName>S_t_Kontrolieris</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>S_t_Kontrolieris_tel</Name>
                        <UserName>S_t_Kontrolieris_tel</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>H_geo</Name>
                        <UserName>Геодезическая отметка, м</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Hzdan</Name>
                        <UserName>Высота здания потpебителя, м</UserName>
                        <Type>float</Type>
                        <Value>4.1939333</Value>
                    </Field>
                    <Field>
                        <Name>Qgv_max</Name>
                        <UserName>Расчетная максимальная нагрузка на ГВС, МВт</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Njil</Name>
                        <UserName>Число жителей</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Kb</Name>
                        <UserName>Балансовый коэффициент закр.ГВС</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Regul_G</Name>
                        <UserName>Признак наличия регулятора на отопление</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Klapan_sv</Name>
                        <UserName>Признак наличия регулирующего клапана на СВ</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Regul_T</Name>
                        <UserName>Признак наличия регулятора температуры</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T1_r</Name>
                        <UserName>Расчетная темп. сет. воды на входе в потреб.,°C</UserName>
                        <Type>float</Type>
                        <Value>130</Value>
                    </Field>
                    <Field>
                        <Name>T2_r</Name>
                        <UserName>Расчетная темп. воды на выходе из СО,°C</UserName>
                        <Type>float</Type>
                        <Value>67</Value>
                    </Field>
                    <Field>
                        <Name>T3_r</Name>
                        <UserName>Расчетная темп. воды на входе в СО,°C</UserName>
                        <Type>float</Type>
                        <Value>90</Value>
                    </Field>
                    <Field>
                        <Name>Tvso_r</Name>
                        <UserName>Расчетная темп. внутреннего воздуха для СО,°C</UserName>
                        <Type>float</Type>
                        <Value>18</Value>
                    </Field>
                    <Field>
                        <Name>Hso_r</Name>
                        <UserName>Расчетный располагаемый напор в СО, м</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Tvsv_r</Name>
                        <UserName>Расчетная темп. внутреннего воздуха для СВ,°C</UserName>
                        <Type>float</Type>
                        <Value>18</Value>
                    </Field>
                    <Field>
                        <Name>Tnsv_r</Name>
                        <UserName>Расчетная темп. наружного воздуха для СВ,°C</UserName>
                        <Type>float</Type>
                        <Value>-20</Value>
                    </Field>
                    <Field>
                        <Name>Hsv_r</Name>
                        <UserName>Расчетный располагаемый напор в СВ, м</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Kcirc</Name>
                        <UserName>Доля циркуляции от расхода на ГВС, %</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Hcirc</Name>
                        <UserName>Потери напора в системе ГВС, м</UserName>
                        <Type>float</Type>
                        <Value>2</Value>
                    </Field>
                    <Field>
                        <Name>Tcirc</Name>
                        <UserName>Температура воды воды в цирк. контуре,°C</UserName>
                        <Type>float</Type>
                        <Value>45</Value>
                    </Field>
                    <Field>
                        <Name>Thv</Name>
                        <UserName>Температура холодной воды,°C</UserName>
                        <Type>float</Type>
                        <Value>5</Value>
                    </Field>
                    <Field>
                        <Name>Tgv</Name>
                        <UserName>Температура воды на ГВС,°C</UserName>
                        <Type>float</Type>
                        <Value>50</Value>
                    </Field>
                    <Field>
                        <Name>Nsec_so</Name>
                        <UserName>Количество секций ТО на СО</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Hsec_so</Name>
                        <UserName>Потери напора в 1-й секции ТО на СО, м</UserName>
                        <Type>float</Type>
                        <Value>2</Value>
                    </Field>
                    <Field>
                        <Name>Ngr_so</Name>
                        <UserName>Количество параллельных групп ТО на СО</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>T1to_so</Name>
                        <UserName>Расчетная темп.сет.воды на выходе из ТО, °C</UserName>
                        <Type>float</Type>
                        <Value>90</Value>
                    </Field>
                    <Field>
                        <Name>T2r_obr</Name>
                        <UserName>Расчетная темп.сет.воды на выходе из потреб.,°C</UserName>
                        <Type>float</Type>
                        <Value>70</Value>
                    </Field>
                    <Field>
                        <Name>Tto_so</Name>
                        <UserName>Температура воды на выходе из 2 контура ТО, °C</UserName>
                        <Type>float</Type>
                        <Value>69.81</Value>
                    </Field>
                    <Field>
                        <Name>Nel_r</Name>
                        <UserName>Рекомендуемый номер элеватора</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dsop_r</Name>
                        <UserName>Рекомендуемый диаметр сопла элеватора, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>U_calc</Name>
                        <UserName>Расчетный коэффициент смешения</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>U_fakt</Name>
                        <UserName>Фактический коэффициент смешения</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>Nel_u</Name>
                        <UserName>Номер установленного элеватора</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dsop_u</Name>
                        <UserName>Диаметр установленного сопла элеватора, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T1_t</Name>
                        <UserName>Температура сетевой воды в под. тр-де, °C</UserName>
                        <Type>float</Type>
                        <Value>73.3</Value>
                    </Field>
                    <Field>
                        <Name>T2_t</Name>
                        <UserName>Температура сетевой воды в обр. тр-де, °C</UserName>
                        <Type>float</Type>
                        <Value>63.8</Value>
                    </Field>
                    <Field>
                        <Name>Gso</Name>
                        <UserName>Расход сетевой воды на СО, т/ч</UserName>
                        <Type>float</Type>
                        <Value>1.637</Value>
                    </Field>
                    <Field>
                        <Name>Gso_otn</Name>
                        <UserName>Относительный расход воды на СО</UserName>
                        <Type>float</Type>
                        <Value>4.176</Value>
                    </Field>
                    <Field>
                        <Name>Qso_otn</Name>
                        <UserName>Относительное количество теплоты на СО</UserName>
                        <Type>float</Type>
                        <Value>0.69</Value>
                    </Field>
                    <Field>
                        <Name>T3so_t</Name>
                        <UserName>Температура воды на входе в СО, °C</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>T2so_t</Name>
                        <UserName>Температура воды на выходе из СО, °C</UserName>
                        <Type>float</Type>
                        <Value>53.9</Value>
                    </Field>
                    <Field>
                        <Name>Tvso_t</Name>
                        <UserName>Температура внутреннего воздуха СО, °C</UserName>
                        <Type>float</Type>
                        <Value>16.9</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_so_pod</Name>
                        <UserName>Диаметр шайбы на под. тр-де перед СО, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_so_pod</Name>
                        <UserName>Количество шайб на под. тр-де перед СО, шт</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_so_obr</Name>
                        <UserName>Диаметр шайбы на обр. тр-де после СО, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_so_obr</Name>
                        <UserName>Количество шайб на обр. тр-де после СО, шт</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>dHshb_so_pod</Name>
                        <UserName>Потеpи напоpа на шайбе под.тp-да пеpед СО, м</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>dHshb_so_obr</Name>
                        <UserName>Потеpи напоpа на шайбе обp.тp-да после СО, м</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>dHsop</Name>
                        <UserName>Потери напора на сопле, м</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dshb_pod</Name>
                        <UserName>Диаметр шайбы на вводе на под.тр-де, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_pod</Name>
                        <UserName>Количество шайб на вводе на под. тр-де, шт</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dshb_obr</Name>
                        <UserName>Диаметр шайбы на вводе на обр. тр-де, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_obr</Name>
                        <UserName>Количество шайб на вводе на обр. тр-де, шт</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Gsv</Name>
                        <UserName>Расход сетевой воды на СВ, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0.6659</Value>
                    </Field>
                    <Field>
                        <Name>Gsv_otn</Name>
                        <UserName>Относительный расход воды на СВ, т/ч</UserName>
                        <Type>float</Type>
                        <Value>7.3141</Value>
                    </Field>
                    <Field>
                        <Name>T2sv_t</Name>
                        <UserName>Темп. воды после системы вентиляции, °C</UserName>
                        <Type>float</Type>
                        <Value>66.81</Value>
                    </Field>
                    <Field>
                        <Name>Tvsv_t</Name>
                        <UserName>Температура внутреннего воздуха СВ, °C</UserName>
                        <Type>float</Type>
                        <Value>19.4</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_sv</Name>
                        <UserName>Диаметр шайбы на систему вентиляции, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_sv</Name>
                        <UserName>Количество шайб на систему вентиляции, шт</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Ggv</Name>
                        <UserName>Расход сетевой воды на ГВС, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>Gcirc</Name>
                        <UserName>Расход сетевой воды в цирк.трубопроводе, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_gvs</Name>
                        <UserName>Диаметр шайбы в циркуляционной линии ГВС, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_gvs</Name>
                        <UserName>Количество шайб в циркуляционной линии ГВС, шт.</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dshb_circ</Name>
                        <UserName>Диаметр циркуляционной шайбы на ГВС, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_circ</Name>
                        <UserName>Количество циркуляционных шайб на ГВС, шт.</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dshb_so_pod_u</Name>
                        <UserName>Диаметр установленной шайбы на под.тр-де перед СО, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_so_pod_u</Name>
                        <UserName>Количество установленных шайб на под.тр-де перед СО, шт</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_so_obr_u</Name>
                        <UserName>Диаметр установленной шайбы на обр.тр-де после СО, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_so_obr_u</Name>
                        <UserName>Количество установленных шайб на обр.тр-де после СО, шт</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_sv_u</Name>
                        <UserName>Диаметр установленной шайбы на систему вентиляции, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_sv_u</Name>
                        <UserName>Количество установленных шайб на систему вентиляции, шт</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Dshb_circ_u</Name>
                        <UserName>Диаметр установленной циркуляционной шайбы на ГВС, мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_circ_u</Name>
                        <UserName>Количество установленных циркуляционных шайб на ГВС,
                            шт.</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Dshb_gvs_u</Name>
                        <UserName>Диаметр установленной шайбы в циркуляционной линии ГВС,
                            мм</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nshb_gvs_u</Name>
                        <UserName>Количество установленных шайб в циркуляционной линии ГВС,
                            шт.</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Nsec_niz</Name>
                        <UserName>Количество секций ТО ГВС I ступень</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Ngr_niz</Name>
                        <UserName>Количество паралл. групп ТО ГВС I ступень</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Hsec_niz</Name>
                        <UserName>Потери напора в одной секции I ступени, м</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>T11_i_niz</Name>
                        <UserName>Исп. температура на входе 1 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T12_i_niz</Name>
                        <UserName>Исп. температура на выходе 1 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T21_i_niz</Name>
                        <UserName>Исп. температура на входе 2 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T22_i_niz</Name>
                        <UserName>Исп. температура на выходе 2 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Q_i_niz</Name>
                        <UserName>Исп. тепловая нагрузка I ступени, МВт</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Gniz</Name>
                        <UserName>Расход 1 контура I ступени ТО ГВС, т/ч</UserName>
                        <Type>float</Type>
                        <Value>1.842</Value>
                    </Field>
                    <Field>
                        <Name>G2_niz</Name>
                        <UserName>Расход 2 контура I ступени ТО ГВС, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0.048</Value>
                    </Field>
                    <Field>
                        <Name>Q_niz</Name>
                        <UserName>Тепловая нагрузка I ступени, МВт</UserName>
                        <Type>float</Type>
                        <Value>0.0033</Value>
                    </Field>
                    <Field>
                        <Name>T11_niz</Name>
                        <UserName>Температура на входе 1 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>64.3</Value>
                    </Field>
                    <Field>
                        <Name>T12_niz</Name>
                        <UserName>Температура на выходе 1 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>62.7</Value>
                    </Field>
                    <Field>
                        <Name>T21_niz</Name>
                        <UserName>Температура на входе 2 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>5</Value>
                    </Field>
                    <Field>
                        <Name>T22_niz</Name>
                        <UserName>Температура на выходе 2 контура I ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>63.9</Value>
                    </Field>
                    <Field>
                        <Name>Nsec_verh</Name>
                        <UserName>Количество секций ТО ГВС II ступень</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Ngr_verh</Name>
                        <UserName>Количество паралл. групп ТО ГВС II ступень</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>Hsec_verh</Name>
                        <UserName>Потери напора в одной секции II ступени, м</UserName>
                        <Type>float</Type>
                        <Value>1</Value>
                    </Field>
                    <Field>
                        <Name>T11_verh</Name>
                        <UserName>Температура на входе 1 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>73.3</Value>
                    </Field>
                    <Field>
                        <Name>T12_verh</Name>
                        <UserName>Температура на выходе 1 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>71.2</Value>
                    </Field>
                    <Field>
                        <Name>T21_verh</Name>
                        <UserName>Температура на входе 2 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>63.9</Value>
                    </Field>
                    <Field>
                        <Name>T22_verh</Name>
                        <UserName>Температура на выходе 2 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value>72.4</Value>
                    </Field>
                    <Field>
                        <Name>T11_i_verh</Name>
                        <UserName>Исп. температура на входе 1 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T12_i_verh</Name>
                        <UserName>Исп. температура на выходе 1 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T21_i_verh</Name>
                        <UserName>Исп. температура на входе 2 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>T22_i_verh</Name>
                        <UserName>Исп. температура на выходе 2 контура II ступени,°C</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Q_i_verh</Name>
                        <UserName>Исп. тепловая нагрузка II ступени, МВт</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Gverh</Name>
                        <UserName>Расход 1 контура II ступени ТО ГВС, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0.2043</Value>
                    </Field>
                    <Field>
                        <Name>G2_verh</Name>
                        <UserName>Расход 2 контура II ступени ТО ГВС, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0.05</Value>
                    </Field>
                    <Field>
                        <Name>Q_verh</Name>
                        <UserName>Тепловая нагрузка II ступени, МВт</UserName>
                        <Type>float</Type>
                        <Value>0.0005</Value>
                    </Field>
                    <Field>
                        <Name>Gset_nal</Name>
                        <UserName>Расход сетевой воды на СО после наладки, т/ч</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Hset_nal</Name>
                        <UserName>Напор на регуляторе давления СО, м</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Kreg</Name>
                        <UserName>Коэффициент пропускной способности РД СО</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Gsum_pod</Name>
                        <UserName>Суммарный расход сетевой воды, т/ч</UserName>
                        <Type>float</Type>
                        <Value>2.5075</Value>
                    </Field>
                    <Field>
                        <Name>H_ras</Name>
                        <UserName>Располагаемый напоp на вводе потpебителя, м</UserName>
                        <Type>float</Type>
                        <Value>53.497</Value>
                    </Field>
                    <Field>
                        <Name>H_pod</Name>
                        <UserName>Напор в подающем трубопроводе, м</UserName>
                        <Type>float</Type>
                        <Value>83.25</Value>
                    </Field>
                    <Field>
                        <Name>H_obr</Name>
                        <UserName>Напоp в обpатном тpубопроводе, м</UserName>
                        <Type>float</Type>
                        <Value>29.75</Value>
                    </Field>
                    <Field>
                        <Name>Gut_pot</Name>
                        <UserName>Утечка из системы теплопотребления, т/ч</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>Qut_pot</Name>
                        <UserName>Потери тепла от утечки, Ккал</UserName>
                        <Type>float</Type>
                        <Value>0</Value>
                    </Field>
                    <Field>
                        <Name>Gcon_so</Name>
                        <UserName>Расчетный расход на СО (констр), т/ч</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Gcon_sv</Name>
                        <UserName>Расчетный расход на СВ (констр), т/ч</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Gcon_gv</Name>
                        <UserName>Расчетный расход на ГВС (констр), т/ч</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Hcon_ras</Name>
                        <UserName>Располагаемый напор на вводе (констр), м</UserName>
                        <Type>float</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Ppod</Name>
                        <UserName>Давление в подающем трубопроводе, м</UserName>
                        <Type>float</Type>
                        <Value>82.25</Value>
                    </Field>
                    <Field>
                        <Name>Pobr</Name>
                        <UserName>Давление в обратном трубопроводе, м</UserName>
                        <Type>float</Type>
                        <Value>28.75</Value>
                    </Field>
                    <Field>
                        <Name>Time</Name>
                        <UserName>Время прохождения воды от источника, мин</UserName>
                        <Type>float</Type>
                        <Value>156.67</Value>
                    </Field>
                    <Field>
                        <Name>Dist</Name>
                        <UserName>Путь, пройденный от источника, м</UserName>
                        <Type>float</Type>
                        <Value>534.4</Value>
                    </Field>
                    <Field>
                        <Name>Tb</Name>
                        <UserName>Давление вскипания, м</UserName>
                        <Type>float</Type>
                        <Value>-6.34</Value>
                    </Field>
                    <Field>
                        <Name>Hstat</Name>
                        <UserName>Статический напор, м</UserName>
                        <Type>float</Type>
                        <Value>31</Value>
                    </Field>
                    <Field>
                        <Name>Name</Name>
                        <UserName>Наименование узла</UserName>
                        <Type>string</Type>
                        <Value/>
                    </Field>
                    <Field>
                        <Name>Date1</Name>
                        <UserName>Дата время</UserName>
                        <Type>datetime</Type>
                        <Value/>
                    </Field>
                </Record>
            </Records>
            <GeometryLinks>
                <CRS>EPSG:4326</CRS>
                <coordinates> 2675068.2193581364000,7754475.8949637422000
                    2675075.7621747204000,7754472.6990413833000 </coordinates>
            </GeometryLinks>
        </Element>
    </SelectElemByXY>
    <RetVal>0</RetVal>
</zwsResponse>


SetElemBlob (ZWS)

Записывает бинарные данные в базу данных слоя

Схема запроса:

Схема ответа:

Пример запроса:

Пример ответа:


SetElemState (ZWS)

Устанавливает режим объекта слоя

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="SetElemState" type="typeSetElemState"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeSetElemState">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="ElemID" type="typeListOfIntegers"/>
        <xs:element name="Type" type="xs:integer" minOccurs="0"/>
        <xs:element name="Mode" type="xs:integer"/>
    </xs:all>
</xs:complexType>

Схема ответа:

    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="SetElemState"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <SetElemState>
            <Layer>riga:teplo</Layer>
            <ElemID>19943</ElemID>
            <Type>3</Type>
            <Mode>2</Mode>
        </SetElemState>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
    <zwsResponse>
        <SetElemState />
            <RetVal>0</RetVal>
    </zwsResponse>


TrackingGetInfoByXY (ZWS)

Получает информацию со слоя трекинга по указанным координатам.

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="TrackingGetInfoByXY" type="typeTrackingGetInfoByXY"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeTrackingGetInfoByXY">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="Filter">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Time">
                        <xs:complexType>
                            <xs:attribute name="begin" type="xs:string" />
                            <xs:attribute name="end" type="xs:string" />
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element name="X" type="xs:double"/>
        <xs:element name="Y" type="xs:double"/>
        <xs:element name="CRS" type="typeCRS"/>
        <xs:element name="Scale" type="xs:double"/>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:complexType name="typeTrackingGetInfoByXYResponse">
    <xs:sequence>
        <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
                <xs:all>
                    <xs:element name="Info" type="xs:string"/>
                    <xs:element name="Geometry" type="typeGeometry"/>
                </xs:all>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
<Command>
    <TrackingGetInfoByXY>
        <Layer>People</Layer>
        <Filter>
            <Time begin="2020-01-19" end="2020-02-19"/>
        </Filter>
        <X>8380626.77</X>
        <Y>3378058.70</Y>
        <Scale>0.14</Scale>
        <CRS>EPSG:3857</CRS>
    </TrackingGetInfoByXY>
</Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
    <zwsResponse>
    <TrackingGetInfoByXY>
        <Element>
            <Info>Tracking object UserId: 555970541 Name: Ivanov S.V.
                Device: MI 8 Speed: 0.33 Alt: 43.70 Time: 19.02.2020 7:43:05
            </Info>
            <Geometry>
                <KML>
                    <Placemark id="555970541">
                        <name>555970541</name>
                        <Point>
                            <coordinates>30.3456176000000,59.9140495000000</coordinates>
                        </Point>
                    </Placemark>
                </KML>
            </Geometry>
         </Element>
    </TrackingGetInfoByXY>
    <RetVal>33</RetVal>
 </zwsResponse>


TrackingGetLayerList (ZWS)

Возвращает список слоев трекинга Zulu, опубликованных на данном сервере, которые готовы работать по протоколу ZWS.

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="TrackingGetLayerList"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Схема ответа:

<xs:element name="zwsResponse">
     <xs:complexType>
         <xs:sequence>
             <xs:choice minOccurs="0">
                 <xs:element name="TrackingGetLayerList" type="typeGetLayerListResponse"/>
             </xs:choice>
             <xs:element name="RetVal" type="xs:integer"/>
         </xs:sequence>
     </xs:complexType>
</xs:element>

<xs:complexType name="typeGetLayerListResponse">
    <xs:sequence>
        <xs:element name="Layer" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
               <xs:all>
                    <xs:element name="Name" type="xs:string"/>
                    <xs:element name="Title" type="xs:string"/>
                </xs:all>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
          <TrackingGetLayerList/>
      </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <TrackingGetLayerList>
        <Layer>
            <Name>Cars</Name>
            <Title>Маршруты техники</Title>
        </Layer>
        <Layer>
            <Name>People</Name>
            <Title>Сотрудники</Title>
        </Layer>
    </TrackingGetLayerList>
    <RetVal>2</RetVal>
</zwsResponse>


TrackingGetVector (ZWS)

Возвращает векторные данные слоя трекинга.

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="TrackingGetVector" type="typeTrackingGetVector"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeTrackingGetVector">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="Filter">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Time">
                        <xs:complexType>
                            <xs:attribute name="begin" type="xs:string" />
                            <xs:attribute name="end" type="xs:string" />
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:all>
</xs:complexType>

Схема ответа:

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
  <Command>
    <TrackingGetVector>
      <Layer>People</Layer>
      <Filter>
        <Time begin="2020-02-19" end="2020-02-19"/>
      </Filter>
    </TrackingGetVector>
  </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"
    xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">

    <Document>
        <Placemark id="555970541">
            <name>Ivanov S.V.</name>
            <Point>
                <coordinates> 30.3456062000000,59.9140058000000 </coordinates>
            </Point>
        </Placemark>
        <Placemark>
            <name>555970541</name>
            <Style>
                <LineStyle>
                    <color>ff000000</color>
                    <width>1</width>
                </LineStyle>
            </Style>
            <MultiGeometry>
                <LineString>
                    <coordinates> 30.3456169000000,59.9140113000000
                        30.3456089000000,59.9140082000000 30.3456070000000,59.9140052000000
                        30.3456246000000,59.9140118000000 30.3456258000000,59.9140056000000
                        30.3456160000000,59.9140046000000 30.3456246000000,59.9140124000000
                        30.3456109000000,59.9140057000000 30.3456011000000,59.9140139000000
                        30.3456004000000,59.9140168000000 30.3456032000000,59.9140173000000
                        30.3456022000000,59.9140271000000 30.3456111000000,59.9140305000000
                        30.3456022000000,59.9140197000000 30.3455998000000,59.9140159000000
                        30.3456041000000,59.9140092000000 30.3456058000000,59.9140050000000
                        30.3456080000000,59.9140065000000 30.3456085000000,59.9140112000000
                        30.3456101000000,59.9140145000000 30.3456040000000,59.9140069000000
                        30.3456049000000,59.9140053000000 30.3456070000000,59.9140054000000
                        30.3456072000000,59.9140157000000 30.3456064000000,59.9140199000000
                        30.3456045000000,59.9140088000000 30.3456116000000,59.9140073000000
                        30.3456059000000,59.9140028000000 30.3456054000000,59.9140320000000
                        30.3456107000000,59.9140473000000 30.3456176000000,59.9140495000000
                        30.3456073000000,59.9140278000000 30.3455993000000,59.9140264000000
                        30.3456041000000,59.9140106000000 30.3456080000000,59.9140055000000
                        30.3456082000000,59.9140061000000 30.3456071000000,59.9140064000000
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates> 30.3455862000000,59.9140040000000
                        30.3456029000000,59.9140262000000 30.3456022000000,59.9140239000000
                        30.3455988000000,59.9140242000000 30.3456049000000,59.9140164000000
                        30.3456047000000,59.9140079000000 30.3456035000000,59.9140250000000
                        30.3456021000000,59.9140228000000 30.3455890000000,59.9140260000000
                        30.3455788000000,59.9140148000000 30.3455978000000,59.9140164000000
                        30.3456052000000,59.9140067000000 30.3456091000000,59.9140156000000
                        30.3456074000000,59.9140102000000 30.3456044000000,59.9140345000000
                        30.3456086000000,59.9140347000000 30.3455989000000,59.9140216000000
                        30.3456003000000,59.9140166000000 30.3456010000000,59.9140148000000
                        30.3456048000000,59.9140061000000 </coordinates>
                </LineString>
            </MultiGeometry>
        </Placemark>
    </Document>
</kml>


TrackingRegisterDevice (ZWS)

Регистрирует новое устройство на сервере трекинга.

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="TrackingRegisterDevice" type="typeTrackingRegisterDevice"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeTrackingRegisterDevice">
    <xs:all>
        <xs:element name="Layer" type="typeLayer">
        </xs:element>
        <xs:element name="DeviceID" type="xs:integer">
        </xs:element>
        <xs:element name="DeviceDescription" type="xs:string">
        </xs:element>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:element name="zwsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:choice minOccurs="0">
                <xs:element name="TrackingRegisterDevice"/>
            </xs:choice>
            <xs:element name="RetVal" type="xs:integer"/>
        </xs:sequence>
     </xs:complexType>
</xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
    <Command>
        <TrackingRegisterDevice>
        <Layer>People</Layer>
        <DeviceID>123456</DeviceID>
    <Description>Ivanov S.V.</Description>
    </TrackingRegisterDevice>
    </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
<zwsResponse>
    <TrackingRegisterDevice />
    <RetVal>0</RetVal>
</zwsResponse>


TrackingSetPosition (ZWS)

Передаёт информацию о текущем местоположении и времени на сервер.

Схема запроса:

<xs:element name="zulu-server">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Command">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="TrackingSetPosition"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="typeTrackingSetPosition">
    <xs:all>
        <xs:element name="Layer" type="typeLayer"/>
        <xs:element name="DeviceID" type="xs:double"/>
        <xs:element name="Locations" minOccurs="0">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Location" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:all>
                                <xs:element name="Lat" type="xs:double"/>
                                <xs:element name="Lon" type="xs:double"/>
                                <xs:element name="Alt" type="xs:double"/>
                                <xs:element name="Speed" type="xs:double"/>
                                <xs:element name="Bearing" type="xs:double"/>
                                <xs:element name="Time" type="xs:string"/>
                            </xs:all>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:all>
</xs:complexType>

Схема ответа:

<xs:element name="zwsResponse">
     <xs:complexType>
         <xs:sequence>
             <xs:choice minOccurs="0">
                 <xs:element name="TrackingSetPosition"
             </xs:choice>
             <xs:element name="RetVal" type="xs:integer"/>
         </xs:sequence>
     </xs:complexType>
</xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
  <Command>
    <TrackingSetPosition>
      <Layer>Cars</Layer>
      <DeviceID>275678249</DeviceID>
      <Locations>
        <Location>
          <Lat>59.9147648</Lat>
          <Lon>30.3464818</Lon>
          <Alt>43.599998474121094</Alt>
          <Speed>2.6939237</Speed>
          <Bearing>235.2125</Bearing>
          <Time>2020-03-02T11:47:13+0300</Time>
        </Location>
        <Location>
          <Lat>59.9146085</Lat>
          <Lon>30.3463041</Lon>
          <Alt>42.89999771118164</Alt>
          <Speed>0.6695312</Speed>
          <Bearing>241.32149</Bearing>
          <Time>2020-03-02T11:47:25+0300</Time>
        </Location>
        <Location>
          <Lat>59.9145729</Lat>
          <Lon>30.3462612</Lon>
          <Alt>42.89999771118164</Alt>
          <Speed>0.2816815</Speed>
          <Bearing>207.60417</Bearing>
          <Time>2020-03-02T11:47:28+0300</Time>
        </Location>
      </Locations>
    </TrackingSetPosition>
  </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8" ?>
    <zwsResponse>
        <TrackingSetPosition />
        <RetVal>0</RetVal>
    </zwsResponse>


UpdateElemAttributes (ZWS)

Обновляет атрибуты объекта слоя

Схема запроса:

  <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="UpdateElemAttributes" type="typeUpdateElemAttributes"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

<xs:complexType name="typeUpdateElemAttributes">
        <xs:sequence>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Key" minOccurs="1" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:all>
                                <xs:element name="Name" type="xs:string"/>
                                <xs:element name="Value" type="xs:string"/>
                            </xs:all>
                        </xs:complexType>
                        </xs:element>
                        <xs:element name="Field" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="Value" type="xs:string"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

Схема ответа:

   <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="UpdateElemAttributes"/>
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

Пример запроса:

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service="zws" version="1.0.0">
  <Command>
    <UpdateElemAttributes>
      <Layer>riga:teplo</Layer>
      <Element>
        <Key>
          <Name>Sys</Name>
          <Value>75805</Value>
        </Key>
        <Field>
          <Name>Name</Name>
          <Value>77777</Value>
        </Field>
      </Element>
    </UpdateElemAttributes>
  </Command>
</zulu-server>

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <UpdateElemAttributes/>
    <RetVal>0</RetVal>
</zwsResponse>


NetToolsTaskGetErrors (ZWS)

Получение информации об ошибках во время проведения расчета.

Пример запроса

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service='zws' version='1.0.0'>
    <Command>
        <NetToolsTaskGetErrors>
            <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
        </NetToolsTaskGetErrors>
    </Command>
</zulu-server>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetToolsTaskGetErrors>
        <TaskHandle>FACCE8DB-DEB6-44E7-A285-35EAB37BA550</TaskHandle>
            <Errors>
                <Count>1</Count>
                    <Err>
                        <Code>1</Code>
                        <ElemID>17</ElemID>
                        <Type>-1</Type>
                        <Param1>0.000000</Param1>
                        <Param2>0.000000</Param2>
                        <Name>
                            <![CDATA[Ke]]>
                        </Name>
                        <Text>
                            <![CDATA[Ошибка ZD005: ID=17 Неверное значение поля 'Ke'-'Шероховатость, мм']]>
                        </Text>
                    </Err>
            </Errors>
    </NetToolsTaskGetErrors>
    <RetVal>0</RetVal>
</zwsResponse>

Где:

  • Count - количество полученных ошибок.

  • Err - описание ошибки:

    • Code - код ошибки.

    • ElemID - идентификатор (ID) объекта с ошибкой.

  • RetVal - возвращаемое значение: статус о выполнении операции:

    • 0 - операция успешно выполнена.

    • -1 - операция не выполнена.


NetToolsTaskGetOutput (ZWS)

Получение протокола расчета, которые выводятся во время проведения расчетов.

Вы можете указать начальную строку LineNum и максимальное количество строк протокола MaxCount, таким образом получать протокол "небольшими порциями".

Пример запроса

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service='zws' version='1.0.0'>
    <Command>
        <NetToolsTaskGetOutput>
            <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
            <LineNum>14</LineNum>
            <MaxCount>10</MaxCount>
        </NetToolsTaskGetOutput>
    </Command>
</zulu-server>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

  • LineNum - номер строки, с которой будет получен протокол, например, не с 1ой, а с N-ой строки.

  • MaxCount - максимальное количество строк протокола сообщений.

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetToolsTaskGetOutput>
        <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
        <Log>
            <Line>--------- Расчет самотечной сети: ID=39 -----------------------------</Line>
            <Line></Line>
            <Line></Line>
            <Line>Погрешность связности (%) .....         0.141</Line>
            <Line></Line>
            <Line>--------- Расчет самотечной сети: ID=43 -----------------------------</Line>
            <Line></Line>
            <Line></Line>
            <Line>Погрешность связности (%) .....         0.129</Line>
            <Line></Line>
        </Log>
    </NetToolsTaskGetOutput>
    <RetVal>30</RetVal>
</zwsResponse>

Где:

  • Log - содержит строки с протоколом расчета.

  • RetVal - возвращаемое значение: статус о выполнении операции:

    • число больше 0 - операция успешно выполнена и число обозначает количество полученных строк протокола сообщений.

    • -1 - операция не выполнена.


NetToolsTaskGetStatus (ZWS)

Получение статуса выполнения операции: завершилась ли она или еще в процессе выполнения.

Пример запроса

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service='zws' version='1.0.0'>
    <Command>
        <NetToolsTaskGetStatus>
            <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
        </NetToolsTaskGetStatus>
    </Command>
</zulu-server>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetToolsTaskGetStatus>
        <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
        <Status>finished</Status>
        <NetToolsRetVal>0</NetToolsRetVal>
    </NetToolsTaskGetStatus>
    <RetVal>0</RetVal>
</zwsResponse>

Где:

  • status - статус операции расчета, например finished означает, что расчет завершился.

  • RetVal - возвращаемое значение: статус о выполнении операции:

    • 0 - операция успешно выполнена.

    • -1 - операция не выполнена.


NetToolsTaskRun (ZWS)

Запуск задачи расчета с указанными параметрами.

Пример запроса

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service='zws' version='1.0.0'>
    <Command>
        <NetToolsTaskRun>
            <Layer>drain:drain</Layer>
            <Model>drain</Model>
            <Task>1</Task>
            <Settings>
                <Sources>28</Sources>
            </Settings>
        </NetToolsTaskRun>
    </Command>
</zulu-server>

Где:

  • Layer - имя слоя вместе с пространством имен, например namespace:layername.

  • Model - имя расчётной модели:

    • thermo

    • hydro

    • gas

    • steam

    • drain

  • Task - номер задачи, указывающий какой расчет запускать:

    • ZuluThermo:

      • 1 - наладочный расчет

      • 2 - поверочный расчет.

      • 3 - конструкторский расчет.

  • Settings

    • Sources -

    • ZuluThermo

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetToolsTaskStop>
        <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
    </NetToolsTaskStop>
    <RetVal>0</RetVal>
</zwsResponse>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер), который следует использовать для дальнейшей работы с данной задачей.


NetToolsTaskStop (ZWS)

Прерывание задачи расчета по указанному идентификатору задачи (хендлеру). Работу с данной задачей можно будет продолжить - повторно запустить расчет или запустить с другими параметрами расчета.

Для завершения задачи (после завершения, работа с данной задачей будет невозможна) следует использовать метод NetToolsTaskTerminate.

Пример запроса

<zulu-server service='zws' version='1.0.0'>
    <Command>
        <NetToolsTaskStop>
            <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
        </NetToolsTaskStop>
    </Command>
</zulu-server>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetToolsTaskStop>
        <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
    </NetToolsTaskStop>
    <RetVal>0</RetVal>
</zwsResponse>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

  • RetVal - возвращаемое значение: статус о выполнении операции:

    • 0 - операция успешно выполнена.

    • -1 - операция не выполнена.


NetToolsTaskTerminate (ZWS)

Завершение задачи расчета по указанному идентификатору задачи (хендлеру). После завершения, работа с данной задачей будет невозможна.

Если вы хотите повторно запустить эту задачу с другими параметрами расчета, то следует остановить задачу используя метод NetToolsTaskStop.

Пример запроса

<?xml version="1.0" encoding="UTF-8"?>
<zulu-server service='zws' version='1.0.0'>
    <Command>
        <NetToolsTaskTerminate>
            <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
        </NetToolsTaskTerminate>
    </Command>
</zulu-server>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>
<zwsResponse>
    <NetToolsTaskTerminate>
        <TaskHandle>A6E0BABE-A01D-4BAE-8EF3-3AA901B6BFD7</TaskHandle>
    </NetToolsTaskTerminate>
    <RetVal>0</RetVal>
</zwsResponse>

Где:

  • TaskHandle - уникальный идентификатор задачи (хендлер).

  • RetVal - возвращаемое значение: статус о выполнении операции:

    • 0 - операция успешно выполнена.

    • -1 - операция не выполнена.


Поддержка и обновление ПО

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

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

Прежде чем связываться с нашими специалистами, убедитесь, что у вас установлена самая последняя версия ZuluServer, так как после звонка к нам именно это первым делом попросит осуществить наша техническая поддержка. Связано это с тем, что обновления происходят регулярно, и может возникнуть такая ситуация, что ошибка уже была исправлена.

Узнать актуальную версию можно на главной странице нашего сайта www.politerm.com.

Версия ZuluServer

Чтобы определить, какая у вас установлена версия ZuluServer, выберите в мониторе ZuluServer Справка|О программе..., в появившемся окне обратите внимание на последние цифры, написанные в строке Версия, а также на Дату сборки:

Информация о текущей версии ПО

Рисунок 1. Информация о текущей версии ПО

Обновление ПО

[Предупреждение] Предупреждение

Необходимо обновлять ZuluServer на компьютере-сервере и ZuluGIS на клиентских рабочих местах.

Отдельно обновлять расчетные модули не требуется.

Обновление системы

Для обновления ZuluServer с сохранением пользовательских настроек, необходимо устанавливать обновление поверх существующей версии в ту же самую папку (будет предложена при установке программой-установщиком).

[Внимание] Внимание

Перед установкой обновления обязательно закройте ZuluGIS и ZuluServer.

Процесс установки:

  1. Скачайте дистрибутив обновления на ПК, где установлен ZuluServer:

    • для 32-битной версии – https://www.politerm.com/download/?dl=zuluserver2021msi_x86

    • для 64-битной версии – https://www.politerm.com/download/?dl=zuluserver2021msi_x64

  2. Запустите загруженный исполняемый файл.

  3. Следуйте инструкциям мастера установки.

В состав пакетов обновления входит:

  • ZuluServer 2021 – серверное ПО

  • ZuluGIS 2021 – геоинформационная система

  • ZuluThermo 2021 – расчёты систем теплоснабжения

  • ZuluSteam 2021 – расчёты систем пароснабжения

  • ZuluHydro 2021 – расчёты систем водоснабжения

  • ZuluDrain 2021 – расчёты систем водоотведения

  • ZuluGaz 2021 – расчёты систем газоснабжения

  • ZuluOPC – По для работы с технологиями OPC для получения данных от измерительных приборов

  • Коммутационные задачи

  • ПО для построения графиков

Скачать обновление для ZuluServer так же можно в разделе https://www.politerm.com/download/?pr=zuluserver.

Также вы можете скачать отдельным продуктом Администратор ZuluServer: https://www.politerm.com/download/?dl=zsadminsetup2021msi_x86

После обновления полезно ознакомиться с историей внесенных изменений:

  • https://www.politerm.com/history/

Обновление справки

В текущей версии справка обновляется автоматически вместе с обновление ПО.

Техническая поддержка

Для получения технической поддержки вы можете связаться с нашими сотрудниками. Служба поддержки всегда готова помочь вам. Контакты технической поддержки представлены на официальном сайте в разделе Контакты: https://www.politerm.com/contacts/

Также вы можете задать интересующие вас вопросы на официальном форуме: https://www.politerm.com/forums/

[Предупреждение] Предупреждение

Пожалуйста, не забывайте указывать название организации, версию (Справка|О программе) и название используемого программного обеспечения, когда связываетесь с технической поддержкой!