Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 24 апр 2024 15:25

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 1369 ]  На страницу Пред.  1 ... 57, 58, 59, 60, 61, 62, 63 ... 92  След.
Автор Сообщение
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 13 апр 2014 09:51 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Шановні розробники. Прошу Вас, будь-ласка, дайте відповідь на питання: чи можливо забезпечити повноцінну заборону оновлення карти на екрані функцією @Map.BeginUpdate тоді, коли скрипт "натикається" на функцію @Map.SplitMultiPolygon :?:

Для прикладу - короткий опис скрипта, що забезпечує "правильність" створення складних полігонів (тих, які містять дірки). В скрипті відбувається перебір всіх полігональних об'єктів карти (2-3 тисячі штук) з прогресом. Для кожного з полігонів:
1) якщо об'єкт - збірний полігон, застосовується @Map.SplitMultiPolygon - роз'єднати збірний;
2) для кожного з роз'єднаних застосовується @ExecuteMenu SpbSplit - розділити складний;
3) для всіх розділених в пункті 2 застосовується @ExecuteMenu spbCombine - складний полігон;
4) для всіх роз'єднаних в пункті 1 застосовується @ExecuteMenu spbJoin - з'єднати в збірний.

Щоб не спостерігати на протязі 4-ох хвилин блимання карти на екрані, можна відкрити й активувати порожню карту на час виконання скрипта (тоді оновлюватиметься тільки прогрес, рядок стану і права панель). Але-ж функція @ExecuteMenu працює тільки з активною картою?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 апр 2014 09:34 
Специалист
Специалист

Зарегистрирован:
21 янв 2013 16:06
Сообщения: 23
Может ли кто-то помочь возникла потребность в номерации участков карти по списку
;Читаем текст с файла
@Text[1].Load D:\классификатор.txt
;Помещаем 2 строку в переменую I
$I=2
;В переменую К помещаем кол-во строк файла
$K=@Text[1].Count
;Старт цикла
%Start
;Задаем условие для перехода по строкам
$I=$I+1
;Задаем условие если $I=$K то прекращаем цикл
@If $I=$K then @Break
;В переменую $z заносим соответсвующую строку из файл
$z=@Text[1].line[$I]
;Помечаем обьекты которые есть в карте и соответсвуют файлу
@Map.SelectByParameters 1|61=$z
;Ссылка перехода
@Goto %Start
Перебор участков с их последующим выделением я прописал можно ли как-то выполнять их номерацию (Автономерация вправо-вниз)


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 апр 2014 12:21 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Kasman писал(а):
Может ли кто-то помочь возникла потребность в номерации участков карти по списку
...
Код:
;Читаем текст с файла, в переменую К помещаем кол-во строк файла
$K=@Text[1].Load D:\классификатор.txt
;Присвоюєм значення змінній
$I=0
;Старт цикла
%Start
;Задаем условие для перехода по строкам
$I=$I+1
;Задаем условие если $I>$K то прекращаем цикл
@If $I>$K then @Break
;В переменую $z заносим соответсвующую строку из файл
$z=@Text[1].line[$I]
;Помечаем обьекты которые есть в карте и соответсвуют файлу
@Map.SelectByParameters 1|61=$z
;Ссылка перехода
@Goto %Start
В такому випадку читаються всі рядки текстового файла классификатор.txt, з першого до останнього.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 апр 2014 13:20 
Специалист
Специалист

