Я пытаюсь вычислить искажение, чтобы я мог искажать наложенный текст и формы, чтобы точно соответствовать изображению равноугольной проекции.
Итак, как рассчитать искажение на заданной широте в равноугольной проекции 1: 45 000 000 (скажем, 2000 пикселей в ширину и 1000 пикселей в высоту)?
Я пытался выяснить этот пост и его ссылки безрезультатно: Как создать точную индикатрису Tissot?
Я не профессионал, просто очень заинтересованный любитель, поэтому, пожалуйста, сделайте это для меня!
Большое спасибо!
Спасибо за быстрые ответы! Вот длинная история; Я надеюсь, что это понятнее.
Я визуализирую / отображаю данные с использованием языка программирования Processing и хотел бы, чтобы данные 2D-отображения (шрифты и круги разного размера) выглядели неискаженными при переносе на трехмерный глобус. Данные отображаются с использованием равносторонних x, y и карты, которые я хочу использовать в качестве фонов, являются всей этой проекцией, поэтому я предполагаю, что хочу «сопоставить» это искажение (например, путем вычисления искажения по широте с использованием уравнений Тиссо?). Используя язык программирования, я могу точно исказить как текст, так и круги. Я думаю, что все, что мне нужно, это уравнения, чтобы сделать это правильно.
Вот оригинальная 2D карта данных:
Когда обернуто, это выглядит искаженным, как это:
Вопрос за 10 000 долларов: как сделать так, чтобы мое 2D-изображение выглядело неискаженным при переносе в трехмерную сферу?
Для справки, вот тот же вопрос, заданный по-другому на форуме Processing.
Еще раз спасибо!
Если я вас правильно понимаю, я не уверен, что хочу перепроектировать в ортографическую проекцию. Я хочу, чтобы моя 2D-карта данных была обернута в 3D-модель сферы, с которой можно взаимодействовать (например, вращаться).
Я использую программу трехмерного моделирования (Cinema 4D), чтобы обернуть сферу 2- мегабайтным изображением «синего мрамора» (равносторонняя проекция) из НАСА.
Когда обернуто, оно кажется неискаженным из всех полушарий (не только одного полушария, как было бы в ортографической проекции?), См .: все еще из трехмерной модели выше (Я полагаю, что программа моделирования выполняет для меня ортографическую проекцию, когда я вращаю объект.) Поэтому я думаю, что, если я искажу свою 2D-карту данных аналогичным образом, она также будет выглядеть неискаженной в 3D-сфере. Вот снимок, который я сделал с уравнением, которое аппроксимирует равноправное искажение. Вы заметите, что эллипсы в форме яйца на 2D-изображении выглядят как круг, когда обернуты в 3D-сферу. Точно так же эллипсы Тиссо также появляются как круги на трехмерной сфере.
Вот почему я смотрел на уравнения Тиссо ... чтобы точнее выяснить искажение равносторонней проекции на разных широтах, чтобы я мог соответствующим образом исказить свое наложение.
Надеюсь, что все это имеет смысл.
Возможно, вы правы, что я должен использовать программу ГИС. Я только что скачал Cartographica и посмотрю, смогу ли я это выяснить. Какие-либо предложения программного обеспечения Mac для новичка, выполняющего эту задачу?
Еще раз спасибо.
источник
Ответы:
Координаты изображения - это широта и долгота, поэтому вы можете
(a) Отпроектируйте его и перепроектируйте, используя ортографическую или вертикальную проекцию ближней стороны (то есть проекции, которые выглядят как мир из космоса) или
(b) Нанесите на карту текстуру на трехмерную модель сферы, используя широту в качестве координат текстуры, и отобразите эту сферу с помощью устройства визуализации трехмерной графики.
Большинство ГИС делают (а) регулярно. Чтобы проиллюстрировать (b), вот набор изображений, полученных из "плоской" карты в вопросе, взятой с точки зрения, вращающейся вокруг сферы с текстурой:
(Если вы внимательно посмотрите на крайнее правое изображение, вы увидите заметный меридиан через Тихий океан: это «шов», образованный объединением левой и правой сторон карты.)
Основная команда Mathematica для создания одного из них:
Это сводит исходную проблему (рисование «карт данных» на сфере) к созданию карты, на которой правильно отображаются круги. Лучшая проекция для этого - Stereographic, потому что он проецирует все круги на сфере - независимо от их размера - на круги на карте. Таким образом , одна процедура , чтобы правильно рисовать большие круги в Равноугольной проекции выступа, как показано на вопрос, является создание их в проекции Стереографической , а затем unproject их географических координат (широта, долгота). Использование (lon, lat) в качестве (x, y) декартовых координат для создания карты равносильно равноугольной проекции и поэтому подходит для наложения текстуры на сферу или для применения ортогональной проекции.
Обратите внимание, что индикатрисы Тиссо не подходят в качестве решения: они представляют только локальные искажения бесконечно малых окружностей. Круги, достаточно большие для того, чтобы их можно было увидеть в глобальном масштабе, в большинстве проекций больше не будут даже круглыми: посмотрите на их появление в виде пузырей на карте. Вот почему играть в игры с проекциями, как показано здесь, необходимо для хорошего решения.
источник
Предполагая, что нарисованные фигуры покрывают небольшую часть сферы, вы сможете обойтись, увеличив ширину на 1 / cos (lat) и оставив высоту в покое.
Чем больше форма и чем ближе вы подойдете к полюсам, тем хуже это будет работать.
источник
Я не могу понять, как добавить комментарий, поэтому я добавлю это в решение и позволю модераторам разобраться, почему я не могу комментировать.
Мое первое впечатление при чтении вашего вопроса было: «Почему вы не проектируете свои круги в конформной проекции, подобной Меркатору». Вы можете спроецировать эту карту в проекцию Меркатора и увидеть ваш круг и искажение текста, исправить все так, чтобы он выглядел красиво, и когда вы проецируете его на глобус, формы должны оставаться правильными (это определение конформной проекции).
источник
Смотрите, ваша первая 2D карта не имеет нарисованных географических объектов. Добавьте их на эту карту (скажем, контур Африки) и примените искажение, о котором вы думаете, ко всему сразу. География также будет изменена, и когда вы поместите ее в сферу, это будет неправильно. Поэтому я считаю, что эта идея применить искажение не будет работать.
Вы можете обойтись в 2D, рисуя графику на маленьких 2D картах, которые имеют ограниченную площадь и приемлемые искажения. Вы можете разрезать свою 2D карту на плитки и использовать для каждой плитки свою «лучшую» проекцию.
С другой стороны, на 2D-карте легко создать точки на геодезической окружности заданного радиуса. Для этого вам нужно найти функцию, которая вычисляет широту / долготу точки на заданном расстоянии и азимут от другой точки (ищите «прямая задача Винсенти»). Получив это, вы можете создать группу эквидистантных точек на заданном расстоянии от точки, изменив азимут от 0 до 360. Создание многоугольника из этих точек в 2D требует больше работы, когда геодезическая окружность содержит полюс или пересекается левая или правая граница карты. Посмотрите, как геодезические круги могут выглядеть на плоской карте здесь .
источник