Аналитика

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

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




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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Winter писал(а):
Чомусь вибирає 30 ділянок і зависає :(
Так прибрали ж $I=$I+1 у тілі циклу (той що перший). Цикл натикається на кадномер якого немає серед значень параметра ID106 і йде на мітку %Messege, звідти - на %Start, безкінечний цикл. Перший тра повернути, а викинути другий. Однак, щоб читати ще й перший рядок списку:

;Список з кад номерами
$I=0


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

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Скрипт не мiй, але iндекс повинен збiльшуватися правильно, якщо забрати другий I=I+1

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


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
Скрипт не мiй, але iндекс повинен збiльшуватися правильно, якщо забрати другий I=I+1
Вибачте, будь-ласка. З вашого дозволу. Я тут трохи повправлявся - не маю натхнення свою роботу робити :D
Код:
$Demo=@DemoMode
@If $Demo=1 then @Break Неможливо зберегти in4.|Програма в демо-режимі
$FileExist=@Dialog.OpenFile *.txt *.txt
@If $FileExist= then @Break Не вказано текстового файлу зі списком кадномерів
$CountI=@Text.Load $FileExist
@Map.BeginUpdate
@Map.DeselectAll
$I=0
%Start
$I=$I+1
@IF $I>$CountI then @Goto %EndText
;працюєм з рядком списку
$CN=@Text.Line[$I]
$S=@Map.FindFirstByParameters 1|ID106=$CN
@If $S=0 then @Text[1].Add $CN
@If $S=0 then @Goto %Start
;;використовуємо внутрішнє ім'я функції, яка російською звучить Файл | Извлечь участок в In4
;;раптом хтось ще працює українською
@ExecuteMenu FileExtracttoIn4
@Map.SaveToFile
@FileClose
@Goto %Start
%EndText
$CountErr=@Text[1].Count
@If $CountErr<>0 then $Text1=@Text[1].Text
@If $CountErr=0 then $Text=Всі ділянки in4 збережені зі списку $FileExist else $Text=Вказані ділянки зі списку $FileExist не збережені, їх немає в карті:|$Text1
@Map.EndUpdate RefreshAlways
@Dialog.Message $Text
Тут легше розібратись, тому що в тексті скрипта із циклу немає виходу по-за самого циклу: тільки за умови, що лічильник більший як кількість рядків.


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

Зарегистрирован:
12 сен 2016 15:14
Сообщения: 10
Дякую, скрипт працює :)


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

Зарегистрирован:
12 сен 2016 15:14
Сообщения: 10
Попередній скрипт працює викинувши другий $I=$I+1 та замінивши
;Список з кад номерами
$I=0

Дякую)


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

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

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


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

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


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
voha писал(а):
...Може є сенс додати скриптову функцію перерахунку координат точки?
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2539&start=120#38432
Чи працює в когось виклик функції Transfer з бібліотеки GeoGed? Поділіться досвідом, будь-ласка. Можливо слід повністю встановлювати Proj4? Інакше:
- біліотеки несамодостатні, і треба cc3290mt.dll;
- за наявності cc3290mt.dll виклик функції Transfer вибиває Digitals повністю.
Підозрюю, що функція в dll може бути:
Function _pj_transform(src,dst:PProjPJ;point_count:TLong;point_offset:Integer; x,y,z:PDoubleArray):Integer;cdecl;external 'PROJ.DLL'
тобто, не PAnsiChar
Якщо так, то це не вихід, а виклик функції - мертвий?


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

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
voha писал(а):
Чи працює в когось виклик функції Transfer з бібліотеки GeoGed
.Перепрошую, забув перевiрити. Тепер має працювати (завантажте новi файли).

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


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
voha писал(а):
Чи працює в когось виклик функції Transfer з бібліотеки GeoGed
.Перепрошую, забув перевiрити. Тепер має працювати (завантажте новi файли).
Працює, і це добре. Однак функція Transfer крім того що повертає перераховані координати, ще й "трансферує" позначені в карті об'єкти на перераховані координати. Тобто: виконує те, що й штатна в Digitals фунція MapReferenceSystem (Карта | Система координат...). Якби додати функцію, яка просто повертала би перераховані координати - була би "скриптова бомба" :oops: Щоб можна було працювати, як на відео з хмари, але без трансферування самих об'єктів карти.


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

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
voha писал(а):
Якби додати функцію, яка просто повертала би перераховані координати
Функцiя Transfer i повертає перерахованi координати, що i видно в скриптi $Str=@DLLExec GeoGed\GeoGed.Transfer '$source' '$target' '$PntList'
$Res=@StringPart 1,$str - к-сть оброблених точок (якщо невiдємне значення, iнакше IД помилки i сама помилка)
$PntCnt=$Res
$PntList=@Calc Replace(Delete("$Str",1,Pos(",","$Str")),",",";") Список точок, роздiлених ";"
$Pnt=@StringPart $PntCnt;$PntList - координати точки масиву $PntList
... або (щойно побачив, що є зайвi перетворення)
$PntList=@Calc Delete("$Str",1,Pos(",","$Str")) Список точок, роздiлених ","
$Pnt=@StringPart $PntCnt,$PntList - координати точки масиву $PntList (X Y Z)