Зарегистрирован:
21 янв 2013 16:06
Сообщения: 23
[/code]В такому випадку читаються всі рядки текстового файла классификатор.txt, з першого до останнього.[/quote]
Да но когда скрипт читает строки текстового файла он помещает эту строку в пременую $z которая в свою очередь попадает в функцию @Map.SelectByParameters 1|61=$z тоесть помечает участки на карте которые соотвествуют строке текстового файла \классификатор.txt\ и далее нужно пронумеровать помеченые участки в каком либо параметре /Автонумерация вправо-вниз\ и сделать ето нужно поочередно. Например:
;По текстовому файлу прочитали первую строку и занесли в переменую $z
;Подставили $z @Map.SelectByParameters 1|61=$z
;Нашли и пометили 5 совпадающих участков
;Эти участки пронумеровали /Автонумерация вправо-вниз\ начиная с 1
;По текстовому файлу прочитали вторую строку и занесли в переменую $z
;Подставили $z @Map.SelectByParameters 1|61=$z
;Нашли и пометили 19 совпадающих участков
;Эти участки пронумеровали /Автонумерация вправо-вниз\ начиная с №пследнего прунумерованого участка+1 тоесть с 6
И так нужно пронумеровать все участки карты


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 апр 2014 15:11 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Kasman писал(а):
...Перебор участков с их последующим выделением я прописал можно ли как-то выполнять их номерацию (Автономерация вправо-вниз)
Код:
;Читаем текст с файла, в переменую К помещаем кол-во строк файла
$K=@Text[1].Load D:\классификатор.txt
;Присвоюєм значення змінній
$I=0
;На всяк-випадок знімаєм позначку з усіх
@Map.DeselectAll
;Старт цикла
%Start
;Задаем условие для перехода по строкам
$I=$I+1
;Задаем условие если $I>$K то прекращаем цикл
@If $I>$K then @Break
;В переменую $z заносим соответсвующую строку из файл
$z=@Text[1].line[$I]
;Помечаем обьекты которые есть в карте и соответсвуют файлу
@Map.SelectByParameters 1|61=$z
;Робим активним параметр 62 (для прикладу - 62)
@SendChars <ESC>
@Dialog.EditParameter 62
;Визначаєм перше доступне значення параметра 62
$MaxParam=@Map.MaxParameterValue 62
;;якщо в жодного об'єкта немає заповненого значення параметра 62 - перше доступне значення 1
@If $MaxParam= then $MaxParam=0
@If $MaxParam= then @Goto %YesNumber
;;визначаєм десятковий розділювач системи
$Separ=@DecimalSeparator
;;якщо десятковий розділювач кома - відділяєм цілу частину, інакше число сприймається як рядок
@If $Separ=, then $MaxParam=@StringPart 1,$MaxParam
;;перше доступне значення - наступне після максимального
%YesNumber
$MaxParam=$MaxParam+1
;Номеруєм позначені в активному параметрі 62 [popCalculator|Автонумерація (вниз)]
@SendChars $MaxParam<CR>
@ExecuteMenu Autonumberingrightdown1
;На всяк-випадок знімаєм позначку з усіх
@Map.DeselectAll
;Ссылка перехода
@Goto %Start


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 апр 2014 15:41 
Специалист
Специалист

Зарегистрирован:
21 янв 2013 16:06
Сообщения: 23
voha писал(а):
Kasman писал(а):
...Перебор участков с их последующим выделением я прописал можно ли как-то выполнять их номерацию (Автономерация вправо-вниз)
[code]
Спасибо работает только
Первые участки с целевым 01 Землі сільськогосподарського призначення нумерует правильно (строка 1 класификатора)(номерует с 1 до 39);
Далее проверяет целевые 01.01 и так далее (ненаходит) доходит до 02.01 находит номерует но выдает нете номера начинает 4040, 4041, 4042 и т.д. когда доходит до целевого 14.02 выдает такие цифры 4791479247914851, 4791479247914852, а всего участков в даной карте 1146. тоесть последний номер должен быть 1146.
Большое спасибо за помощь


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 апр 2014 18:17 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Kasman писал(а):
...Перебор участков с их последующим выделением я прописал можно ли как-то выполнять их номерацию (Автономерация вправо-вниз)
Перепрошую, знайшов помилку: що значить не проганяти скрипт на "живому"прикладі
Код:
$K=@Text[1].Load D:\классификатор.txt
$I=0
@Map.DeselectAll
%Start
$I=$I+1
@If $I>$K then @Break
$z=@Text[1].line[$I]
@Map.SelectByParameters 1|61=$z
@SendChars <ESC>
@Dialog.EditParameter 62
$MaxParam=@Map.MaxParameterValue 62
@If $MaxParam= then $ValParam=0
@If $MaxParam= then @Goto %YesNumber
$Separ=@DecimalSeparator
@If $Separ=, then $ValParam=@StringPart 1,$MaxParam else $ValParam=$MaxParam
%YesNumber
$ValParam=$ValParam+1
@SendChars $ValParam<CR>
@ExecuteMenu Autonumberingrightdown1
@Map.DeselectAll
@Goto %Start
Якщо й цей не запрацює - дайте карту, довідник. Або користуйтесь @OpenLog, @CloseLog [Filename]


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 22 апр 2014 09:01 
Специалист
Специалист

Зарегистрирован:
21 янв 2013 16:06
Сообщения: 23
voha писал(а):
Kasman писал(а):
...Перебор участков с их последующим выделением я прописал можно ли как-то выполнять их номерацию (Автономерация вправо-вниз)


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


