Як можна обчислити спотворення на прямокутній проекції?


28

Я намагаюся обчислити спотворення, щоб можу спотворити текст і форми, що накладаються, щоб точно відповідати зображенню прямокутної проекції.

Отже, як можна обчислити спотворення на заданій широті на прямокутну проекцію 1: 45 000 000 (скажімо, 2000 пікселів шириною x 1000 пікселів)?

Я намагався з’ясувати цю публікацію та її посилання безрезультатно: Як створити точну індикатрію Tissot?

Я не професіонал, просто дуже зацікавлений аматор, тому, будь ласка, придумай це для мене!

Велике дякую!


Дякуємо за швидкі відповіді! Ось довга історія; Я сподіваюся, що це зрозуміліше.

Я візуалізую / зіставляю дані за допомогою мови програмування Processing і хотів би, щоб 2D-зібрані дані (різного розміру шрифти та кола) з’являлися неспотвореними, коли їх переводять на 3D-глобус. Дані відображаються за допомогою прямокутних x, y та карт, які я хочу використовувати як фони, - це вся ця проекція, тому я припускаю, що хочу "відповідати" цьому спотворенням (наприклад, шляхом обчислення спотворень через широту за допомогою рівнянь Тіссота?). Використовуючи мову програмування, я можу точно спотворити як текст, так і кола. Я думаю, що все, що мені потрібно, це рівняння, щоб зробити це правильно.

Ось оригінальна 2D карта даних:

введіть тут опис зображення

У обгорнутому вигляді це виглядає спотвореним, приблизно так:

введіть тут опис зображення

Питання в розмірі 10 000 доларів: Як я можу зробити 2D-зображення неспотвореним під час перенесення в 3D-сферу?

Для довідки, те саме питання, що задається по-різному, на форумі Processing.

Знову дякую!


Якщо я вас правильно зрозумів, я не впевнений, що хочу спростувати ортографічну проекцію. Я хочу, щоб моя 2D карта даних перетворилася на 3D-модель сфери, з якою можна взаємодіяти (тобто крутитися).

Я використовую програму 3D-моделювання (Cinema 4D), щоб обернути сферу із зображенням синього мармуру розміром 2 Мб (прямокутна проекція) від NASA.

Коли обгортка виявляється неспотвореною з усіх півкуль (не лише однієї півкулі, як це було б ортографічною проекцією?), Дивіться: все ж із 3D-моделі вище. (Я думаю, що програма програмування робить для мене ортографічну проекцію, коли я обертаю об'єкт.) Тому я думаю, що якщо я перекручую 2D мапу даних аналогічним чином, вона також буде неспотвореною в 3D-сфері. Ось знімок, який я зробив з рівнянням, яке наближає до прямокутного спотворення. Ви помітите, що яйцеподібні еліпси на 2D-зображенні виглядають як коло, коли загортаються до 3D-сфери. Аналогічно, еліпси Тіссота також фігурують як кола на 3D-сфері.

Покажчик Тіссота із спотвореними колами Спотворені кола, загорнуті в 3D-сферу

Ось чому я дивився на рівняння Тіссо ... щоб точніше розібратися у спотворенні прямокутної проекції на різних широтах, щоб я міг спотворити свою накладку відповідно.

Сподіваюся, що це все має сенс.

Можливо, ти маєш рацію, що я повинен використовувати програму GIS. Щойно я завантажив Cartographica і побачу, чи зможу це зрозуміти. Будь-які пропозиції програмного забезпечення Mac для новачка, який займається цим завданням?

Знову дякую.


1
Ви дійсно маєте на увазі обчислення спотворень чи дійсно хочете знати, як обчислити саму проекцію? Можливо, ви могли б зробити зображення доступним у Мережі, щоб проілюструвати те, що ви намагаєтеся досягти. Використання функції "відповідність" говорить про те, що ви хочете визначити, як перетворити одне зображення на інше, вказуючи на те, що вам потрібно вказати, з чого ви починаєте, а також з чого ви хочете в кінцевому підсумку.
whuber

1
Ми розуміємо, що важко описати, що ви хочете зробити, не знаючи жаргону, але це здається, що ви намагаєтесь описати процес, а не результат. Спробуйте почати з проблеми, яку ви хочете вирішити, тоді результати, які ви хотіли б, ми спробуємо заповнити прогалини :)
MerseyViking

З технічної точки зору: ви хочете перепроеціровать від потрібної проекції на орфографічний ( «світ з космосу») проекції. Яке програмне забезпечення ви можете використовувати? Якщо у вас є програмне забезпечення GIS або ви готові кодувати проти бібліотеки проекцій, робота в основному виконується за вас. В іншому випадку вам потрібно реалізувати рівняння для спроектування прямокутної проекції (легко) та проектування ортографічної проекції (не надто важко, але вимагає певних навичок кодування числових процедур).
whuber

1
Я побачив цю публікацію і намагаюся в основному зробити те саме. Я хочу намалювати 2D кола, які спотворюються правильно при проектуванні на 3D-сферу. Мені було цікаво, чи бажаєте ви поділитися алгоритмом, який ви використовували для спотворення двовимірних кіл? Справді, це був коментар, а не відповідь, але я написав це в неправильному місці. Вибачте.
HankTurbo

Ви повинні намалювати свої дані в тривимірному просторі, а потім запроектувати їх назад у сферу.
AngelLeliel

Відповіді:


5

Як зробити так, щоб моє 2D-зображення виглядало неспотвореним, коли він перетворений на 3D-сферу?

