www.map-info.ru :: Просмотр темы - Не получается разрезать полилинией
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Online



Зарегистрирован: 10.06.2008
Сообщения: 26

СообщениеДобавлено: Ср Фев 12, 2014 11:28 am    Заголовок сообщения: Не получается разрезать полилинией Добавить ответ со ссылкой на данный текст

Добрый день! Пытаюсь разрезать участок полилинией, а мне MapInfo выдает сообщение, что "Полилиния должна состоять из одного сегмента..." - смотрю в свойства этой полилинии, а она и так из одного сегмента. Не пойму, почему не режет. Вот здесь слои для примера.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Ср Фев 12, 2014 1:34 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Под сегментом понимается часть полилинии от узла i до узла i+1, т.е. полилиния делитель должна состоять из двух узлов и линии между ними. Но при желании выполнить разделение все же можно. Обратите внимание, что при делении полилинией выполняется дополнительное построение и фактически деление выполняется с помощью вспомогательного полигона. Но все это можно выполнить и в ручном режиме затратив несколько больше времени:
1. Скопируйте область на вспомогательный слой. теперь область будет на двух слоях (условно А и Б).
2. Преобразуйте полилинию в область (П).
3. Выделите область на слое А. Далее меню Объекты/Выбрать изменяемый объект. Выделяем область П. Меню Объекты/Удалить часть
4. Все повторяем для объекта на слое Б, только в конце выполняем Объекты/Удалить внешнюю часть.
5. Полученный объект со слоя Б переносим на слой А.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Ср Фев 12, 2014 1:40 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Или еще проще:
1. Преобразуйте полилинию в область
2. Выделите разделяемую область. Далее меню Объекты/Выбрать изменяемый объект. Выделяем область, полученную из полилинии. Меню Объекты/Разрезать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Online



Зарегистрирован: 10.06.2008
Сообщения: 26

СообщениеДобавлено: Ср Фев 12, 2014 2:25 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо, как в конкретном случае выйти из положения я понял. Но в оригинальном слое полилиний сотни и все они отработали нормально (я программно режу участки линиями), а именно с этой - ошибка. Понять бы, почему это происходит, чтобы условие программе дополнительно задать...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Ср Фев 12, 2014 2:47 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

При более внимательном анализе полилинии выявилось наличие дублирующихся узлов (нарисована небольшая загагулина). После устранения, процедура разрезания выполнилась без проблем.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Online



Зарегистрирован: 10.06.2008
Сообщения: 26

СообщениеДобавлено: Ср Фев 12, 2014 4:37 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, увидел это место. Как его описать правильно даже не знаю, и программно подобную ситуацию довольно нелегко обойти: перебирать все узлы и т.п. как-то уж долго и вообще... При чем сами по себе дублирующие точки не мешают резать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Ср Фев 12, 2014 5:15 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Как обнаружить:
1. Превратить полилинии в области
2. Выполнить Объекты/Проверка полигонов/Самопересечения
Как исправить:
1. Превратить полилинии в области
2. Выполнить Объекты/Коррекция топологии/Удаление перекрытий
Соответствующие операторы MapBasic: Objects Check, Objects Clean.

Кроме того операция разрезания полилинией не всегда дает правильный результат. Можно привести примеры.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Online



Зарегистрирован: 10.06.2008
Сообщения: 26

СообщениеДобавлено: Ср Фев 12, 2014 9:43 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо, попробую.
Да, не всегда получается правильным превращать полилинию в область - это, порой, дает неверный результат. И если просто резать полилинией - тоже не всегда верно получается (для меня это было открытием, не ожидал от МапИнфо такого :) (есть примеры)). Но я поступил так: я вначале участком режу полилинию (удалить внешнюю часть), то, что осталось, разделяю на части (если надо) и ими режу участок (плюс приходится проверять, начало и конец входят ли в участок и еще по мелочи). Работает, хоть и громоздко, но не очень сложно реализуемо и довольно быстро выполняется. Попробую еще поиграться с Objects Check, Objects Clean...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Online



Зарегистрирован: 10.06.2008
Сообщения: 26

СообщениеДобавлено: Пн Фев 17, 2014 9:23 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вот еще один похожий пример - но в данном случае не пойму, почему не режет - подобных дублей точек и прочего нет, а MapInfo выдает ошибку "Объект(ы) или его часть имеет ошибки. Результат может быть некорректным". Слои здесь. Буду признателен, если подскажете почему это происходит...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Пн Фев 17, 2014 2:48 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Выполнил следующие практические действия: перепривязал узлы полилинии (3 узла) к узлам дырки области с использованием точного позиционирования (клавиша S). В результате при выполнении операции разрезания указанное сообщение больше не появляется. Указать конкретную причину такого поведения затрудняюсь. Вероятно, связано с появлением некорректных объектов в результате выполнения процедуры разрезания, и эти некорректности были малы и исправлены самой системой, но сообщение было сформировано.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Online



Зарегистрирован: 10.06.2008
Сообщения: 26

СообщениеДобавлено: Вт Фев 18, 2014 1:10 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Ясно, спасибо, вот бы программно "поймать" этот случай, а то даже OnError не помогает...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru