Предыстория Это мой второй вопрос, связанный с привязкой голых растровых карт к географическим координатам с целью их повторной визуализации в различных системах координат и в сочетании с другими слоями данных. Предыдущий вопрос находится в разделе Преобразование произвольного изображения карты без метаданных в проект QGIS.
Задача Моя цель - географическая привязка этой карты:
Это не похоже на Plate-Carrée. Поэтому в QGIS я создал несколько разумных контрольных точек, которые для полноты я прикрепил внизу [ref: 1]. Я предоставляю QGIS Georeferencer ту же целевую SRS, что и файл моего проекта, EPSG: 4326. Я получаю исключительно плохие результаты с Гельмертом и полиномиальными преобразованиями, но получаю разумное изображение с тонким сплайном пластины (что делает полученную геооценку проходящей через мои контрольные точки). Однако даже этот результат плохой, например, в более высоких широтах (см. Российское побережье к северу от Японии). Это скриншот моего экрана QGIS с использованием фона Natural Earth.
Альтернативный путь Я попробовал аналогичное упражнение с гораздо более простым в использовании инструментом в MapWarper: см. Результат и контрольные точки на http://mapwarper.net/maps/758#Preview_Map_tab, где я получаю более плохие результаты (вероятно, из-за того факта, что что я добавил меньше контрольных точек).
Вопросы в двух словах
- Есть ли какие-то хитрости, которые мне не хватает для получения хорошей привязки?
- Эта проекция мгновенно узнаваема?
- В Unknown Система координат на старом чертеже ,
gdaltransform
предлагаются преобразовать несколько точек координат в нескольких целевой SRS, с целью выявления фактически параметров проекции , используемых для создания исходной карты. Я попробовал что-то вроде этого: после сохранения моего списка точек QGIS я выполнил некоторую обработку строк, чтобы получить список разделенных пробелом длинных / лат черезcat eurasian-steppe-gcp.points | tail -n+2 | cut -d, -f1-2 | sed 's/,/ /'> tmp.txt
и введя полученный файл в gdaltransform:gdaltransform -s_srs EPSG:3785 -t_srs EPSG:4326 < tmp.txt
и переключивs_srs
иt_srs
флаги (в проекте используется EPSG: 4326). Я знаю, что стреляю в темноте, надеясь повезти, поэтому я не удивился, когда не смог разобраться в результатах. Может ли кто-нибудь рассказать о том, как бы я использовал этот метод, чтобы найти наилучшую оценку проекции и параметров проекции исходной карты? Я думаю, что вместо того, чтобы возиться с размещением множества контрольных точек для хорошей географической привязки, может быть проще получить почти идеальную географическую привязку с меньшим количеством контрольных точек, просто просматривая все общие системы координат? Включает ли это перекрестную проверку каждой точки в сравнении со всеми остальными, для каждого тестируемого CRS?
Я хотел бы получить представление об этом алгоритме или геопривязке, чтобы я мог автоматизировать процесс - я постоянно сталкиваюсь с этой проблемой и до тех пор, пока создатели контента не перестанут рассматривать свои карты как одноразовые создания, которые никогда не будут интегрированы с другим контентом, я не ожидаю, чтобы остановиться.
Ссылки
[ref: 1] Файл QGIS GCP:
mapX,mapY,pixelX,pixelY,enable
142.632649100000009,54.453595900000003,505.941176470588232,-95.220588235293974,1
154.934252200000003,59.559921699999997,536.411764705882206,-52.779411764705742,1
80.080158100000006,9.657192300000000,291.558823529411711,-322.661764705882206,1
10.448442600000000,57.819128900000003,21.676470588235190,-103.926470588235134,1
34.007173000000002,27.761438299999998,101.117647058823422,-244.852941176470466,1
50.950890399999999,11.862196600000001,171.852941176470495,-313.955882352941046,1
29.713217199999999,60.024133200000001,90.779411764705799,-92.499999999999829,1
60.000000000000000,0.000000000000000,208.308823529411683,-362.382352941176350,1
69.867506500000005,66.639146199999999,224.088235294117567,-33.191176470588061,1
27.276107100000001,71.049154799999997,89.147058823529306,-21.764705882352814,1
140.000000000000000,0.000000000000000,536.955882352941217,-362.926470588235190,1
20.000000000000000,0.000000000000000,43.441176470588132,-362.926470588235190,1
20.196882700000000,31.243024100000000,47.249999999999901,-231.794117647058698,1
9.171861099999999,42.848309999999998,8.073529411764603,-175.205882352941046,1
131.955786100000012,43.196468600000003,481.999999999999943,-162.691176470588090,1
73.813303700000006,45.169367200000003,256.735294117646959,-161.602941176470438,1
50.602731800000001,44.589102900000000,168.044117647058727,-167.588235294117510,1
121.394975900000006,18.941421099999999,455.882352941176407,-284.029411764705742,1
103.987047000000004,1.417439300000000,389.499999999999943,-357.485294117646959,1
109.325478599999997,55.962283100000001,380.249999999999943,-98.485294117646902,1
31.454010100000001,46.562001500000001,95.132352941176379,-158.882352941176322,1
43.639560299999999,68.844150499999998,137.573529411764611,-40.264705882352814,1
Non-обновление
Анализ Ван дер Гринтена. Я написал инструмент Python, чтобы приспособить опорные точки к любой проекции, которую поддерживает Proj4 (через Pyproj), и применил ее к паре проекций, предложенных в ответах. Исходный код (несколько небрежно, заранее извиняюсь), а также обновленные GCP доступны по адресу https://github.com/fasiha/steppe-map.
У van der Grinten есть только 1 параметр для настройки, и вот результирующее изображение (используя последнее изображение от Britannica, большое спасибо им за то, что они предоставили такую карту с высоким разрешением и обновленную карту (хотя все еще отсутствуют данные о проекции)).
Ван дер Гринтен имеет относительную погрешность 0,035 между опорными точками и точками наилучшего соответствия, что является наихудшей из тех групп, которые я пробовал, и наложение береговой линии подтверждает это качественно.
(Это может помочь, если вы откроете это изображение на собственной вкладке, оно имеет высокое разрешение. Вы также увидите зеленые стрелки, указывающие точки с географической привязкой (они должны соответствовать значительным ориентирам на изображении), а также красные стрелки, указывающие, где эти точки установлены (они должны совпадать с одинаковыми ориентирами на береговой линии наложения) - отклонение между ними может помочь глазу увидеть различия между изображением и подбором.)
Анализ равной площади Альберса. Попытка сделать то же самое с проекцией равной площади Альберса (что совпадает с «конической конической формой Альберса» - извините за мое невежество). Это соответствие, включающее 4-мерное соответствие параметров, лучше с относительной погрешностью 0,025, но, тем не менее, выглядит довольно плохо.
Анализ проекций Робинсона и Эккерта V Я подобрал ряд псевдоцилиндрических проекций, поддерживаемых Pyproj (все, что я смог найти, имел один свободный параметр) и обнаружил, что проекции Робинсона и Экерта V показали «лучшее» с точки зрения относительной погрешности между опорные точки и подогнанные точки, оба с относительной погрешностью 0,015.
Вот Робинсон:
А вот и Экерт В.
Обратите внимание на отклонения подобранной береговой линии от береговой линии изображения. Я думаю, что из этого я могу сделать вывод, что на карте нет ничего из вышеперечисленного?
Винкель трипель: возможное решение?
После последовательной проверки всех проекций в этом руководстве по Proj от 1990 г. (обновлено в 2003 г.) ftp://ftp.remotesensing.org/proj/OF90-284.pdf я наконец пришел к трипельной проекции Винкеля. Это приводит к наименьшим количественным ошибкам (0,011), и береговая линия равномерно довольно хорошая (или, что то же самое, равномерно слегка плохая) Я читал, что это проекция Национального географического общества, что означает его известность, и это добавляет вес к кандидатуре этой проекции для карты Британики. Оснащен SRS: +units=m +lon_0=47.0257707403 +proj=wintri
.
(Извините за изменение цвета береговой линии на серый. Если это кого-то обидит, я могу выпустить синюю версию.)
Я постараюсь настроить свои опорные точки, чтобы уменьшить ошибку.