Вложения:
.txt [12.85 Кб]
Скачиваний: 503
.dmf [563.28 Кб]
Скачиваний: 676
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 22 апр 2014 20:39 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Kasman писал(а):
Может ли кто-то помочь возникла потребность в номерации участков карти по списку...
От, тепер працює
Код:
$Separ=@DecimalSeparator
$K=@Text[1].Load D:\классификатор.txt
$I=1
@SelectTab 3
@Map.DeselectAll
$Asc=@Dialog.WaitBox Позначте одну з ділянок, активуйте поле значення параметра 1, в якому має бути номер ділянки, на вкладці 'Інфо'
@If $Asc=0 then @Break Перервано користувачем
@Map.BeginUpdate
@Progress.Start $K Номерую ділянки
%Start
$I=$I+1
@If $I>$K then @Progress.Stop
@If $I>$K then @Map.EndUpdate
@If $I>$K then @Break Заномеровано ділянки
@Progress.StepBy
$z=@Text[1].line[$I]
@Map.SelectByParameters 1|61=$z
$Selcount=@Map.SelCount
@If $Selcount=0 then @Goto %Start
$MaxParam=@Map.MaxParameterValue 1
@If $MaxParam= then $ValParam=0
@If $MaxParam= then @Goto %YesNumber
@If $Separ=, then $ValParam=@StringPart 1,$MaxParam else $ValParam=$MaxParam
%YesNumber
$ValParam=$ValParam+1
@Map.EndUpdate
@SendChars $ValParam<CR>
@ExecuteMenu Autonumberingrightdown1
@Map.BeginUpdate
@Map.DeselectAll
@Goto %Start
Довгенько мучився з нестабільною роботою . Дивно, чомусь прокол з функцією @Dialog.EditParameter ParamIndex, що у скрипті активувала параметр 1 для введення. Номерація ділянок вниз виконується в активному, на момент номерації, параметрі. Вихід один: активувати параметр 1 в ході очікування скрипта.
Помітив що, якщо включена заборона оновлення карти, не посилається повідомлення $ValParam наступному діалоговому вікну:
@SendChars $ValParam<CR>
@ExecuteMenu Autonumberingrightdown1

Прикріпив відео
Вложение:
Demo.exe [1.04 Мб]
Скачиваний: 640


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 24 апр 2014 13:52 
Специалист
Специалист

Зарегистрирован:
21 янв 2013 16:06
Сообщения: 23
voha писал(а):
Kasman писал(а):
Может ли кто-то помочь возникла потребность в номерации участков карти по списку...
Спасибо большое. Работает проверил на других картах :D


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 05 май 2014 09:10 
Специалист
Специалист

Зарегистрирован:
01 мар 2011 23:08
Сообщения: 39
Откуда: г. Белая Церковь
ув. разработчики, у меня вопрос по функции "Загрузка из Интернет":
возможно ли получить информацию по участкам при загрузке публичной кадастровой карты не клацая на каждый отдельно, а как-то автоматизировать этот процес.
Просто нужна информация с большого количества участков, а клацать каждый не весьма приятное и быстрое занятие :D
буду благодарен за помощь 8)


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 14 май 2014 13:06 
Специалист
Специалист

Зарегистрирован:
20 июн 2012 10:49
Сообщения: 22
Возможно ли сделать так чтобы при приближении, к примеру, до масштаба 1:10 автоматически включался вид|черновой?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 15 май 2014 11:49 
Специалист
Специалист

Зарегистрирован:
21 янв 2013 16:06
Сообщения: 23
Ребята помогите пожалуйста можна ли при помощи скриптов реализовать проверку слоев на карте
Например: Проверить наличие слоев Квартал, Дилянка , Угодие есть ли они на карте. я сделал ето так
@Map.SelectLayer id10000
$K=@Map.SelCount
@if $K=0 then @Break Отсутствует слой квартал Остановлено
@Map.DeselectAll
@Map.SelectLayer id20000
$D=@Map.SelCount
@if $D=0 then @Break Отсутствует слой ділянка Остановлено
@Map.DeselectAll
@Map.SelectLayer id30000
Можна ли реализовать ето по другому?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 15 май 2014 14:24 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Kasman писал(а):
...Например: Проверить наличие слоев Квартал, Дилянка , Угодие есть ли они на карте...
@Map.Layers.ObjectCount [Number]


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 15 май 2014 15:28 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
BAM писал(а):
Возможно ли сделать так чтобы при приближении, к примеру, до масштаба 1:10 автоматически включался вид|черновой?
Якщо скриптом, треба функція %Events.OnScaleChange - обробка події зміни масштабу карти на екрані.


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1369 ]  На страницу Пред.  1 ... 57, 58, 59, 60, 61, 62, 63 ... 92  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 83


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB