Софт, помогающий угадывать проекцию по сетке координат

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
rdfhnbhf
Новоприбывший
Сообщения: 2
Зарегистрирован: 08 янв 2010, 23:07
Репутация: 1

Софт, помогающий угадывать проекцию по сетке координат

Сообщение rdfhnbhf » 09 сен 2014, 10:23

Подскажите есть ли софт решающий задачу распознать неизвестную проекцию карты.

Речь идет об обзорных картах больших регионов (Европа, мир и т.д.)
Допустим поверх карты есть сетка меридианов и параллелей.
Но даже по их виду трудно часто опознать проекцию внутри группы проекций (цилиндрические и т.п.).
Требуется привязать растр, "угадав" проекцию, дающую наименьшие искажения

Требуется софт позволяющий сделать так:

открываем графический файл карты
расставляем 4 (или больше) точки на пересечении меридианов и параллелей с известными долготой и широтой
каждой точке указываем эти значения координат в градусах
запускаем "распознавание" проекций
софт выдает список EPSG проекций, сортируя их по степени "похожести"

Технически такой софт должен быть. Ведь в цилиндрических проекциях 4 точки образуют прямоугольник, в конических - трапецию и т.д. Т.е. мы указываем такой программе по сути все минимальные и необходимые данные для "подбора" проекции.

Если эту задачу можно решить в Qgis или Saga не прибегая к стороннему софту покажите как.
Есть программа FlexProjector - но он больше для создания "своих" проекций чем для их угадывания.

В качестве примера прикрепил карту (одну из сотни), где собственно и стоит задача распознать проекцию.
Вложения
w_Cruciata glabra.jpg
w_Cruciata glabra.jpg (1011.64 КБ) 7004 просмотра
e_Potentilla alba.jpg
e_Potentilla alba.jpg (985.57 КБ) 7004 просмотра

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Софт, помогающий угадывать проекцию по сетке координат

Сообщение ericsson » 09 сен 2014, 20:21

На сколько мне известно, такого софта нет, а для решения этой задачи он и не нужен. Вооружитесь приложением к документации на PROJ.4 (там много визуальных примеров проекций) и угадывайте себе приблизительно. При таком масштабе и, соответственно, точности, незначительные различия, вызванные ошибкой угадывания, не имеют значения. А далее, вам всего-навсего нужен софт, в котором можно указывать координаты узлов сетки в градусах, без ручного пересчета. Я такие задачи решал много раз в GlobalMapper. Не знаю, справится ли с этим модуль привязки QGIS, но не исключаю.

Аватара пользователя
bingeomap
Гуру
Сообщения: 506
Зарегистрирован: 06 июл 2012, 08:37
Репутация: 53
Откуда: Азербайджан, Баку

Re: Софт, помогающий угадывать проекцию по сетке координат

Сообщение bingeomap » 09 сен 2014, 20:36

Это мелкомасштабная картас низкой точности, а почему не выполняете геопривязку по географическим координатам, а усложняете задачу?!
С уважением,
Биннат Халилов

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Софт, помогающий угадывать проекцию по сетке координат

Сообщение Ariki » 11 сен 2014, 23:25

Буквально на днях написал скрипт на Python для подбора численных параметров проекции. Тип проекции он сам угадать не может, но подобрать параметры для заранее известного типа и оценить погрешность - вполне.
Исходники здесь: 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
3. Находим, скажем, на spatialreference.org параметры проекции, близость которой к проекции карты нужно проверить, в формате proj4. Заменяем знак равенства перед всеми или некоторыми числовыми параметрами на тильду (~). Это означает, что программа должна подобрать точное значение этого параметра по указанным вами в текстовом файле точкам.
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). Но, возможно, он уже сейчас окажется кому-то полезным.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Софт, помогающий угадывать проекцию по сетке координат

Сообщение Ariki » 14 сен 2014, 02:33

Попробовал подобрать проекцию для вышеприведённых карт, по очереди подставляя разные разумные варианты в параметры скрипта. Координаты перекрестий сетки снял в 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% от размера карты.

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя