Affine та Rubbersheeting трансформації в OCAD

Часто буває що є стара карта радянських часів, люб’язно викреслена кимось в OCAD. Ви хочете оновити її і для початку викачуєте свіженький супутниковий знімок і підкладаєте його під карту. Аж раптом з’ясовується що не у всіх місцях він підкладається однаково добре. Ось цей кут забудови і озеро наче лягли, а оця дорога вилізла кудись в сторону і вигин її виглядає зовсім інакше. Ви суміщаєте дорогу, але половина карти тепер висить за своїми межами. Вочевидь карта крива і ця кривина різниться від місця до місця. Доведеться виконати креслення з самого початку, ігноруючи те що воно вже кимось зроблене. Саме так я робив і радив робити тим хто мене запитував про подібну ситуацію. Але насправді в OCAD є хороші інструменти для таких задач, які я відкрив для себе зовсім недавно. І вже поспішаю ними з вами поділитись :) Знайомтесь, Affine та Rubbersheeting трансформації!

Доступ до обох інструментів здійснюється через головне меню Map -> Transform -> Affine… (Rubbersheeting…). У російському перекладі ці типи трансформацій називаються “Преобразование по нескольким точкам (Афинное преобразование)” та “Метод “резинового листа“. У цій статті я буду використовувати англійські назви.

Affine

Якщо ви колись малювали карту олівцями та потім креслили її в окаді, то цей метод імовірно вам вже знайомий. Пам’ятаєте інструмент для суміщення підложки, який викликається кнопкою F9? Потім ви вказуєте точку на піложці, відповідну їй точку на карті, потім знову підложка-карта, підложка-карта… тепер натискаєте на Enter, відповідні точки суміщаються і підложка опиняється під картою. Affine transformation працює так само, тільки не підтягує підложку до карти, а навпаки, натягує карту на підложку. Це може бути корисно коли підложка має більш надійні дані ніж карта (наприклад карта стара, а підложка – сучасний супутниковий знімок), або коли карта не геоприв’язана, а піложка геоприв’язана.

Я не буду детально описувати роботу з Affine transformation, оскільки вона відбувається так само як і суміщення підложки. Єдина різниця у тому що тут ви спочатку вказуєте точку карти, а потім підложки, а не навпаки.

Rubbersheeting…

У більшості випадків Affine transformation дозволяє отримати хороший результат. Але буває так що карта має різні викривлення на своїй площі. Це означає, що різні її частини доведеться суміщати за різними правилами. Саме для цього призначений інструмент Rubbersheeting…

Погляньте на зразок карти нижче. Він був попередньо суміщений за допомогою Affine transformation.

Карта з різним характером неспівпадіння точок
Карта з різним характером неспівпадіння точок

Точки 1, 2 і 3 не вимагають суміщення, бо вони вже співдіють зі знімком, тоді як точки 4 і 5 вже трохи не на місці. На наступній просіці картина схожа – 6, 7 і 8 вже суміщені, а з 9 та 10 потрібно попрацювати. Південніше я позначив лінію А-В. Це лінія на якій стикаються фрагменти карти, намальовані різними картографами в різний час. По цій лінії ми можемо спостерігати значні викривлення, особливо на південь від точки 6. Точки 11, 12, 13 та 14 виглядають добре, але 15 вимагає незначної корекції. Давайте це все виправимо.

У головному меню виберіть Map -> Transform -> Rubbersheeting… З’явиться діалог трансформації

Діалог трансформації
Діалог трансформації

І для початку вам треба позначити периметр трансформації. Для цього натисніть на кнопку Define (задати) у секції Rubbersheeting perimeter. Тепер позначте на карті периметр, таким чином щоби він включав точки, які будуть зміщуватись в одному напрямку, а межа периметра проходила між точками що будуть зміщуватись і тими, що не будуть. У прикладі я взяв у периметр точки 4, 5, 9, 10, і ще частину карти над ними, яка не влізла в екран, але потребує такої самої деформації.

Зверніть увагу на налаштування Transform objects with protected symbols (трансформувати також захищені об’єкти) та Decrease rubbersheeting near the perimeter (зменшити трансформацію біля країв периметра).

Після того як периметр позначено, натисніть на кнопку Add та починайте додавати точки суміщення

Додавання точок суміщення
Додавання точок суміщення

Ви можете видаляти помилкові точки за допомогою кнопки Remove, або тимчасово відключати їх, якщо знімете прапорець у колонці Used, у списку точок. Коли завершите з додаванням точок, натисніть кнопку Transform і побачите результат.

Анімація трансформації
Анімація трансформації

Зверніть увагу що у місцях, де лінія периметру перетинає лінійні об’єкти, виникає спотворення. Це означає що результат буде кращим, якщо лінія периметру буде проходити менш насиченим ділянкам карти. Особливо видимі спотворення можливо доведеться виправити вручну.

Якщо трансформація пройшла невдало, ви завжди можете відмінити останню дію клавішами Ctrl+Z і спробувати трансформацію з іншими налаштуваннями.

Для того щоби вирівняти цей фрагмент, що використовується як зразковий мені довелося провести 5-6 трансформацій на різних периметрах. Не всі вдалися з першої спроби, а місце стику карт довелося правити вручну. Rubbersheeting – не дуже простий інструмент і його використання вимагає певного досвіду. Однак я сподіваюсь що він стане вам у нагоді.

Карта після трансформації

Рівних карт усім! :)

Affine та Rubbersheeting трансформації в OCAD

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *