GDAL API: Привязка растра

Ответить
daktaklakpak
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 май 2009, 16:03
Репутация: 0

GDAL API: Привязка растра

Сообщение daktaklakpak » 26 май 2009, 16:43

Привет, all!

Вопросы в основном направлены знатокам API, но если кто знает, как их решить из командной строки - напишите пжлст. Расковыряю исходники.

Разрабатываю систему вывода траектории самолета по зарегистрированным на бортовой накопитель данным.
В качестве одного из требований - отображение траектории полета над подстилающей поверхностью, которая может иметь вид:
- координатной сетки (географической, либо километровой);
- растра, привязанного по координатам;
- цифровой карты.
При этом, координаты самолета могут быть заданы как в угловых единицах (широта, долгота), так и в виде отклонения в метрах от точки старта (допустим, что географические координаты точки старта при этом известны). Требования к точности отображения траектории - метры (допустим, что зарегистрированные координаты удовлетворяют этим требованиям - остается привязать их к карте заданной точностью)

С цифровой картой все понятно - берем API соответствующей ГИС, в формате которой записана цифровая карта, и пользуемся для преобразования координат, отрисовки картинок и т.п.

А вот с первыми двумя...
Поизучав данный вопрос, я пришел к выводу, что наиболее подходящим для меня решением будет библиотека GDAL. В случае простой координатной сетки вроде-бы ничего сложного - задаем тип (градусы или метры), шаг и рисуем простую прямоугольную сетку. Но может потребоваться отобразить данные в метрах на угловой координатной сетке, и наоборот. Насколько я понимаю, минимальное знание, которое необходимо для более-менее точного преобразования - параметры эллипсоида. Если нужно точнее - то уже параметры датума. Определяем по этим знаниям цену угловых единиц в метрах и пересчитываем. Вопрос: Возможно ли с помощью GDAL как-нибудь получить цену угловых единиц без знания конкретной проекции?

Теперь с растром... Пользователь предполагается не продвинутый. Минимальное, что он сможет сделать с растром - ткнуть в контрольные точки и указать их геогорафические координаты. Вряд-ли он сможет сказать что-то вразумительное касаемо проекции карты, которую он отсканировал (а может это вообще будет аэрофото или карта из Гугла). Хорошо еще, если сможет выбрать правильный эллипсоид :) - WGS84, Крассовский... Поэтому, путь преобразования вижу такой: Растр <-> Широта,Долгота <-> Метры (через цену градуса). Интересует ответ на Вопрос в этом случае (т.е. уже с точками привязки).

Заранее спасибо!

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: GDAL API: Привязка растра

Сообщение KolesovDmitry » 26 май 2009, 17:08

daktaklakpak писал(а): ...
В качестве одного из требований - отображение траектории полета над подстилающей поверхностью, которая может иметь вид:
- координатной сетки (географической, либо километровой);
- растра, привязанного по координатам;
- цифровой карты.
...
С цифровой картой все понятно - берем API соответствующей ГИС, в формате которой записана цифровая карта, и пользуемся для преобразования координат, отрисовки картинок и т.п.

А вот с первыми двумя...
Боюсь, я чего-то неулавливаю, но ведь если вам понятно, как работать с цифровой картой (видимо, векторной?), используя API ГИС, то для работы с растрами и координатами должно быть аналогично, так как преобразование координат это базовая функциональность ГИС, она должна работать как с вектором, так и с растром... На всякий случай хочу уточнить, вам действительно нужны такие низкоуровневые процедуры, как определение цены угловых единиц? Но если это так, то зачем вам GDAL - есть же формулы, которые можно использовать...

P.S. Извините, что влез в разговор, не сказав ничего по существу, просто на самом деле непонятно....

daktaklakpak
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 май 2009, 16:03
Репутация: 0

Re: GDAL API: Привязка растра

Сообщение daktaklakpak » 27 май 2009, 00:04

Дело в том, что наличие какого-либо API не гарантировано. Планируется создать что-то типа плагинов, каждый из которых будет отвечать за работу со своим типом карт. Для Панорамы - один плагин, для привязанных растров - другой, для сеток - третий. Интерфейс для общения с основной программой у всех будет один.

