RUS  ENG 

Сергей Попов (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 След.
Иконка для кнопки команды плагина
 
Дмитрий, добрый день!

Большое спасибо!
Иконка для кнопки команды плагина
 
Пишу plugin на c#, плагин добавляет набор кнопок на стандартную панель "Навигация"

Подскажите, пожалуйста, как сделать сделать:
1. Кнопки иконками, а не надписями
2. Сделать кнопку с состоянием нажата/отжата по аналогии с кнопкой "Информация"

P.S. В справке нашёл описание
toolbarbutton bitmapresource="идентификатор_ресурса"
но не понял как это реализовать в случае plugin на с#

Спасибо!
Использование ZuluTools MapPack/Unpack, LayerPack/Unpack, LayerCopyEx
 
Алексей, большое спасибо за столь подробный ответ.
С предварительной авторизацией всё работает.
Использование 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

Настройка кнопок MapToolBarCtrl из кода
 
Добрый день!

Возможно ли настроить кнопки (добавить необходимые кнопки) элемента MapToolBarCtrl из кода программы?

Поясню в чём дело, при переходе с NET Framework на NET Core в VS2022 в редакторе Windows Form не открывается редактор кнопок для данного элемента, при попытке открыть VS зависает. К слову, так происходит со всеми внешними редакторами свойств для элементов из ZuluXTools, по крайней мере у меня.
Понимаю, что решение вопроса с VS, скорее всего, дело не быстрое, да и из не решаемых вопросов пока только кнопки на панели инструментов.

Спасибо!
Как программно подключиться к zuluserver
 
Спасибо! Теперь всё работает как надо.
P.S. Предложение, может добавить описание пути с пользователем ZuluServer и учётными данными Windows в раздел справки [URL=https://politerm.com/zuludoc/index.html#zuluax/MapDoc_Open.html]ZuluGIS 2021 - Open method (MapDoc) (politerm.com)[/URL], мне кажется это полезная информация.
Как программно подключиться к zuluserver
 
Это я знаю, но хотелось бы использовать учётные данные Windows, чтобы путь для всех пользователей был один (без конкретного пользователя), а при подключении брались учётные данные из сеанса пользователя (AD). Это невозможно?
Как программно подключиться к zuluserver
 
Добрый день! Версия клиента 10.0.0.8571u.x64. При подключении к ZuluServer из стороннего приложения используется путь формата: zulu://1.1.1.1:6473/map.zmp, подразумевается, что для авторизации будут использованы учётные сведения windows. Если на ПК, на котором запускается приложения, в настройках ZuluGIS добавлено соединение с сервером (1.1.1.1) и в качестве способа авторизации выбран "Учётные сведения Windows", то всё работает, если же такие настройки не сделаны, то возникает ошибка авторизации (клиент подключается к серверу как anonimus). Есть ли возможность прописать в пути к серверу какой-то параметр, чтобы авторизация происходила без настроек соединения в ZuluGIS?
Поиск объекта слоя по координатам
 
Спасибо, этот метод отрабатывает как мне надо.
Вопрос для общего развития, почему метод, даже когда находит элемент, возвращает retPoint = null?
Поиск объекта слоя по координатам
 
Задача: на слое А есть символьный объект ОБЪЕКТ, необходимо на слое Б создавать символьные объекты МЕТКИ в непосредственной близости от него в идеале было бы в точке с координатами центра объекта ОБЪЕКТ, но Zulu не даёт создать несколько МЕТОК с одинаковыми координатами на одном слое. Для решения этой задачи был придуман простой алгоритм, перед рисованием МЕТКИ в точке с координатами X,Y проверяется наличие другой МЕТКИ в этой точке методом Layer.ElemIDByXY, если МЕТКА есть, то точка смещается на заданную величину и снова осуществляется проверка наличия метки, если в новой точке метка не обнаружена, то создаём новую метку.
Но данный алгоритм не работает, тк при смене координат метод Layer.ElemIDByXY продолжает возвращать ID МЕТКИ находящейся в центре и только по достижению достаточно большой дельты (30 метров от центральной точки) возвращает -1.
Подскажите, в чём может быть проблема?

Лог смещения точки:

X:-56100 Y:9210 radius:10 angle:0 element ID:13
X:-56105.4402111089 Y:9191.60928470924 radius:10 angle:10 element ID:13
X:-56090.8705474927 Y:9204.08082061813 radius:10 angle:20 element ID:13
X:-56109.8803162409 Y:9201.54251449888 radius:10 angle:30 element ID:13
...
X:-53619.4630982338 Y:10887.2867803002 radius:3000 angle:290 element ID:-1
Использование MS SQL Server в качестве источника данных (аутентификация пользователя)
 
Дмитрий,
"Заполнить логин и пароль не в строке соединения, а в свойствах источника данных ZuluGIS. Опцию "Использовать учетные сведения ZuluServer" там же отключить." - сейчас именно так и настроено, пароль прописан, но похоже что ZuluServer не использует его при обращении к СУБД.
Использование MS SQL Server в качестве источника данных (аутентификация пользователя)
 
Дмитрий, спасибо за ответ.
Дело было действительно в опции сервера "Передавать учётные сведения на сервер СУБД".
Закомментировал dbms-auth-pass: all в DataSrc.cfg.
Теперь новая проблема, имя пользователя берется из формы настройки источника данных, а пароль нет.
Результат: Login failed for user 'zulu'. Reason: Password did not match that for the login provided. State 8.

Подскажите, куда ещё можно посмотреть?
Использование MS SQL Server в качестве источника данных (аутентификация пользователя)
 
При использовании MS SQL Server в качестве источника данных возникла проблема с подключением. В конфигурации ZuluServer настроена строка подключения с использованием SQL Server Native client 11, для аутентификации на SQL server используется учетная запись SQL Server,
логин и пароль прописаны в строке соединения и поставлена галка "Разрешить сохранение пароля". В поля пользователь и пароль формы настройки соединения введены эти же данные. Галочка "Использовать учетные сведения ZuluServer" снята. Однако при обращении к данным из Zulu используются имя пользователя и пароль, под которыми открыта карта (учетные сведения ZuluServer).
Подскажите, что я делаю не так?

ZuluServer 8.0.0.7290
Удаление элемента не используя визуальные компоненты
 
Алексей, приношу свои извинения, дело было в логике нашей программы, теперь все работает. Спасибо за ответ!
Удаление элемента не используя визуальные компоненты
 
Задача: удалить с заданного слоя элемент с определенным Id не используя визуальные компоненты.

Использую следующую функцию:

var map = new MapDoc();
map.Open(MapSettings.MapPath);
var layer = map.Layers[layerId];
var result = layer.DeleteElement(elementId);

result = 0, но элемент не удаляется.

Подскажите, пожалуйста, что я делаю не так?

Карта опубликована на сервере, версия 8.0.0.7221u
ExecCommand
 
Добрый день! В программе написанной на VB.NET пытаюсь выполнить команду ExecCommand("MapBookmarks", 0) результат: "Microsoft.VisualBasic - Адресат вызова создал исключение", версия Zulu последняя, пробывал и другие команды результат тот же. Подскажите пожалуйста в чем может быть проблема.Спасибо!
Временный слой
 
Будем ждать!
Временный слой
 
Снова возникла необходимость временного слоя с вышеописаным функционалом, в прошлый раз был придуман выход, но сейчас хотелось бы написать красивое решение. :) Отсюда вопрос, был ли добавлен такой объект в модель Zulu?
ElemIDByXY
 
Версия Zulu 6.0.0.3384
Код (VB.NET)
Private Function FindPairObjectBuildingV3(ByVal ZLayer As Layer) As ObjectBuildingsList
   '//ZLayer - слой содержащий объекты "Потребитель"
   Dim iD As Integer = 2
   Dim zpSys As ZPoint = Nothing
   Dim ekSys As ElementKeys
   Dim ekBuilding As ElementKeys
   Dim c As New ZuluLib.Contour
   Dim x(3) As Double
   Dim y(3) As Double
   Dim obl As New ObjectBuildingsList ' //Структура содержащая пару Потребитель - Дом
   Try
     ekSys = ZLayer.SelectByType(3, 0)
     For i = 1 To ekSys.Count
       zpSys = ZLayer.Elements(ekSys(i)).GetCenter
       '//Строим контур
       x(0) = zpSys.X - iD : y(0) = zpSys.Y - iD
       x(1) = zpSys.X + iD : y(1) = zpSys.Y - iD
       x(2) = zpSys.X + iD : y(2) = zpSys.Y + iD
       x(3) = zpSys.X - iD : y(3) = zpSys.Y + iD
       c.Fill(4, x(0), y(0))
       '//Находим дом пересекающийся с этим контуром
       '//ZuluMap.BuildingLayer - слой с домами
       ekBuilding = ZuluMap.BuildingLayer.IntersectByContour(c,  eCrossCriteria.eFullyOrPartialInside, 0)
       If ekBuilding IsNot Nothing AndAlso ekBuilding.Count > 0 Then _
         obl.Add(ekSys(i), ekBuilding(1))
     Next
   Catch ex As Exception
     MSGErr(ex)
   End Try
   Return obl
End Function
Кусочек слоя подготовлю, подскажите, на какой e-mail его удобнее послать?
ElemIDByXY
 
Доброго времени суток!
Есть два слоя, на одном расположены типовые объекты "Потребители", а на другом примитивы "Дома".
Задача: в базе данных потребителей проставить ID дома поверх которого он нарисован.
Решение: найти объект дом в контур которого попадают координаты объекта потребитель
Вариант1. Метод слоя IntersectByLayer. Работает быстро, но есть момент, координаты потребителя, могут немного не поподать в контур дома (дрогнула рука художника :)), таким образом некоторое количество потребителей осталось без домов;
Вариант2. Метод слоя GetClosestElementByXY. Отработал на 5, но долго, отсюда и возникла идея попробовать вариант3;
Вариант3. Метод слоя IntersectByContour. Идея: беру координаты потребителя (x,y), строю квадратный контур(x-2,y-2; x+2,y-2; x+2,y+2; x-2,y+2), при помощи метода нахожу ключи всех объектов удовлетворяющих критерию пересечения eFullyOrPartialInside.
Отработал быстро, но
1.Находит далеко не все дома (значительно меньше чем вариант1);
2.При многократном запуске количество найденых домов различное.
Подскажите, что я делаю не так, очень хочется разобраться с данным методом?
Временный слой
 
Большое спасибо!
Временный слой
 
А есть надежда на появление временного слоя? Создать для каждого клиента папку, ето значит что у каждого клиента будет свой слой с которым он будет работать, я правильно Вас понял?
Временный слой
 
Проблема в том что программа многопользовательская... Каждый пользователь должен видеть только те объекты слоя которые он построил в данном сеансе работы, другие пользователи видеть их не должны, по выходу пользователя все нарисованные объекты удаляются, грубо говоря слой на карте нужен только для того чтобы хранить описания типов объектов и режимы... К сетям этот слой также не имеет никакого отношения - сети отображаются на другом слое, в этой задаче слой с сетями необходим только для вычисления координат объектов которые рисуются на временном слое... Если смотреть глобально то требуется объект типа слой, на котором программно рисуются объекты для конкретного сеанса пользователя и по закрытию сеанса удаляются, другие пользователи работающие в данный момент с программой эти объекты видеть не должны... P.S. Извиняюсь за кривое объяснение задачи :)
Временный слой
 
Доброго времени суток! Подскажите пожалуйста как лучше реализовать следующий функционал: карта находится на Zulu Server, она содержит слой в котором заданы типы объектов и режимы, самих объектов на слое нет... В процессе работы с программой, на основании данных, которые хранятся в базе MSSQL, динамически строятся объекты (отображение текущей ситуации по теплотрассам)... По закрытию программы все постороенные объекты должны удаляться. Программа многопользовательская. Пока не придумал ничего умнее чем выгружать слой и присваивать свойству InMemory = true, но не знаю как это будет работать при большом количестве объектов... Может есть какое то другое решение? Спасибо!
Путь к БД без компонента ZuluMap
 
Большое спасибо!
Страницы: 1 2 3 4 След.