Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 28 мар 2024 23:50

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




Начать новую тему Ответить на тему  [ Сообщений: 1235 ]  На страницу Пред.  1 ... 50, 51, 52, 53, 54, 55, 56 ... 83  След.
Автор Сообщение
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 28 дек 2016 12:38 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
voha писал(а):
Та ж сама задача - розділити збірний полігональний об'єкт на не збірні, однак об'єкт збірно-складний (комплексний полігон - бублик з частиною полігона в дірці від бублика).
Саму iдею я Вам дав, треба було трохи доробити
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2539&p=38459#38459

voha писал(а):
2) просити розробників допрацювати функцію @Map.SplitMultiPolygon N,....
1. Вдосконалити ф-цiю @Map.SplitMultiPolygon N, результатом якої був би список новостворених об'єктiв
2. Додати нову для отримання типу елементу @Map.Object[N].Type 1-точка, 2-лiнiйний елемент, 3-складний полiгон i т.д.

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 28 дек 2016 16:37 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
voha писал(а):
Та ж сама задача - розділити збірний полігональний об'єкт на не збірні, однак об'єкт збірно-складний (комплексний полігон - бублик з частиною полігона в дірці від бублика).
Саму iдею я Вам дав, треба було трохи доробити
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2539&p=38459#38459

voha писал(а):
2) просити розробників допрацювати функцію @Map.SplitMultiPolygon N,....
1. Вдосконалити ф-цiю @Map.SplitMultiPolygon N, результатом якої був би список новостворених об'єктiв
2. Додати нову для отримання типу елементу @Map.Object[N].Type 1-точка, 2-лiнiйний елемент, 3-складний полiгон i т.д.
Чемно дякую.
Однак мені траплялися складні полігони, в координатах яких спочатку йшов блок координат внутрішнього елемента, а потім - через розрив, блок координат зовнішнього елемента. Біс його знає, як такі неправильно складені складні полігони збирались. Зібрати своїми руками мені їх не вдається. Якраз мається на меті перезібрати усі складні полігони, щоб "неправильних" не було.
Як в такому випадку, після розділення функцією spbSplit, номери об'єктів: спочатку зовнішній, потім внутрішній, чи в порядку розміщення блоків координат?

Список номерів об'єктів після @Map.SplitMultiPolygon N - всі номери, більші за @Map.Count, застосованої до розділення.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 28 дек 2016 17:09 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Нема за що... ;)
voha писал(а):
Це неправильно складений складний полігон.
... це вже iнше питання, приклад для аналiзу i що хочете отримати.
На малюнку "неправильний" полiгон, контури 5,6 мають бути в 2, чи 1 полiгонi, чи 5 в 1-ому а 6 в 2-ому, чи ....


Руслан Пархуць писал(а):
Список номерів об'єктів після @Map.SplitMultiPolygon N - всі номери, більші за @Map.Count, застосованої до розділення.
Створюються новi, вiдповiдно i к-сть збiльшується (був один "складний" - стало декiлька "простих").


Вложения:
01.jpg
01.jpg [ 11.08 Кб | Просмотров: 9019 ]

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 29 дек 2016 00:05 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
1. Вдосконалити ф-цiю @Map.SplitMultiPolygon N, результатом якої був би список новостворених об'єктiв
Список номерів новостворених об'єктів (після @Map.SplitMultiPolygon N) - всі номери, більші за @Map.Count, застосованої до розділення.
Руслан Пархуць писал(а):
2. Додати нову для отримання типу елементу @Map.Object[N].Type 1-точка, 2-лiнiйний елемент, 3-складний полiгон i т.д.
Вроді як, вирішено вже тут, крім того є @Map.Layers.Polygon Number [0/1], @Map.Object[N].Closed, хоча повністю підтримую прохання.
Руслан Пархуць писал(а):
... це вже iнше питання, приклад для аналiзу i що хочете отримати.
На малюнку "неправильний" полiгон, контури 5,6 мають бути в 2, чи 1 полiгонi, чи 5 в 1-ому а 6 в 2-ому, чи ....
Ще раз дякую пану Руслану за варіант в "розборі польотів". Насправді, накладка полігонів, от де інше питання, а моє - самий раз:

Ви впевнені, що перебираючи створені функцією розділення на прості полігони в порядку зростання номерів цих об'єктів, ви перебираєте спочатку зовнішній, потім внутрішній :?: Ніхто не підтверджував, що функція spbSplit саме в такому порядку присвоює номера новоствореним об'єктам.

