GDAL API: Привязка растра
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 26 май 2009, 16:03
- Репутация: 0
GDAL API: Привязка растра
Привет, all!
Вопросы в основном направлены знатокам API, но если кто знает, как их решить из командной строки - напишите пжлст. Расковыряю исходники.
Разрабатываю систему вывода траектории самолета по зарегистрированным на бортовой накопитель данным.
В качестве одного из требований - отображение траектории полета над подстилающей поверхностью, которая может иметь вид:
- координатной сетки (географической, либо километровой);
- растра, привязанного по координатам;
- цифровой карты.
При этом, координаты самолета могут быть заданы как в угловых единицах (широта, долгота), так и в виде отклонения в метрах от точки старта (допустим, что географические координаты точки старта при этом известны). Требования к точности отображения траектории - метры (допустим, что зарегистрированные координаты удовлетворяют этим требованиям - остается привязать их к карте заданной точностью)
С цифровой картой все понятно - берем API соответствующей ГИС, в формате которой записана цифровая карта, и пользуемся для преобразования координат, отрисовки картинок и т.п.
А вот с первыми двумя...
Поизучав данный вопрос, я пришел к выводу, что наиболее подходящим для меня решением будет библиотека GDAL. В случае простой координатной сетки вроде-бы ничего сложного - задаем тип (градусы или метры), шаг и рисуем простую прямоугольную сетку. Но может потребоваться отобразить данные в метрах на угловой координатной сетке, и наоборот. Насколько я понимаю, минимальное знание, которое необходимо для более-менее точного преобразования - параметры эллипсоида. Если нужно точнее - то уже параметры датума. Определяем по этим знаниям цену угловых единиц в метрах и пересчитываем. Вопрос: Возможно ли с помощью GDAL как-нибудь получить цену угловых единиц без знания конкретной проекции?
Теперь с растром... Пользователь предполагается не продвинутый. Минимальное, что он сможет сделать с растром - ткнуть в контрольные точки и указать их геогорафические координаты. Вряд-ли он сможет сказать что-то вразумительное касаемо проекции карты, которую он отсканировал (а может это вообще будет аэрофото или карта из Гугла). Хорошо еще, если сможет выбрать правильный эллипсоид - WGS84, Крассовский... Поэтому, путь преобразования вижу такой: Растр <-> Широта,Долгота <-> Метры (через цену градуса). Интересует ответ на Вопрос в этом случае (т.е. уже с точками привязки).
Заранее спасибо!
Вопросы в основном направлены знатокам API, но если кто знает, как их решить из командной строки - напишите пжлст. Расковыряю исходники.
Разрабатываю систему вывода траектории самолета по зарегистрированным на бортовой накопитель данным.
В качестве одного из требований - отображение траектории полета над подстилающей поверхностью, которая может иметь вид:
- координатной сетки (географической, либо километровой);
- растра, привязанного по координатам;
- цифровой карты.
При этом, координаты самолета могут быть заданы как в угловых единицах (широта, долгота), так и в виде отклонения в метрах от точки старта (допустим, что географические координаты точки старта при этом известны). Требования к точности отображения траектории - метры (допустим, что зарегистрированные координаты удовлетворяют этим требованиям - остается привязать их к карте заданной точностью)
С цифровой картой все понятно - берем API соответствующей ГИС, в формате которой записана цифровая карта, и пользуемся для преобразования координат, отрисовки картинок и т.п.
А вот с первыми двумя...
Поизучав данный вопрос, я пришел к выводу, что наиболее подходящим для меня решением будет библиотека GDAL. В случае простой координатной сетки вроде-бы ничего сложного - задаем тип (градусы или метры), шаг и рисуем простую прямоугольную сетку. Но может потребоваться отобразить данные в метрах на угловой координатной сетке, и наоборот. Насколько я понимаю, минимальное знание, которое необходимо для более-менее точного преобразования - параметры эллипсоида. Если нужно точнее - то уже параметры датума. Определяем по этим знаниям цену угловых единиц в метрах и пересчитываем. Вопрос: Возможно ли с помощью GDAL как-нибудь получить цену угловых единиц без знания конкретной проекции?
Теперь с растром... Пользователь предполагается не продвинутый. Минимальное, что он сможет сделать с растром - ткнуть в контрольные точки и указать их геогорафические координаты. Вряд-ли он сможет сказать что-то вразумительное касаемо проекции карты, которую он отсканировал (а может это вообще будет аэрофото или карта из Гугла). Хорошо еще, если сможет выбрать правильный эллипсоид - WGS84, Крассовский... Поэтому, путь преобразования вижу такой: Растр <-> Широта,Долгота <-> Метры (через цену градуса). Интересует ответ на Вопрос в этом случае (т.е. уже с точками привязки).
Заранее спасибо!
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: GDAL API: Привязка растра
Боюсь, я чего-то неулавливаю, но ведь если вам понятно, как работать с цифровой картой (видимо, векторной?), используя API ГИС, то для работы с растрами и координатами должно быть аналогично, так как преобразование координат это базовая функциональность ГИС, она должна работать как с вектором, так и с растром... На всякий случай хочу уточнить, вам действительно нужны такие низкоуровневые процедуры, как определение цены угловых единиц? Но если это так, то зачем вам GDAL - есть же формулы, которые можно использовать...daktaklakpak писал(а): ...
В качестве одного из требований - отображение траектории полета над подстилающей поверхностью, которая может иметь вид:
- координатной сетки (географической, либо километровой);
- растра, привязанного по координатам;
- цифровой карты.
...
С цифровой картой все понятно - берем API соответствующей ГИС, в формате которой записана цифровая карта, и пользуемся для преобразования координат, отрисовки картинок и т.п.
А вот с первыми двумя...
P.S. Извините, что влез в разговор, не сказав ничего по существу, просто на самом деле непонятно....
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 26 май 2009, 16:03
- Репутация: 0
Re: GDAL API: Привязка растра
Дело в том, что наличие какого-либо API не гарантировано. Планируется создать что-то типа плагинов, каждый из которых будет отвечать за работу со своим типом карт. Для Панорамы - один плагин, для привязанных растров - другой, для сеток - третий. Интерфейс для общения с основной программой у всех будет один.
Причем, предполагается, что функционал работы с растром и сеткой будет присутствовать все время (даже несмотря на то, что он будет выполнен в виде плагинов - дань архитектуре разрабатываемого модуля). Дежурная затычка, так сказать. Если уж совсем ничего под рукой нет...
Касаемо цены угловых единиц... я тут занялся полезным делом в метро - подумал Действительно - цена угловых единиц для решения моей задачи не совсем интересна. Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах (там же наверное интегрировать что-то надо? или нет? ). Я верю, что формулы есть, но так как не являюсь специалистам в данном вопросе, то предпочитаю, чтобы эти формулы кодировали более компетентные люди. А я хотел-бы взять готовую библиотеку. Тем более, учитывая специфику GDAL, я предполагаю, что такие задачи в ней решаются. К тому-же я все-таки намерен предоставить пользователю возможность во время привязки растра указать проекцию, если он ее знает. А там с формулами вообще , причем полная. У меня просто нет времени на сбор всей необходимой информации, изучение стандартов, спецификаций и т.п.
Причем, предполагается, что функционал работы с растром и сеткой будет присутствовать все время (даже несмотря на то, что он будет выполнен в виде плагинов - дань архитектуре разрабатываемого модуля). Дежурная затычка, так сказать. Если уж совсем ничего под рукой нет...
Касаемо цены угловых единиц... я тут занялся полезным делом в метро - подумал Действительно - цена угловых единиц для решения моей задачи не совсем интересна. Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах (там же наверное интегрировать что-то надо? или нет? ). Я верю, что формулы есть, но так как не являюсь специалистам в данном вопросе, то предпочитаю, чтобы эти формулы кодировали более компетентные люди. А я хотел-бы взять готовую библиотеку. Тем более, учитывая специфику GDAL, я предполагаю, что такие задачи в ней решаются. К тому-же я все-таки намерен предоставить пользователю возможность во время привязки растра указать проекцию, если он ее знает. А там с формулами вообще , причем полная. У меня просто нет времени на сбор всей необходимой информации, изучение стандартов, спецификаций и т.п.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: GDAL API: Привязка растра
http://gis-lab.info/qa/great-circles.html (сфера)daktaklakpak писал(а):Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах
Судя по описанию вашей задачи, вы собираетесь разрабатывать новую десктоп ГИС, возможно вам стоит подумать в направлении модуля к существующей, например QGIS. Там эта функция уже встроена.
http://doc.qgis.org/stable/classQgsDist ... 1ef3d443b4
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 26 май 2009, 16:03
- Репутация: 0
Re: GDAL API: Привязка растра
Мн-да, насколько я понял, что такое ГИС - вопрос философский. Но я к сожалению не могу полностью посадить свою программу на какую-либо ГИС. Тут же сразу появляются вопросы дистрибуции, лицензирования и т.д.
И все-таки буду настаивать, что моя программа к настольной ГИС имеет далекое отношение. Единственная возможность редактирования - привязка растра. Все остальные операции - чистое отображение и преобразование координат.
За ссылки спасибо! Буду изучать дальше.
И все-таки буду настаивать, что моя программа к настольной ГИС имеет далекое отношение. Единственная возможность редактирования - привязка растра. Все остальные операции - чистое отображение и преобразование координат.
За ссылки спасибо! Буду изучать дальше.
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: GDAL API: Привязка растра
В таком случае, на мой взгляд, вам лучше взять не GDAL, а PROJ, особенно посмотрите на раздел Geodesic Calculations. Proj - это фактически стандарт работы с системами координат и проекциями. Туда столько всего зашито, что вам наверняка хватитdaktaklakpak писал(а): ... Здесь нужна формула или алгоритм определения длины дуги на эллипсе, когда конечные точки заданы в угловых координатах (там же наверное интегрировать что-то надо? или нет? ). Я верю, что формулы есть, но так как не являюсь специалистам в данном вопросе, то предпочитаю, чтобы эти формулы кодировали более компетентные люди. А я хотел-бы взять готовую библиотеку.
...
У меня просто нет времени на сбор всей необходимой информации, изучение стандартов, спецификаций и т.п.
А вообще, мне кажется, что Sim дал толковый совет: зачем реализовывать уже реализованное, когда можно взять почти готовое и доработать?..
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 26 май 2009, 16:03
- Репутация: 0
Re: GDAL API: Привязка растра
Я остановился на библиотеке GDAL в первую очередь потому, что она работает с различными растровыми форматами файлов. В частности, меня интересовал формат GeoTIFF для хранения привязанного растра. Здесь-то как раз я не изобретаю велосипед. Стал дальше копать API, а там обнаружилось множество интересных функций, позволяющих например вычислить коэффициенты трансформации. Но по Вашей ссылке я глянул - очень интересненько! Там кстати написано, что в proj модуль геодезических расчетов - так себе.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 25 гостей