Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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. Полученный объект со слоя Б переносим на слой А. |
|
Вернуться к началу |
|
|
thegeo
Зарегистрирован: 17.01.2012 Сообщения: 119
|
Добавлено: Ср Фев 12, 2014 1:40 pm Заголовок сообщения: |
|
|
Или еще проще:
1. Преобразуйте полилинию в область
2. Выделите разделяемую область. Далее меню Объекты/Выбрать изменяемый объект. Выделяем область, полученную из полилинии. Меню Объекты/Разрезать |
|
Вернуться к началу |
|
|
Online
Зарегистрирован: 10.06.2008 Сообщения: 26
|
Добавлено: Ср Фев 12, 2014 2:25 pm Заголовок сообщения: |
|
|
Спасибо, как в конкретном случае выйти из положения я понял. Но в оригинальном слое полилиний сотни и все они отработали нормально (я программно режу участки линиями), а именно с этой - ошибка. Понять бы, почему это происходит, чтобы условие программе дополнительно задать... |
|
Вернуться к началу |
|
|
thegeo
Зарегистрирован: 17.01.2012 Сообщения: 119
|
Добавлено: Ср Фев 12, 2014 2:47 pm Заголовок сообщения: |
|
|
При более внимательном анализе полилинии выявилось наличие дублирующихся узлов (нарисована небольшая загагулина). После устранения, процедура разрезания выполнилась без проблем. |
|
Вернуться к началу |
|
|
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.
Кроме того операция разрезания полилинией не всегда дает правильный результат. Можно привести примеры. |
|
Вернуться к началу |
|
|
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). В результате при выполнении операции разрезания указанное сообщение больше не появляется. Указать конкретную причину такого поведения затрудняюсь. Вероятно, связано с появлением некорректных объектов в результате выполнения процедуры разрезания, и эти некорректности были малы и исправлены самой системой, но сообщение было сформировано. |
|
Вернуться к началу |
|
|
Online
Зарегистрирован: 10.06.2008 Сообщения: 26
|
Добавлено: Вт Фев 18, 2014 1:10 pm Заголовок сообщения: |
|
|
Ясно, спасибо, вот бы программно "поймать" этот случай, а то даже OnError не помогает... |
|
Вернуться к началу |
|
|
|