Як на мене, відкрито два питання:
1) якщо для складного полігона у властивостях (в списку точок) першими йдуть координати внутрішнього полігона, а після розриву - координати зовнішнього полігона, номер внутрішнього полігона, після розбивки складного на прості функцією spbSplit, буде менший ніж зовнішнього?
2) якщо при розділенні полігона прості полігони створюються в тому ж порядку, в якому їх координати описані в списку точок (у властивостях об'єкта), то запропонований спосіб розділення збірно-складних не годиться, тоді треба читати Алгоритм установления принадлежности точечного объекта внутренней области линейного замкнутого объекта.
Складно це, тому прошу розробників допрацювати функцію @Map.SplitMultiPolygon N, на предмет розділення збірно-складних полігонів на прості та/або складні, або хоча б дати відповідь на перше питання.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 29 дек 2016 16:53 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
voha писал(а):
Руслан Пархуць писал(а):
1. Вдосконалити ф-цiю @Map.SplitMultiPolygon N, результатом якої був би список новостворених об'єктiв
Список номерів новостворених об'єктів (після @Map.SplitMultiPolygon N) - всі номери, більші за @Map.Count, застосованої до розділення.
... чи не легше працювати зразу з готовим списком, а не створювати декiлька змiнних, щоб його отримати?

voha писал(а):
читати Алгоритм установления принадлежности точечного объекта внутренней области линейного замкнутого объекта.
.... :) для цiєї задачi достатньо метод сортування (вищенаведений алгоритм трiшки для iншого, хiба що є бажання написати свою для формування i роботи з складними полiгонами), а щодо того, як створюється складний контур, думаю теж по такому принципу (сортування по площi), хоча можна i перепитати у розробникiв, чи ми "йдемо у правильному напрямку".
P.S. з сортуванням слiд використати функцiю @Map.SortByParameter 0 (для сортування площ).

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 18 янв 2017 22:11 
Специалист
Специалист

Зарегистрирован:
25 окт 2007 14:47
Сообщения: 29
Откуда: наразі Україна, м.Жидачів
допоможіть розібратись , є n-точок з нумерацією 1,2,3,4,.....n потрібно скрипт щоб перейменувати за маскою приміром t100001,t100002,t100003,t100004,....t10000n
........
$count=@Map.SelCount
@Map.SelectLayer ID35
$n=1
%start
$s=@Map.Selected.ChangeParameter 73 $str-0000$n
@If $n<=$count then $s else @Break
$n=$n+1
@Goto %start
%end


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 19 янв 2017 10:12 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
@Map.SelectLayer ID35
$n=0
$Nzp=0
%start
$n=@Map.NextSelected $n
$Nzp=$Nzp+1
@if $n=0 then @Goto %end
$Res="$str-0000$Nzp"
$Res=@DequoteText $Res
@Map.Object[$n].Parameter[73] $Res
@Goto %start
%end

якщо у параметрі ваших точок вже є нумерація, тоді спочатку її треба витягувати з параметра точки, потім додавати префікс і записувати назад:

@Map.SelectLayer ID35
$n=0
%start
$n=@Map.NextSelected $n
@if $n=0 then @Goto %end
$Nzp=@Map.Object[$n].Parameter[73]
$Res="$str-0000$Nzp"
$Res=@DequoteText $Res
@Map.Object[$n].Parameter[73] $Res
@Goto %start
%end

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 24 янв 2017 11:34 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
P.S. з сортуванням слiд використати функцiю @Map.SortByParameter 0 (для сортування площ).
Продовжу, щодо розділення складно-збірних полігонів на прості та/або складні.
Функція @Map.SortByParameter 0 відсортує всі об'єкти в карті по площі, при цьому змінить плановість об'єктів залежно від номерів об'єктів. Це в карті буде "каша".
Сортувати треба список, де перше поле (через пробіл) - площа, а друге поле - номер об'єкта. Потім у циклі читати номера об'єктів із сортованого по першому полю списку. А це вже двомірний масив (з двома індексами). Немає, поки що в мові скриптів кілька-мірних масивів. Шкода.
Приходиться так:
1) для кожного з розділених полігонів
- запис номера N об'єкта в список-1;
- запис площі об'єкта в список-2;
- запис площі об'єкта в список-3.
2) для створених списків
- сортування за зростанням списку-3;
3) для кожного і-го рядка списку-3
- пошук n-го номера рядка списку-2 зі значенням і-го рядка списку-3
- отримання номера N полігону з n-го рядка списку-1;
- видалення n-го рядка зі списку-2 (раптом декілька полігонів мають однакову площу);
- запис номера N у список-4.
Во чого треба зробити, щоб виконати сортування списку номерів полігонів за зростанням площі полігонів :?

P.S. Я саме за сортування текстового списку, маю на увазі.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 30 янв 2017 12:05 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Продовжу, щодо розділення складно-збірних полігонів на прості та/або складні. Спитаєте - для чого?
Вложение:
Demo.JPG
Demo.JPG [ 45.22 Кб | Просмотров: 8823 ]
Якщо батьківський - складно-збірний, то для внутрішнього збірного лінійного (коричневим кольором) і для внутрішнього полігонального (суцільно залитого фіолетовим кольором) не знайдено батьківського полігона функцією @Map.ParentObject Number [ParentLayer].
Зате, якщо батьківський збірно-складний, він легко визначається як батьківський для внутрішнього збірного лінійного чи внутрішнього полігонального.

Воно получається як: для перевірки вкладеності об'єктів у батьківський полігон, треба спочатку розбити складно збірний полігон на прості та/або складні полігони.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 31 янв 2017 09:11 
Гуру
Гуру

Зарегистрирован:
02 апр 2013 15:28
Сообщения: 177
Доброго здоров'я всім.
Чи є вкогось скрипт який би шукав ділянки на ПКК по списку кад.номерів і вставляв їх контури на карту??? :D :D :D


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 08 фев 2017 14:54 
Специалист
Специалист

Зарегистрирован:
21 дек 2013 22:52
Сообщения: 40
С помощью какого скрипта можно найти элементы карты в слое ID1, площадь которых меньше 25 кв.м.?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 08 фев 2017 14:59 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
@Map.SelectByParameters 2|-7=1|0<0,25

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 08 фев 2017 15:07 
Специалист
Специалист

Зарегистрирован:
21 дек 2013 22:52
Сообщения: 40
fendak писал(а):
@Map.SelectByParameters 2|-7=1|0<0,25

Благодарю. Сразу не получилось, но когда я исправил 0,25 на 25, то скрипт сработал. Спасибо!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 16 фев 2017 20:31 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Щодо функції @Calc Replace(s,t,v,[1/0=ReplaceAll,[1/0=IgnoreCase]] )
Задача: треба було видалити лапки з рядка s. Непосильна задача для вказаної функції, оскільки в скрипті команда мала б виглядати як @Calc Replace("s",""","").
Довелось писати в Delphi: функція ReplaceCharInStr Str,Whot,Replace з бібліотеки Functions.dll - замінить фразу Whot рядка Str на фразу Replace. Для прикладу:
Код:
;Приклад роботи функції dll (ReplaceCharInStr Str,Whot,Replace - заміни фрази Whot рядка Str на фразу Replace
$StrLineText1=@DLLExec Functions.ReplaceCharInStr 2901 Філія_Крижопільський_"Райагроліс",",
$StrLineText1=@DLLExec Functions.ReplaceCharInStr $StrLineText1,_,
@Dialog.Message Замінено:|2901 Філія_Крижопільський_"Райагроліс"||на|$StrLineText1
Може комусь згодиться - файл з хмари в теку Digitals:

Functions.dll

Функція ExistFormForClassAndCaption FormClass/FormCaption, яка повертає: 0 - якщо вікно з класом форми FormClass і заголовком FormCaption не відображається на екрані; 1 - якщо вказане вікно відображається.
Приклад виклику функції зі скрипта:
Код:
$Res=@DLLExec Functions.ExistFormForClassAndCaption TFormTB/До лісових карт(c)
, де: TFormTB - клас форми вікна користувацької панелі інструментів Digitals; До лісових карт(c) - заголовок вікна (назва користувацької панелі інструментів).

Функція ChangeValueIniFile IniFile/Section/Key/Value встановлює значення Value ключа Key в секції Section файла ініціалізації з повним ім'ям (включаючи шлях та розширення) IniFile


Последний раз редактировалось voha 18 ноя 2020 12:16, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 16 фев 2017 23:22 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Voha, ви, мабуть, забули, що є такий варіант:
$P=Філія_Крижопільський_"Райагроліс"
$SS=
$N=@StringPartCount " $P
$I=0
%Loop
$I=$I+1
$S1=@StringPart $I"$P
$SS=$SS$S1
@if $I<$N then @Goto %Loop
$P=$SS
@Dialog.Message $P

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1235 ]  На страницу Пред.  1 ... 50, 51, 52, 53, 54, 55, 56 ... 83  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95


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

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