Причем, предполагается, что функционал работы с растром и сеткой будет присутствовать все время (даже несмотря на то, что он будет выполнен в виде плагинов - дань архитектуре разрабатываемого модуля). Дежурная затычка, так сказать. Если уж совсем ничего под рукой нет...

Касаемо цены угловых единиц... я тут занялся полезным делом в метро - подумал :mrgreen: Действительно - цена угловых единиц для решения моей задачи не совсем интересна. Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах (там же наверное интегрировать что-то надо? или нет? :? ). Я верю, что формулы есть, но так как не являюсь специалистам в данном вопросе, то предпочитаю, чтобы эти формулы кодировали более компетентные люди. А я хотел-бы взять готовую библиотеку. Тем более, учитывая специфику GDAL, я предполагаю, что такие задачи в ней решаются. К тому-же я все-таки намерен предоставить пользователю возможность во время привязки растра указать проекцию, если он ее знает. А там с формулами вообще :!: , причем полная. У меня просто нет времени на сбор всей необходимой информации, изучение стандартов, спецификаций и т.п.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: GDAL API: Привязка растра

Сообщение Максим Дубинин » 27 май 2009, 02:39

daktaklakpak писал(а):Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах
http://gis-lab.info/qa/great-circles.html (сфера)

Судя по описанию вашей задачи, вы собираетесь разрабатывать новую десктоп ГИС, возможно вам стоит подумать в направлении модуля к существующей, например QGIS. Там эта функция уже встроена.
http://doc.qgis.org/stable/classQgsDist ... 1ef3d443b4
пристегивайтесь, турбулентность прямо по курсу

daktaklakpak
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 май 2009, 16:03
Репутация: 0

Re: GDAL API: Привязка растра

Сообщение daktaklakpak » 27 май 2009, 09:08

Мн-да, насколько я понял, что такое ГИС - вопрос философский. Но я к сожалению не могу полностью посадить свою программу на какую-либо ГИС. Тут же сразу появляются вопросы дистрибуции, лицензирования и т.д.

И все-таки буду настаивать, что моя программа к настольной ГИС имеет далекое отношение. Единственная возможность редактирования - привязка растра. Все остальные операции - чистое отображение и преобразование координат.

За ссылки спасибо! Буду изучать дальше.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: GDAL API: Привязка растра

Сообщение KolesovDmitry » 27 май 2009, 09:23

daktaklakpak писал(а): ... Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах (там же наверное интегрировать что-то надо? или нет? :? ). Я верю, что формулы есть, но так как не являюсь специалистам в данном вопросе, то предпочитаю, чтобы эти формулы кодировали более компетентные люди. А я хотел-бы взять готовую библиотеку.
...
У меня просто нет времени на сбор всей необходимой информации, изучение стандартов, спецификаций и т.п.
В таком случае, на мой взгляд, вам лучше взять не GDAL, а PROJ, особенно посмотрите на раздел Geodesic Calculations. Proj - это фактически стандарт работы с системами координат и проекциями. Туда столько всего зашито, что вам наверняка хватит :)

А вообще, мне кажется, что Sim дал толковый совет: зачем реализовывать уже реализованное, когда можно взять почти готовое и доработать?..

daktaklakpak
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 май 2009, 16:03
Репутация: 0

Re: GDAL API: Привязка растра

Сообщение daktaklakpak » 27 май 2009, 13:05

Я остановился на библиотеке GDAL в первую очередь потому, что она работает с различными растровыми форматами файлов. В частности, меня интересовал формат GeoTIFF для хранения привязанного растра. Здесь-то как раз я не изобретаю велосипед. Стал дальше копать API, а там обнаружилось множество интересных функций, позволяющих например вычислить коэффициенты трансформации. Но по Вашей ссылке я глянул - очень интересненько! Там кстати написано, что в proj модуль геодезических расчетов - так себе.

Ответить

Вернуться в «GDAL/OGR»

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

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