RUS  ENG 

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

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

Страницы: 1 2 3 4 5 След.
Принудительно убрать поиск по ID
 
[QUOTE]Андрей Комаровских написал:
Поиск по ID показывается если в Capabilities слоя указывается IDSearch=Yes. Но это настройка для всего слоя для всех пользователей.[/QUOTE]

а где Capabilities находятся? как найти?
программа не отвечает
 
Добрый день.

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

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

Сам вопрос в следующем:
что потенциально может провоцировать такие задержки и подвисание программы в плане интернета? кратковременный высокий пинг или пропажа интернета на долю секунды? Есть ли какие-то способы проверить скорость/стабильность соединение клиента с сервером?
Справочник с зависимостью
 
Добрый день.


какая есть проблема:

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

Что хочется:

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

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


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

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

Сам принцип понятен, но непонятна связь масштаба и указанного размера. Вне зависимости от заданного размера, символ перестает масштабироваться после z17 в z16 и далее размер уменьшается. Почему именно между z17 и z16 это происходит? Формулировка не очень понятная.
Помимо не увеличивать, есть еще и не уменьшать, собственно тот же вопрос

И как я понял, они исключают друг друга?

и еще вопрос: Можно ли как-то эти две функции совместить, например:
при приближении больше z20 символ не менял размеров от масштаба, то есть в z21 стал больше (Не уменьшать указанного размера)
при уменьшении z19 и ниже до z17 имел функцию "Не увеличивать больше указанного размера"
РАБОТА СО СЛОЯМИ TILE-СЕРВЕРОВ
 
так в первом сообщении и указал, что я обычно смотрю на форуме sas planet. Там продвинутые пользователи делятся актуальными ссылками, сам я не умею это делать. Просто там ищу когда ссылки перестают работать.

Что касается тех поддержки разработчиков, то вопрос с тайловыми слоями вообще не к ним. Вот если бы сама возможность задавать тайл-сервер не работала, то тогда да
Изменено: Сергей Мечев - 05.10.2023 22:50:09
РАБОТА СО СЛОЯМИ TILE-СЕРВЕРОВ
 
Цитата
Dave_Murey написал:
Сергей Мечев , Спасибо Вам большое за подсказку. Откройте секрет, а каким образом можно актуализировать данные ссылки? И по Росреестру тоже интересует ссылка.


так ссылки и так актуальные. Или вы про файл описатель?
Так как ссылки меняются крайне редко, я просто новый слой создаю.

что касается росреестра, то тут не все так просто, напрямую в зулу запихнуть не получилось, да и не надо*.

через тот же форум скачал актуальные карты росреестра для sas planet
выделил нужную область для скачивания и закешировал уровни 16-20
в зулу создал тайловый слой, только он ссылался на папку с тайлами, а не по ссылке.

*росреестр вещь не быстрая, и Zulu будет очень часто виснуть из-за того, что не может достучаться до тайлов. Отсюда и суть кеширования.
Если тайлы будут на компьютере/сервере, то тормозов не будет
РАБОТА СО СЛОЯМИ TILE-СЕРВЕРОВ
 
Яндекс спутник: https://core-sat.maps.yandex.net/tiles?l=sat&x={x}&y={y}&z={z}&scale=1&lang=ru_RU
Яндекс обычный: https://core-renderer-tiles.maps.yandex.net/tiles?l=map&scale=1&lang=ru_RU

ссылки выше рабочие.
Но яндекс может в любой момент их поменять. В этом случае обычно иду на форум sas planet, там люди выкладывают актуальные ссылки.
Не только на Яндекс, но и на другие нужные ресурсы и подложки, например я там взял ссылку на скачивание тайлов росреестра по участкам.
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
1000% что используемый логин и пароль в веб версии не имеет учетки в mssql или не имеет достаточно прав на конкретную таблицу.
В общем это в самом mssql надо фиксить.

Для теста:
создадите на стороне mssql учетную запись с таким же логином и паролем как в Zulu и дайте пользователю права сисадмина. и снова откройте объект в веб версии
Изменено: Сергей Мечев - 08.08.2023 19:41:46
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
Помню свой первый раз установки sql server, это заняло часа 2. В общем танцы с бубном получились
Из того что помню:
1. Помимо самого management studio надо еще и сам сервер установить.
2. Надо открыть порт 1433 (если не меняли). Через роутер и файрвол, точно не помню. *** и не уверен что его вообще обязательно открывать***
3. Далее по идее можно с помощью management studio подключится к серверу И в настройках разрешить доступ извне *** тоже не уверен что это прям маст хев.

* 2 и 3 нужны чтоб к sql серверу можно было достучатся из любого места, не только локально.

Что касается переноса таблиц из localdb в mssql, то тут сложного ничего нет. В структуре слоя, там где таблицы, правый клик - задачи - мигрировать данные и выбираем нужную базу. При этом зулу и и скл надо связать.
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
Цитата
Сергей Коваленко написал:
Тогда так получается:

"DATABASE=Участки;"

Буза у меня стандартная, название не менял, но ошибка не ушла, возможно мне эту базу дополнительно настроить нужно, по источнику может, чтобы связь прошла, или напрямую все должно работать?
Скорее всего вы используете источник данных localDB, с ним тоже можно работать, но через объектную модель.
Что касается ВНЕШНЕЙ базы данных, то ее надо скачать(если нет), настроить и связать с зулу, через источник данных (если с зулу смотреть) или же через монитор -> сервер -> конфигурации
Изменено: Сергей Мечев - 23.07.2023 12:03:57
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
Цитата
Сергей Коваленко написал:
1. Первый вопрос закрыт, спасибо! Все переписал, все отлично работает.
2. По второму не понял, то есть как-то в БД слоя Зулу сразу прописывать информацию из Excel? Мне посоветовали через Python сделать, но еще не прорабатывал данный вопрос в этом ракурсе.

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

Ниже будет пример кода по импорту данных в БД.
Код
import pyodbc
import openpyxl
import os
import shutil

wb = openpyxl.load_workbook(r'D:\1\temp.xlsx')
wb.active = 0
sheet = wb.active

con = pyodbc.connect(
    "Driver={SQL Server Native Client 11.0};"
    "Server=ip;"
    "Database=database;"
    "UID=login;"
    "PWD=password;"
    "Trusted_connection=no;"
)

cur = con.cursor()

i = 2

while i <= sheet.max_row:
    cur.execute(f"upd ate opora se t marka = {sheet['B' + str(i)].value} fr om opora wh ere [sys] = {sheet['A' + str(i)].value}")
    con.commit()
    
    i += 1
    
print("Done")
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
Цитата
Сергей Коваленко написал:
Спасибо!
1. Код изменил по логике, но пока в доступе какая-то проблема, завтра буду решать, хотел-бы уточнить, то есть, если я в таком случае добавляю 5 слоев, то они автоматом получают имена L1, L2..L5 верно?

2. Да, именно автоматизированную, как тут, допустим в SQL код создает временную таблицу из 2 столбцов, загруженных из Excel или CSV и значения присваивает уже столбцам в таблице в Зулу.

1. Нет. L1, L2 я задаю как псевдонимы, то есть меняю название слоя на более удобное для написание название через "as". В SQL коде можете посмотреть.

2. Если вы используете стороннюю БД, то тут и без zulu можно, сразу на прямую данные вносить. Не сильно понял зачем временную таблицу делать
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
Цитата
Сергей Коваленко написал:
Добрый день!

При развитии темы встретился со следующими проблемами:

1. Данные скрипты отлично работают в одной папке, но в рамках возникшей необходимости реализовать разные права доступа сотрудникам, все слои разбил по разным папкам, оставив карту в главной папке (слои в подпапках), при таком раскладе скрипты не работают, то есть карта не находит свои слои, может опыт был, как мне проще реализовать VBS через SQL, где прописаны адреса к каждому слою?

2. Так как многие сотрудники привыкли в Excеl работать, и сложно новому учиться, а данные в Зулу нужны актуальные, возможно-ли реализовать, через описанный способ выше, чтобы из определенного столбца Таблицы Excel на сервере посредством VBS через SQL, данные подтягивались в определенный столбец в таблице Зулу?

1. Вопрос:
Код
street_simf
Sub street_simf
   Set Map = CreateObject("ZuluLib.MapDoc")

   Map.AddLayer("zulu://login:password@localhost:6472/2021/Симферополь/Граница/street.zl")

   Map.AddLayer("zulu://login:password@localhost:6472/2021/Симферополь/For ing/Notes.zl")
       
    
   Map.ExecSQL("upd ate L1 se t L1.[street] = L2.[street] fr om [Поручения] as L1 , [Улицы] as L2 wh ere L1.typeid = 2 and L1.geometry.stwithin(L2.geometry) ") 
End Sub


2. Вопрос:
https://youtu.be/xn2__bZbD94?t=1839 Думаю это вам и надо

Но! если импорт данных будете делать часто, то лучше это автоматизировать, к тому же, можно написать алгоритм, который будет проверять вносимые данные до самой загрузки в зулу. Это можно сделать на многих языках. Я использую python и с#
установка мишени
 
[QUOTE]Алексей Аширов написал:
[QUOTE] написал:
Добрый день
Подскажите:

Есть ли иной способ программно поставить мишень на объект, помимо метода CopyFromSelection? Например, группа уже сформирована и требуется поставить мишень на один объект, при этом группу не затрагивая.[/QUOTE] Добавили

TargetSelection::AddElem
TargetSelection::RemoveElem
TargetSelection::Invert[/QUOTE]
Спасибо!
установка мишени
 
Добрый день
Подскажите:

Есть ли иной способ программно поставить мишень на объект, помимо метода CopyFromSelection? Например, группа уже сформирована и требуется поставить мишень на один объект, при этом группу не затрагивая.
Изменено: Сергей Мечев - 31.05.2023 17:04:08
Общая информация для руководства (сводные отчеты по данным), практика пользователей ЗулуГИС при выводе информации
 
Так напишите автору видео) Думаю он вам поможет.

P.S. фотки тоже можно в такие пдф отчеты вставлять.
Изменено: Сергей Мечев - 24.05.2023 23:21:34
Автоматическая смена режима объекта, Требуются советы по созданию алгоритма по смене режима
 
Добрый день.
Как раз сегодня решал эту задачу:

Собственно пример кода на vbscript
Код
ChangeMode
Sub ChangeMode
Set L = CreateObject("ZuluLib.Layer")
L.open "zulu://Login:password@localhost:6473/2023/vash_sloy.zl"
Set elemetsResult= L.ExecSQL("SELECT sys where typeid = 1 and (modeid = 1 or modeid = 2) and Progress = 'Выполнено'")
   Set elementsList= elemetsResult.DataSet
   elementsList.MoveFirst
   Do
   If elementsList.eof = true then exit do  
     
   element = elementsList.FieldValue(0)
        L.Elements.Item(element).Mode = 3
   elementsList.MoveNext
   Loop
End Sub


Код выше вы можете переделать под себя.
Он запускается с помощью бат файла:
Код
rem For 32-bit OS
 Set "SystemPath=%SystemRoot%\System32"
  
 rem If 64-bit OS
 if exist %SystemRoot%\SysWOW64 set "SystemPath=%SystemRoot%\SysWow64"

c:\windows\System32\cscript.exe D:\Zulu\SQL_VBS_BAT\ChangeMode.vbs


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

Совет: я бы сначала перевел бы даты в некоторый счетчик (18.05.2023= 1, 19.05.2023=2, 25.06.2023 = 3), так будет проще писать скрипт (это делается либо с помощью сторонней БД (рекомендую), или же создать справочник)
Торможение макросов
 
Добрый день.
Версия 10.0.0.8512u.x64 - но эта проблема была еще в Zulu 8.

Суть: есть некий макрос (пример ниже), при его запуске он отрабатывает примерно за секунд 20-30 ( в зависимости от размера сети), где элементов в сети примерно 400. Если запускать макрос много раз (больше 10-15) то с каждым разом он будет выполнятся все дольше. Вполь до того, что сеть из 10 элементов обработает за минут 10!

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

Вопрос: в чем проблема?


[CODE]Sub Num_Opora
Const eIncidentAll = 3
Const eNetworkAll = 3
' ActiveX enumeration values definitions end
   
Set L = Zulu.ActiveMapDoc.Layers.Active

L.NetworkTools.ClearResults
L.NetworkTools.ClearOverloadedStates
L.NetworkTools.ClearFlags
       
tp = L.CurrentID

L.NetworkTools.AddFlag tp

Zulu.ActiveMapDoc.Refresh 1
L.NetworkTools.FindConnected

 
L.Selection.ModifyByKeys 1, L.NetworkTools.Results  



L.ExecSQL("upd ate set [tp_sys] = " + cstr(tp) + " where geometry.selected() = 1")

Se t keys = L.Selection
set keys2 = keys.ElementKeys
set all_sys_uch = keys2.SelectByType(4, 0)
For i = 1 to all_sys_uch.Count
   sys_uch = all_sys_uch.Item(i)
Set nwo = L.NetworkObjects (eNetworkAll)
nwo1 = nwo.GetIndexByKey (sys_uch)
key_end = nwo.KeyEnd(nwo1)
   key_begin = nwo.KeyBegin(nwo1)
   L.ExecSQL("upd ate set [start_sys] = " + cstr(key_begin) + " where typeid = 4 and sys = " + cstr(sys_uch))
   L.ExecSQL("upd ate se t [end_sys] = " + cstr(key_end) + " where typeid = 4 and sys = " + cstr(sys_uch))
   L.ExecSQL("upd ate se t [opora_sys] = " + cstr(key_begin) + " where typeid = 3 and sys = " + cstr(key_end))
Next

Se t keys2 = L.NetworkTools.Results.SelectByType (2 , 0)

cnt = keys2.Count

Set opora_k = L.ExecSQL("upd ate set [RootLevel_1] = null where geometry.selected() = 1 ")
For j = 1 To cnt
   sys_opora = keys2.Item(j)

kol_svet = "SELECT count([sys]) WHERE opora_sys = " + cstr(sys_opora) + " and typeid = 3"
Se t Result = L.ExecSQL(kol_svet)
   
kol_u = "SELECT count([sys]) WHERE start_sys = " + cstr(sys_opora) + " and typeid = 4"
Set Result_u = L.ExecSQL(kol_u)

   
   If (Result_u.DataSet.FieldValue(0) - Result.DataSet.FieldValue(0)) >0 Then
       Set opora_p = L.ExecSQL("upd ate set [RootLevel_1] = 0 where sys = " + cstr(sys_opora))
End if
   
   
   Se t opora_k = L.ExecSQL("upd ate set [RootLevel_1] = 1 where [RootLevel_1] is null and geometry.selected() = 1 ")

Next

Se t NObjects = L.NetworkObjects (eNetworkAll)
'''
Set Tree = L.GetShortWayTree(tp)
Set keys = L.Selection
set keys2 = keys.ElementKeys
Set Keys = keys2.SelectByType (2, 0)
cnt = Keys.Count
For j = 1 To cnt
   Set Item = Tree.ItemById(Keys(j))
Set sql_1 = L.ExecSQL("upd ate set l_tp = " & Item.RootLength & "  where Sys = " + CStr(Item) + "")

 
Next

nn = 1
Se t ways= L.ExecSQL("SELECT sys, l_tp where typeid = 2  and RootLevel_1 = 1  ORDER BY l_tp ASC")

Set list= ways.DataSet
list.MoveFirst
       Do
If list.eof = true then exit do
Set Way = L.ShortWay (tp, ways.DataSet.FieldValue(0))
For i = 2 To Way.Count
ID = Way.Item(i)
If i Mod 2 = 0 Then
Else  
Set status = L.ExecSQL("SELECT [num_opora] where typeid = 2 and Sys = " + CStr(ID) + "")
If status.DataSet.FieldValue(0) = "" Then
L.ExecSQL("update set [num_opora] = " + CStr(nn) + " where typeid = 2 and Sys = " + CStr(ID) + "")
nn = nn +1
End if

End If  
Next  

list.MoveNext
Loop

L.NetworkTools.ClearResults
L.NetworkTools.ClearOverloadedStates
L.NetworkTools.ClearFlags
L.Themes.UpdateTheme 2
msgbox("Готово")

End Sub[/CODE]
ошибка при запуске vbs из bat
 
[QUOTE]Алексей Аширов написал:
[QUOTE] написал:
Добрый день.
Перешел с 32 битной версии в 64.
Версия 10.0.0.8512u.x64

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

Помимо самой версии, поменялось и расположение папки Zulu.  Вместо C:\Program Files (x86)\Zulu8, теперь в C:\Program Files\ZuluGIS

Подскажите, в чем может быть проблема и куда смотреть?[/QUOTE] Добрый день.

В батнике с vbs для COM 64-бит работает
c:\windows\System32\cscript.exe f:\sss.vbs

В батнике с vbs для COM 32-бит работает
c:\windows\SysWOW64\cscript.exe f:\sss.vbs

При установке 64 версии расположение действительно новое[/QUOTE]


Спасибо, помогло.

Хотя делал все как в этой статье: https://politerm.com/articles/dev/object_model_in_bat/
Возможно она устарела?
ошибка при запуске vbs из bat
 
Добрый день.
Перешел с 32 битной версии в 64.
Версия 10.0.0.8512u.x64

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

Ошибка:

D:\Zulu\SQL_VBS_BAT>rem For 32-bit OS

D:\Zulu\SQL_VBS_BAT>Set "SystemPath=C:\Windows\System32"

D:\Zulu\SQL_VBS_BAT>rem If 64-bit OS

D:\Zulu\SQL_VBS_BAT>if exist C:\Windows\SysWOW64 set "SystemPath=C:\Windows\SysWow64"

D:\Zulu\SQL_VBS_BAT>C:\Windows\SysWow64\cscript.exe D:\Zulu\SQL_VBS_BAT\check.vbs
Microsoft ® Windows Script Host Version 5.812
Copyright © Microsoft Corporation. All rights reserved.

D:\Zulu\SQL_VBS_BAT\check.vbs(3, 1) Microsoft VBScript runtime error: ActiveX component can't create object: 'ZuluLib.Layer'


Помимо самой версии, поменялось и расположение папки Zulu.  Вместо C:\Program Files (x86)\Zulu8, теперь в C:\Program Files\ZuluGIS

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

Пожелания:
1. если в шаблоне поиска заданы несколько полей, то пользователю нужно при поиск писать через запятую "поля". то есть поиск может выглядеть как-то так:
Симферополь,,лен,10 чтоб найти Симферополь, улица,ленина,10.
Такой поиск не интуитивен и человеку приходится по несколько раз объяснять, как правильно выполнять поиск, в итоге им никто не пользуется))
Хотелось бы как на картинке:
- есть отдельные строки для ввода по каждому полю
- в начале строки ввода есть пользовательское наименование поля, чтоб было сразу понятно, что надо вводить

и конечно же сохранить прекрасную функцию частичного ввода, то есть написав "симф" поиск выдасть все записи, где в этом поле есть эта часть


2. В настольной версии добавить запись к объекту нажав "+" не интуитивно и иногда опасно. Часто пользователь при "перетирании" полей вместо + нажмет галку и данные изначальной записи сотрутся. Хотелось бы чтоб кнопка + была всегда активна (если есть второй идентификатор), и при ее нажатии создавалась пустая запись, как например в веб версии.
Ошибка при запуске плагина
 
Добрый день. Версия 10.0.0.8449u, Дата сборки 17.02.2023
При запуске плагина на c# появляется такая ошибка. Однако если еще раз запустить плагин, то все работает хорошо.


Сервер 32 бита. Ошибку вызывает наличие графика в форме, а именно наличие элемента ChartAreas.
Изменено: Сергей Мечев - 18.02.2023 20:39:38
sql запрос к справочнику
 
Цитата
написал:
Цитата
написал:
Если я правильно понял Ваш вопрос, то можете попробовать использовать Case.
Пример:
Код
  upd ate Your_Layer
se t [Зарастание, мм] = case [Dвнутр, м]
when '100' then 100*100
when '200' then 200*100
end
from Your_Layer
  
Да это конечно работает, но не слишком эстетично выглядит. Придется перечислить тут весь справочник. Неужели нет способа добраться до значения из справочника или заставить работать функции CAST или CONVERT? Но все равно спасибо, воспользуюсь пока тем, что вы дали.
Если скинете пример справочника, то думаю можно и через cast или convert. Вообще есть и другие варианты, но case это 100% вариант.
sql запрос к справочнику
 
Если я правильно понял Ваш вопрос, то можете попробовать использовать Case.
Пример:
Код
upd ate Your_Layer
se t [Зарастание, мм] = case [Dвнутр, м]
when '100' then 100*100
when '200' then 200*100
end
from Your_Layer
Изменено: Сергей Мечев - 17.02.2023 15:56:36
Подмена прав для использования метода
 
Добрый день.
Пишу плагин на c#, столкнулся с проблемой, где в одном методе пользователю требуются права на перечисление, например подвинуть группу светильников ровно к опорам.
Давать пользователю права на перечисление нельзя, чтоб он не смог слой как-то скопировать или упаковать.

Есть ли способ как то подменить в конкретном методе логин и пароль, который бы имел нужные права (то что пришло на ум), например жестко прописать в коде логин и пароль для этого метода?
Страницы: 1 2 3 4 5 След.