Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 19 ноя 2017 10:28

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 16 мар 2013 19:55 
Специалист
Специалист

Зарегистрирован:
09 июл 2012 21:08
Сообщения: 34
Дякую!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 18 мар 2013 09:18 
Гуру
Гуру

Зарегистрирован:
06 июл 2009 08:22
Сообщения: 381
Откуда: г. Старобельск
Очень полезный скрипт. Спасибо большое за проделанную работу.

_________________
П. Вечеров


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 26 сен 2013 20:53 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 601
Откуда: Ліспроект
Прохання до розробників, допомогти у вирішенні наступних питань.

1. Не можу підібрати функцію сценарію контролю, що повертала-б помилку при частковому накладанні лінійного об'єкта на межу полігона (треба виловити лінійні об'єкти, дві або більше точки підряд якого, співпадають з двома або більше точками підряд полігонального об'єкта).
Якби функція [Share 2] (выдаст ошибку только в случае двух или более совпадающих точек) контролювала співпадання двох і більше точок підряд, а не двох і більше точок загалом по об'єкту :?:

2. Не вистачає можливості контролювати наявність не примикання об'єктів. Наприклад, той самий струмок, одна з кінцевих точок якого має співпадати з будь-якою точкою іншого об'єкта (струмок, річка, озеро і т.д.). Але ж друга кінцева точка (фактичний початок струмка) може й не примикати до будь-яких інших об'єктів.
Якби мати функцію, подібну [Not Join], яку можна було-б роз'яснити так: помилка виникає тоді, коли жодна з кінцевих точок об'єкта не співпадає з будь-якою точкою іншого об'єкта.

Я дочитувався до кожного слова роз'язнення функцій у файлі Control.doc, але за три дні розбору смислу роз'яснень, так і не знайшов для себе відповіді як вирішити поставлені задачі. Погано, коли немає однозначності у забезпеченні контролю, але до однозначності треба прагнути шляхом розробки функцій, яких не вистачає для контролю.

Може краще писати скрипт такого контролю? Але тоді не вистачає скриптової функції @Map.Object[L].Point[Ln].NodePoints, яка б повертала список: номер об'єкта A точка якого An співпадає з точкою Ln об'єкта L, і номер точки An об'єкта A.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 10 май 2016 07:36 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 601
Откуда: Ліспроект
Підкажіть будь-ласка. Чи можливо у сценарії контролю виловити точки полігонів у шарі-1, які не лежать у вузлі з точкою шарів-2,3,...,n?

Простіше так: знайти точки межі ділянки, в яких немає точки суміжника.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 10 май 2016 13:34 
Специалист
Специалист

Зарегистрирован:
04 ноя 2010 12:28
Сообщения: 42
voha писал(а):
Підкажіть будь-ласка. Чи можливо у сценарії контролю виловити точки полігонів у шарі-1, які не лежать у вузлі з точкою шарів-2,3,...,n?

Простіше так: знайти точки межі ділянки, в яких немає точки суміжника.


Можна зробити так:

Вирізати точки з шарів і перевірити на парність точок. Де кількість точок буде не парна - там і помилка.
Тільки треба заданий шар почерзі перевіряти з шарами 2,3,...,n


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 10 май 2016 14:05 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1863
Откуда: Vinnitsa
voha писал(а):
Підкажіть будь-ласка. Чи можливо у сценарії контролю виловити точки полігонів у шарі-1, які не лежать у вузлі з точкою шарів-2,3,...,n?

Простіше так: знайти точки межі ділянки, в яких немає точки суміжника.

Функція @Map.Object[N].Node PointNumber [Layer] повертає номер об'єкта-пікета, на якому розташована точка PointNumber об'єкта N. Необов'язковий параметр Layer задає шар пікетів для пошуку, якщо не задан, то функція шукає в усіх шарах, тип яких пікет або одиночний символ.

На прикладі Ін4-шарів
ID20000 - ділянка
ID50000 - суміжник
ID51000 - тимчасові пікети

Код:
$AM=@ActivateMap
@if $AM=0 then @Break
@Text[1].Clear
@Map.DeselectAll
@Map.Layers.Add 51000 4 Тестові пікети
@Map.Parameters.Add 51001 5 Назва пікета
@Map.Layers.SetValidParameters ID51000 ID51001
@Map.SelectLayer ID50000
@Map.AddNodes ID51000 1
@Map.DeselectAll
@Map.SelectLayer ID20000
$SC=@Map.SelCount
$MC=@Map.Count
$I=0
%LoopObject
$I=$I+1
$Sel=@Map.Object[$I].Selected
@if $Sel=0 then @Goto %NextObject
$PC=@Map.Object[$I].Count
$J=0
%LoopPoint
$J=$J+1
$XYZ=@Map.Object[$I].Point[$J]
$XYZS=%Library.ReplaceComma $XYZ
$XYZS=@DequoteText $XYZS
@if $XYZS=-2684354.56 -2684354.56 0 then @Goto %NextPoint 
$NodeObj=@Map.Object[$I].Node $J ID51000
@if $NodeObj<>0 then @Goto %NextPoint 
@Text[1].Add Об'єкт $I: точка $J не суміщена з суміжником
%NextPoint
@if $J<$PC then @Goto %LoopPoint
%NextObject
@if $I<$MC then @Goto %LoopObject
$TC=@Text[1].Count
;@if $TC=0 then @Break
$S=@Text[1].Text
@Dialog.Message $S

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Универсальный скрипт контроля карт (поиска ошибок)
СообщениеДобавлено: 10 май 2016 15:47 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 601
Откуда: Ліспроект
Dmitry_Zolotar писал(а):
...Функція @Map.Object[N].Node PointNumber [Layer] повертає номер об'єкта-пікета, на якому розташована точка PointNumber об'єкта N...
13vp писал(а):
...Вирізати точки з шарів і перевірити на парність точок. Де кількість точок буде не парна - там і помилка.
Тільки треба заданий шар почерзі перевіряти з шарами 2,3,...,n
Дякую.

Два вирішення:
- перебирати в циклі кожну точку кожної межі ділянки, при чому для кожної точки:
1) задавати пошук рядка в текстовому блоці (@Text[N].IndexOf FindStr), який містить координати всіх точок всіх об'єктів суміжників; або
2) знаходити тимчасовий точковий об'єкт (@Map.Object[N].Node PointNumber [Layer]).
Треба пробувати, що працюватиме швидше. Ділянок може бути зо 200-300. Точок ділянок 2-4 тис.

Хотілось, правда, щоб була функція подібна
[Not Share] - Ошибки отсутствия общей границы
"Ошибка возникает в том случае, если объект не имеет совпадающих точек ни с одним объектом из заданного слоя (слоев)", яка звучала б як "Ошибка возникает в том случае, если объект имеет точки несовпадающие ни с одним объектом из заданного слоя (слоев)".


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

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


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

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


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

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