Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
reasonat
Зарегистрирован: 01.07.2009 Сообщения: 224 Откуда: Екатеринбург
|
Добавлено: Пн Окт 26, 2009 4:11 pm Заголовок сообщения: порядок контуров в сложных (комбинированных) объектах |
|
|
Все здравствуйте.
Собственно, вопрос даже не по программированию. Но проблема видимо где-то в корне мапинфы..
Сколько лет уже пробую разные способы, никак не получается упорядочить части комбинированного объекта. Если по одному объекту добавлять через Объекты\Объединить.. - еще кое как получается в результате части в том порядке, в каком добавлялись. Но если вырезать из этого объекта дырку (остров), то порядок частей путается.
И если экспортировать объект в mid/mif - там тоже порядок получается не такой, в котором пытались собирать объект.
В итоге, при надобности пронумеровать точки границ этого объекта, мы получаем полный разброд, первые точки где-то в середине объекта, продолжение нумерации где-то там, окончание где-то тут.
В мапинфо это не решается, кто-нибудь знает?
Я так понимаю, можно только утилиту писать, сортируя контура слева направо и сверху вниз по центроидам либо по первым точкам.. Или еще хитрости есть, про которые я не знаю? |
|
Вернуться к началу |
|
|
spawner
Зарегистрирован: 01.04.2009 Сообщения: 77
|
Добавлено: Пн Окт 26, 2009 4:16 pm Заголовок сообщения: |
|
|
Да, MapInfo это та еще пакость...глюков в ней навалом. Насколько я знаю, эту задачу можно решить только на мапбэйсике (как вы и описали)
А обязательно нужно чтобы объект был комбинированный?Можно ведь сделать несколько объектов с одним ID, поля для вложенностей предусмотреть если нужно и т.д. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Пн Окт 26, 2009 10:27 pm Заголовок сообщения: |
|
|
судя по наблюдениям и опыту, самой Mapinfo внутри все равно в каком порядке идут контура. она их объединяет в один и образует "дырки" и "бублики" как надо.
Проблему можно решить путем разбора вложенности контуров по геометрическому критерию... |
|
Вернуться к началу |
|
|
reasonat
Зарегистрирован: 01.07.2009 Сообщения: 224 Откуда: Екатеринбург
|
Добавлено: Вт Окт 27, 2009 10:20 am Заголовок сообщения: |
|
|
Цитата: |
Можно ведь сделать несколько объектов с одним ID |
не очень понимаю, в каких случаях это может пригодиться.. Нет, в землеустроительных работах нужен именно один комбинированный объект, участки "с дырками" и участки "чересполосные", из нескольких частей. Мапинфе конечно без разницы, в каком порядке части сложились, а вот при землеустроительных работах надо выводить номера поворотных точек границы такого участка. И очень неудобно искать номера, разбросанные по картинке. Особенно, если частей в таком участке - штук 100. |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Вт Окт 27, 2009 3:52 pm Заголовок сообщения: |
|
|
Можно решить на MapBasic. В Инструментарии для MapInfo есть инструмент Изменение обхода объекта, он решает похоже все задачи, которые вам требуются. |
|
Вернуться к началу |
|
|
reasonat
Зарегистрирован: 01.07.2009 Сообщения: 224 Откуда: Екатеринбург
|
Добавлено: Вт Окт 27, 2009 4:40 pm Заголовок сообщения: |
|
|
он меняет направление обхода - по часовой/против часовой, и, кажется, назначает выбранную точку началом нумерации?
И все равно это ручная работа. У нас есть и свои утилиты, и подобные от другого разработчика, которые сдвигают начало обхода объекта и меняют направление, но надо для каждого контура указывать точку.
Проблема в том, что работаем с многоконтурными участками из большого количества частей, и анализировать каждый контур и каждый участок вручную нереально, пытаюсь автоматизировать.
А вот порядок частей в комбинированном объекте автоматом все равно, похоже, не задать , уже больно их расположение непредсказуемо - то слева направо, то снизу вверх, то зигзагом, то вразнобой как полянки в лесу. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Чт Окт 29, 2009 1:17 am Заголовок сообщения: |
|
|
[quote="reasonat"]... пытаюсь автоматизировать.
[/quot]
А готовых продуктов для решения задачи нету? судя по вопросам все курутится вокруг "межевого плана"? "кадастровый офис" что-то делает... Я конечно понимаю что самому поковыряться интересно, но иногда время дороже... |
|
Вернуться к началу |
|
|
reasonat
Зарегистрирован: 01.07.2009 Сообщения: 224 Откуда: Екатеринбург
|
Добавлено: Чт Окт 29, 2009 11:23 am Заголовок сообщения: |
|
|
в том-то и дело, что все крутится теперь вокруг меж.плана.
И кадофисом/геомастером пользуемся, и свой продукт опять же есть, но они, не меняя фактического порядка, меняют нумерацию точек и частей объектов в каталоге координат, в отчете.
Разные программы сортируют своими методами, получаются разная нумерация одного объекта. Ну вот приходится иногда выводить на один участок формы из разных программ. Поэтому хочется задать нужный порядок самому объекту, чтоб всегда первая точка была в одном месте. Причем обработать сразу все объекты карты автоматом, чтоб впоследствии не задаваться правильностью нумерации и порядком обхода. Дарю идею новой функции |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Чт Окт 29, 2009 1:52 pm Заголовок сообщения: |
|
|
Вы про северо-западный и обход по часовой? Ну расскажите какой вы видите алгоритм нумерации. Насколько я знаю сейчас нумерует каждый во что горазд, в самом 412 приказе все очень неоднозначно. Когда в межевом один объект и он из одного полигона, то вроде все ясно. А когда сложный объект или несколько объектов, то 2 разных человека пронумеруют по-разному и оба будут правы (согласно приказу). |
|
Вернуться к началу |
|
|
reasonat
Зарегистрирован: 01.07.2009 Сообщения: 224 Откуда: Екатеринбург
|
Добавлено: Чт Окт 29, 2009 2:31 pm Заголовок сообщения: |
|
|
Мое имхо, что для многоконтурного объекта надо оставить порядок следования контуров такой, какой будет понятен при чтении чертежа.
для протяженных линейных объектов типа трубопроводов и ЛЭПок - это от начала линии к концу линии, независимо от того, каким боком линия обращена к С-З углу. А для больших объектов с вложенностями, типа леса с просеками, поля с дырками, опять же оставить порядок контуров, как создавался объект: внешние контура - как читаются, слева направо и сверху вниз, а после каждого внешнего контура - подряд его "острова", тоже слева направо и сверху вниз.
Автоматически отсортировать такую беду, видимо, невозможно. Искусственный интеллект до наших работе еще не дошел
А вот запустить программку пересортировки, с предложив пользователю только щелкать по карте, указывая следующий контур, скорее всего получится.
Еще проще - запустить программку, собирающую из отдельных полигонов сложный объект. В таблице столбы пронумерованы и отсортированы, да и прочие объекты несложно заранее отсортировать в списке в нужном порядке. А программка может собрать многоконтурный объект из таблицы/выборки автоматом по порядку строк.
А вот каждый контур обходить уже по часовой стрелке (дырки получаются против ч.с.), с точки, ближайшей к северо-западному углу MBR данного контура. Опять же, удобнее первые точки и направление обхода проверить и поменять автоматом, еще до сбора сложного объекта, пробежав по отдельныи полигонам. |
|
Вернуться к началу |
|
|
|