Координати зображень - це широта та довгота, тож і ви

(а) скасуйте його та повторно спроектувавши його за допомогою ортографічної чи вертикальної проекції (тобто проекції, схожі на світ із космосу) або

(b) Текстуру - нанесіть його на 3D-модель сфери, використовуючи lat-lon як координати текстури, і відображте цю сферу за допомогою пристрою 3D-графічного відображення.

Більшість ГІС роблять (а) звичайно. Для ілюстрації (b) ось набір зображень, отриманих із "плоскої" карти у запитанні, взятому з точки зору, що обертається навколо структури текстурованої сфери:

Світ з космосу

(Якщо придивитись уважніше до крайнього правого зображення, то можна побачити видатний меридіан через Тихий океан: це "шов", утворений обертанням лівої та правої сторін карти разом.)

Основна команда Mathematica для створення однієї з них - це

SphericalPlot3D[1, {a, 0, \[Pi]}, {b, 0, 2 \[Pi]}, Mesh -> None, 
 PlotStyle -> {Texture[i]}, TextureCoordinateFunction -> ({#5, -#4} &), 
 Lighting -> {{"Ambient", White}}, 
 Boxed -> False, Axes -> False, Background -> Black]

Це зменшує початкову проблему (малювання «карт даних» на кулі) до створення карти, яка правильно показує кола. Найкраща проекція для цього - стереографічна, тому що вона проектує всі кола на сфері - незалежно від їх розміру - на кола на карті. Таким чином, одна процедура правильно намалювати великі кола в прямокутній проекції, як показано в питанні, - це створити їх у стереографічній проекції, а потім не спроектувати їх до географічних координат (lat, lon). Використання (lon, lat) як (x, y) декартових координат для складання карти рівносильне рівнокутній проекції і тому підходить для відображення текстури на сферу або для застосування ортографічної проекції.


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


Дякую за дуже інформативний пост! Я сприймаю (б) як свій підхід і маю під рукою правильно сформовану прямокутну карту, але отримую потворні спотворення полюсів під час відображення карти в 3D-сферу. Ви дуже ласкаво допоможете? gis.stackexchange.com/questions/245315/…
Сіббс Азартні ігри

2

Припускаючи, що фігури, що малюються, охоплюють невелику частину сфери, ви повинні мати можливість пройти, масштабуючи ширину на 1 / cos (лат.) І залишаючи висоту в спокої.

Чим більша форма і чим ближче ви підходите до стовпів, тим менш добре це буде працювати.


Чи можете ви поясніть, чому це спрацює? Схоже, що вона драматично вийде з ладу навіть на невеликих ділянках сфери біля краю її візуалізації у прикладних зображеннях.
качан

Дякую за редагування; Відповідно, я зняв протиріччя, оскільки ваша відповідь мені здається правильною і може бути корисною для когось у майбутньому. Хоча, переглядаючи питання, мабуть, навряд чи хтось оберне такі маленькі фігури навколо сфери - і коли це станеться, їм, на мою думку, теж доведеться мати справу з полюсами.
whuber

0

Я не можу зрозуміти, як додати коментар, тому я вкладу це в рішення і дозволю модераторам розбиратися, щоб зрозуміти, чому я не можу коментувати.

Перше моє враження, читаючи ваше запитання, було: "Чому ви не проектуєте свої кола у відповідній проекції, на зразок Меркатора". Ви можете спроектувати цю карту в проекцію Меркатора і побачити спотворення свого кола та тексту, виправити все, щоб виглядати добре, і коли ви проектуєте його на земну кулю, форми повинні залишатися правильними (тобто визначення конформної проекції).


2
Це звучить як відповідь для мене, тому я залишу його. Але це неправильно, будуючи на основі непорозуміння: конформні проекції не проектують усі кола на кола. Вони роблять це лише безмежно. Відмінність величезна: врахуйте, що Меркатор робить для будь-якого кола, наприклад, навколо осі Землі. Він не може відобразити його як коло - його треба десь розбити. Для більш детального обговорення цього питання, будь ласка, шукайте наш сайт на Tissot .
whuber

1
"Вони роблять це лише нескінченно". -> "Вони роблять це лише для нескінченно малих".
Мартін Ф

0

Дивіться, на Вашій першій двовимірній карті не намальовані географічні особливості. Додайте їх до цієї карти (скажімо, контур Африки) та застосуйте спотворення, про яке ви думаєте, до всього одразу. Географія також стала б модифікованою, і коли ви поставите її на сферу, було б неправильно. Тому я вважаю, що ця ідея застосувати якесь викривлення не спрацює.

Ви можете потрапити в 2D, намалювавши графіку на невеликих двовимірних картах, що мають обмежену площу та прийнятне спотворення. Ви можете вирізати 2D карту на плитки, і для кожної плитки використовувати її "найкращу" проекцію.

З іншого боку, легко створити точки на геодезичному колі заданого радіуса на 2D карті. Для цього вам знадобиться знайти функцію, яка обчислює лат / довгу точки на заданій відстані та азимут від іншої точки (пошук "прямої задачі Вінсенті"). Як тільки ви це отримаєте, ви можете генерувати купу рівновіддалених точок на заданій відстані від точки, змінюючи азимут з ​​0 на 360. Здійснення багатокутника з цих точок у 2D вимагає більшої роботи, коли геодезичне коло містить полюс або перетинається ліва чи права межа карти. Перевірте, як можуть виглядати геодезичні кола на плоскій карті тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.