тобто закоментувавши стрiчуку @Map.Object[$Obj].Point[$PntCnt] $Pnt не буде трансформування об'єктiв, а дальше - Ваша фантазiя :)

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


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
... закоментувавши стрiчуку @Map.Object[$Obj].Point[$PntCnt] $Pnt не буде трансформування об'єктiв, а дальше - Ваша фантазiя :)
Вибачте, я прошльопав - у скрипті. Хороша робота. Дякую.


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Всім доброго дня.
Є в мене така задача - розділити збірний полігональний об'єкт на не збірні. Немає проблем: функція @Map.SplitMultiPolygon N "Разбивает составной полигон на отдельные полигоны, сохраняя внутренние".

Та ж сама задача - розділити збірний полігональний об'єкт на не збірні, однак об'єкт збірно-складний (комплексний полігон - бублик з частиною полігона в дірці від бублика). Функція не справляється з таким комплексом, відокремлюючи лише полігон№1 від складного №2&№3. Очевидно функція сприймає полігон №2&№3 як складний.
Вложение:
KomplexPolig.JPG
KomplexPolig.JPG [ 5.7 Кб | Просмотров: 8965 ]

Вирішення можливе двома шляхами:
1) зробити самому на тимчасовій карті
- після розділення функцією @Map.SplitMultiPolygon N перебрати всі полігони, утворені функцією spbSplit (Операції з об'єктами.Розділити), застосованої до об'єктів, що мають розрив у коодинатах;
- зібрати полігони заново, перебравши їх в порядку зростання їхньої площі з оцінкою кількості перетинів горизонтального правого променя від центроїда, координати якого визначені функцією @Map.Object[N].Centroid (якщо кількість перетинів не парна - полігон, якщо парна - дірка в полігоні);
2) просити розробників допрацювати функцію @Map.SplitMultiPolygon N, на предмет розділення збірно-складних полігонів на прості та/або складні.

Бачте як: якщо самому (методом трасування променів), то перетини порахувати можна й без тимчасової карти, а от отримати площі чи координати центроїда - ніяк. Щоб без тимчасової карти, треба мати ще й функціональні скрипти:
- обчислення площі полігону за координатами поворотних точок межі;
- визначення координат центроїда за координатами точок межі полігона.
Складно :oops:


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

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
voha писал(а):
Всім доброго дня.
Є в мене така задача - розділити збірний полігональний об'єкт на не збірні.

Може так? (не зрозумiв, що потрiбно отримати в кiнцевому результатi)
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2539&p=38459#38459

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


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Руслан Пархуць писал(а):
Може так? (не зрозумiв, що потрiбно отримати в кiнцевому результатi)
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2539&p=38459#38459
Вложение:
KomplexPolig.JPG
KomplexPolig.JPG [ 38.31 Кб | Просмотров: 8942 ]
Прошу розробників допрацювати функцію @Map.SplitMultiPolygon N, на предмет розділення збірно-складних полігонів на прості та/або складні.

Я описав, як можна зробити в скрипті самому, але тільки через тимчасову карту. Однак може статися як раніше - з функцією @Calc Replace.


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

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


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

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


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

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