Софт, помогающий угадывать проекцию по сетке координат
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 08 янв 2010, 23:07
- Репутация: 1
Софт, помогающий угадывать проекцию по сетке координат
Подскажите есть ли софт решающий задачу распознать неизвестную проекцию карты.
Речь идет об обзорных картах больших регионов (Европа, мир и т.д.)
Допустим поверх карты есть сетка меридианов и параллелей.
Но даже по их виду трудно часто опознать проекцию внутри группы проекций (цилиндрические и т.п.).
Требуется привязать растр, "угадав" проекцию, дающую наименьшие искажения
Требуется софт позволяющий сделать так:
открываем графический файл карты
расставляем 4 (или больше) точки на пересечении меридианов и параллелей с известными долготой и широтой
каждой точке указываем эти значения координат в градусах
запускаем "распознавание" проекций
софт выдает список EPSG проекций, сортируя их по степени "похожести"
Технически такой софт должен быть. Ведь в цилиндрических проекциях 4 точки образуют прямоугольник, в конических - трапецию и т.д. Т.е. мы указываем такой программе по сути все минимальные и необходимые данные для "подбора" проекции.
Если эту задачу можно решить в Qgis или Saga не прибегая к стороннему софту покажите как.
Есть программа FlexProjector - но он больше для создания "своих" проекций чем для их угадывания.
В качестве примера прикрепил карту (одну из сотни), где собственно и стоит задача распознать проекцию.
Речь идет об обзорных картах больших регионов (Европа, мир и т.д.)
Допустим поверх карты есть сетка меридианов и параллелей.
Но даже по их виду трудно часто опознать проекцию внутри группы проекций (цилиндрические и т.п.).
Требуется привязать растр, "угадав" проекцию, дающую наименьшие искажения
Требуется софт позволяющий сделать так:
открываем графический файл карты
расставляем 4 (или больше) точки на пересечении меридианов и параллелей с известными долготой и широтой
каждой точке указываем эти значения координат в градусах
запускаем "распознавание" проекций
софт выдает список EPSG проекций, сортируя их по степени "похожести"
Технически такой софт должен быть. Ведь в цилиндрических проекциях 4 точки образуют прямоугольник, в конических - трапецию и т.д. Т.е. мы указываем такой программе по сути все минимальные и необходимые данные для "подбора" проекции.
Если эту задачу можно решить в Qgis или Saga не прибегая к стороннему софту покажите как.
Есть программа FlexProjector - но он больше для создания "своих" проекций чем для их угадывания.
В качестве примера прикрепил карту (одну из сотни), где собственно и стоит задача распознать проекцию.
- Вложения
-
- w_Cruciata glabra.jpg (1011.64 КБ) 7007 просмотров
-
- e_Potentilla alba.jpg (985.57 КБ) 7007 просмотров
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Софт, помогающий угадывать проекцию по сетке координат
На сколько мне известно, такого софта нет, а для решения этой задачи он и не нужен. Вооружитесь приложением к документации на PROJ.4 (там много визуальных примеров проекций) и угадывайте себе приблизительно. При таком масштабе и, соответственно, точности, незначительные различия, вызванные ошибкой угадывания, не имеют значения. А далее, вам всего-навсего нужен софт, в котором можно указывать координаты узлов сетки в градусах, без ручного пересчета. Я такие задачи решал много раз в GlobalMapper. Не знаю, справится ли с этим модуль привязки QGIS, но не исключаю.
- bingeomap
- Гуру
- Сообщения: 506
- Зарегистрирован: 06 июл 2012, 08:37
- Репутация: 53
- Откуда: Азербайджан, Баку
Re: Софт, помогающий угадывать проекцию по сетке координат
Это мелкомасштабная картас низкой точности, а почему не выполняете геопривязку по географическим координатам, а усложняете задачу?!
С уважением,
Биннат Халилов
Биннат Халилов
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Софт, помогающий угадывать проекцию по сетке координат
Буквально на днях написал скрипт на Python для подбора численных параметров проекции. Тип проекции он сам угадать не может, но подобрать параметры для заранее известного типа и оценить погрешность - вполне.
Исходники здесь: https://github.com/Ariki/guessproj
Требуется установить Python и питоновские модули pyproj, numpy и scipy, опционально gdal. Под Windows модули можно скачать здесь: www.lfd.uci.edu/~gohlke/pythonlibs/. Под Linux проще всего установить с помощью pip.
Порядок работы:
1. Снимаем с карты прямоугольные координаты нескольких перекрестий градусной сетки (желательно перевести их в метры в масштабе карты - от выбора единиц будут зависеть подобранные параметры и точность начальных приближений).
2. Создаём текстовый файл (например, с названием points.txt) соответствия географических координат, содержащий строки такого вида:
3. Находим, скажем, на spatialreference.org параметры проекции, близость которой к проекции карты нужно проверить, в формате proj4. Заменяем знак равенства перед всеми или некоторыми числовыми параметрами на тильду (~). Это означает, что программа должна подобрать точное значение этого параметра по указанным вами в текстовом файле точкам.
4. Запускаем скрипт (на примере проекции Альберса):
Если программе удастся подобрать параметры, они будут выведены на экран вместе с оценкой погрешностей на точках.
К сожалению, я пока не успел как следует протестировать скрипт (в частности, не проверял работу на платформах, отличных от Linux, и на проекциях, отличных от Transverse Mercator). Но, возможно, он уже сейчас окажется кому-то полезным.
Исходники здесь: https://github.com/Ariki/guessproj
Требуется установить Python и питоновские модули pyproj, numpy и scipy, опционально gdal. Под Windows модули можно скачать здесь: www.lfd.uci.edu/~gohlke/pythonlibs/. Под Linux проще всего установить с помощью pip.
Порядок работы:
1. Снимаем с карты прямоугольные координаты нескольких перекрестий градусной сетки (желательно перевести их в метры в масштабе карты - от выбора единиц будут зависеть подобранные параметры и точность начальных приближений).
2. Создаём текстовый файл (например, с названием points.txt) соответствия географических координат, содержащий строки такого вида:
Код: Выделить всё
долгота широта X Y
4. Запускаем скрипт (на примере проекции Альберса):
Код: Выделить всё
python guessproj.py +to +proj=aea +lat_1~52 +lat_2~64 +lat_0~0 +lon_0~105 +x_0~18500000 +y_0~0 +ellps=krass +units=m points.txt
К сожалению, я пока не успел как следует протестировать скрипт (в частности, не проверял работу на платформах, отличных от Linux, и на проекциях, отличных от Transverse Mercator). Но, возможно, он уже сейчас окажется кому-то полезным.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Софт, помогающий угадывать проекцию по сетке координат
Попробовал подобрать проекцию для вышеприведённых карт, по очереди подставляя разные разумные варианты в параметры скрипта. Координаты перекрестий сетки снял в QGIS с непривязанного растра в пикселях. Чтобы скомпенсировать несоответствие единиц, указал радиус Земли в качестве определяемого параметра, наряду со смещениями по x и y (+R~1000 +x_0~0 +y_0~0). Получилось примерно так:
Cruciata glabra - тройная проекция Винкеля: +proj=wintri +lat_1=60 +lon_0=40 +datum=WGS84 +units=m +no_defs
Potentilla alba - ортографическая проекция: +proj=ortho +lat_0=50 +lon_0=20 +datum=WGS84 +units=m +no_defs
Максимальные остаточные погрешности на исходных точках - порядка 1% от размера карты.
Cruciata glabra - тройная проекция Винкеля: +proj=wintri +lat_1=60 +lon_0=40 +datum=WGS84 +units=m +no_defs
Potentilla alba - ортографическая проекция: +proj=ortho +lat_0=50 +lon_0=20 +datum=WGS84 +units=m +no_defs
Максимальные остаточные погрешности на исходных точках - порядка 1% от размера карты.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость