RUS  ENG 

Использование ZuluTools MapPack/Unpack, LayerPack/Unpack, LayerCopyEx

Страницы: 1
RSS
Использование ZuluTools MapPack/Unpack, LayerPack/Unpack, LayerCopyEx
 

Добрый день!


Появилась задача создания копии карты с одного ZuluServer на другом. Карта на основном сервере может изменяться, в том числе и менять набор используемых слоёв. Взаимодействие между серверами хотелось бы оставить только через протокол ZuluServer (без создания сетевых папок на первом или втором серверах) Задача должна выполняться ежедневно.
Схема взаимодействия: ПК1 (основной ZuluServer) -- ПК2 (сервис для копирования карт) -- ПК3 (целевой ZuluServer)
Для себя увидел 3 варианта решения задачи c использованием ZuluTools (все подключения между сервисом и серверами Zulu через строку формата zulu://$login$uid:pwd@server:6473/...):
1. MapPack/Unpack - ПК2 используя метод MapPack сохраняет в свою локальную папку упакованную исходную карту с ПК1 и далее используя метод MapUnpack распаковывает её на ПК3. Не получилось, карта упаковывается и сохраняется на ПК2, но при распаковке на ПК3 отображается окно авторизации на сервере (в мониторинге самого сервер подключение anonymous), после ввода данных, аналогичных указанным в строке подключения, карта успешно распаковывается.
2. LayerPackUnpack - ПК2 открывает исходную карту с ПК1, считывает список слоёв, далее используя метод LayerPack сохраняет в свою локальную папку упакованные слои с ПК1, затем используя метод LayerUnpack распаковывает их на ПК3. Тоже не получилось, метод LayerUnpack возвращает false.
3. LayerCopyEx – ПК2 открывает исходную карту с ПК1, считывает список слоёв и копирует каждый из них используя метод LayerCopyEx на ПК3 в целевой слой. Все работает, но, с одной оговоркой, целевой слой должен существовать, те при создании нового слоя в исходной карте он не будет скопирован. Хотелось бы иметь возможность скопировать и новый слой, просто место его расположения на ZuluServer.

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

Спасибо!

P.S. Версия ZuluGIS 10.0.0.8937u.x64

 
Цитата
написал:
Добрый день!
1. MapPack/Unpack - ПК2 используя метод MapPack сохраняет в свою локальную папку упакованную исходную карту с ПК1 и далее используя метод MapUnpack распаковывает её на ПК3. Не получилось, карта упаковывается и сохраняется на ПК2, но при распаковке на ПК3 отображается окно авторизации на сервере (в мониторинге самого сервер подключение anonymous), после ввода данных, аналогичных указанным в строке подключения, карта успешно распаковывается.
2. LayerPackUnpack - ПК2 открывает исходную карту с ПК1, считывает список слоёв, далее используя метод LayerPack сохраняет в свою локальную папку упакованные слои с ПК1, затем используя метод LayerUnpack распаковывает их на ПК3. Тоже не получилось, метод LayerUnpack возвращает false.
3. LayerCopyEx – ПК2 открывает исходную карту с ПК1, считывает список слоёв и копирует каждый из них используя метод LayerCopyEx на ПК3 в целевой слой. Все работает, но, с одной оговоркой, целевой слой должен существовать, те при создании нового слоя в исходной карте он не будет скопирован. Хотелось бы иметь возможность скопировать и новый слой, просто место его расположения на ZuluServer. Хотелось бы увидеть комментарии по всем трём пунктам, тк данная информация, на мой взгляд, будет крайне полезной при различных кейсах использования данных методов. Спасибо! P.S. Версия ZuluGIS 10.0.0.8937u.x64
Общий принцип заключается в предварительной авторизации на сервере куда собираемся писать. Пример
Код
Sub Unpack

'Содаем соедиение
Set Con = CreateObject("ZuluLib.ZsConnection")

'Соединяемся с сервером с авторизацией
If Con.Connect ("zs2.zulugis.ru", 6473, "abc", "xyz") = 0 Then

Set tools = CreateObject("ZuluLib.ZuluTools")

'Распаковываем слой по тому хосту, по которому авторизовались
tools.LayerUnpack "d:\out\QUART.zpkg", "zulu://zs2.zulugis.ru:6473/aaa/QUART.zl", 0 

Con.Disconnect

End If

End Sub
 
Цитата
написал:
Добрый день!
Можно сперва на одной машине и читать и писать
Код
Sub Unpack

Set tools = CreateObject("ZuluLib.ZuluTools")

'Содаем соедиение
Set Con = CreateObject("ZuluLib.ZsConnection")

   'Соединяемся с сервером Источником
   If Con.Connect ("zs.zulugis.ru", 6473, "xxx", "yyy") = 0 Then

      'Упаковываем слой с хоста, по которому авторизовались
      tools.LayerPack "zulu://zs.zulugis.ru:6473/Alexey/QUART.zl","d:\out\QUART.zpkg", 0

      Con.Disconnect

      'Соединяемся с сервером приемником
      If Con.Connect ("zs2.zulugis.ru", 6473, "abc", "xyz") = 0 Then   

         'Распаковываем слой по тому хосту ,по которому авторизовались
         tools.LayerUnpack "d:\out\QUART.zpkg", "zulu://zs2.zulugis.ru:6473/aaa/QUART.zl", 0 

         Con.Disconnect

      End If

   End If

End Sub
 
Алексей, большое спасибо за столь подробный ответ.
С предварительной авторизацией всё работает.
Страницы: 1