Работа GDAL на С++. Перепроецирование, ГК, RGB

Ответить
wowka1319
Участник
Сообщения: 93
Зарегистрирован: 04 дек 2013, 02:14
Репутация: 1

Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение wowka1319 » 04 фев 2014, 06:14

Есть GeoTiff.
Необходимо на C++ получить другую проекцию (EPSG:32654).
После этого нужен доступ по пикселам (нового перепроецированного в EPSG:32654) изображения как к географическим данным (широта долгота) так и цветовым (RGB).

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение Дмитрий Барышников » 04 фев 2014, 10:49

Я как раз на GISConf2012 проводил мастер класс по перепроецированию растров (жаль видео не осталось).
Если пройти на сайт конференции на мою страничку (http://gisconf.ru/ru/u25/) видим ссылочку: http://gis-lab.info/docs/gisconf/baryshnikov/gdal_mc.7z . В архиве в папке files\gdalmc\main.cpp код довольно плотно покрытый комментариями.
Кстати, на выходе не обязательно писать файл, можно воспользоваться драйвером mem (http://gdal.org/frmt_mem.html)

Ну а по поводу получения значений пикселов писал и давал код здесь:
1) перевод из пиксельных координат в географические: viewtopic.php?f=30&t=6603&p=35652&hilit ... orm#p35674
2) для обратного преобразования из географических в пиксельные используем функцию http://www.gdal.org/gdal_8h.html#ae5445 ... 8eddd8b64d
3) Для чтения блока пикселей в массив: http://www.gdal.org/classGDALDataset.ht ... b891a05743

P.S. Активность участников ГИС-Лаба удручает. С таким интересом (около 25 чел.) конфы в этом году может и не быть.

wowka1319
Участник
Сообщения: 93
Зарегистрирован: 04 дек 2013, 02:14
Репутация: 1

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение wowka1319 » 05 фев 2014, 22:27

Не могу собрать твой main.cpp из архива. Линкер ругается на отсутствие либ, реализующих следующие классы:
OGRSpatialReference
OGRLineString
OGRPolygon
OGRGeometry
GDALDataset
GDALRasterBand
GDALDriver
GDALWarpOperation
OGRSFDriverRegistrar
OGRFeatureDefn
OGRFeature
OGRDataSource
и функцию (насколько понимаю глобальную)
OGRCreateCoordinateTransformation(OGRSpatialReference*, OGRSpatialReference*).

Я в своих поделках-попытках (которые успешно собирались) линкую gdal_i.lib и geos_c.lib (уже не помню откуда взял инфу), но для твоего кода требуется что-то еще. Может, глядя на приведенный список классов, подскажешь чего не хватает? ибо в файлах к cmake из архива я так и не нашел этот список (вернее раскрытие параметра ${GDAL_LIBRARIES}), что меня сильно удивило - ведь VC++ нужно явно указывать список либ.

P.S: Черт возьми, какая же все-таки сложная эта либа GDAL, и никакой документации (пара жалких примеров и API List не в счет) - как так можно писать софт, не понимаю.

P.P.S: CMake, SCons, Ant... (никогда не любил эти всякие системы сборки за то, что их дохрена и КАЖДАЯ из них добавляет новую абстракцию, которая куда огромнее чем та которую она скрывает). Ну ладно, что-то я разворчался - накипело...

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение Дмитрий Барышников » 06 фев 2014, 22:13

Вопросы по сборке GDAL и компиляции совершенно не соответствуют теме. Это уже надо в новой теме спрашивать или хотя бы вот в этих:
1. viewtopic.php?t=10428
2. viewtopic.php?f=30&t=7469

Ну а следующие непонятные классы и структуры, перечисленные вами, суть являются самим GDAL:
1. http://gdal.org/annotated.html
2. http://gdal.org/ogr/annotated.html

wowka1319
Участник
Сообщения: 93
Зарегистрирован: 04 дек 2013, 02:14
Репутация: 1

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение wowka1319 » 08 фев 2014, 08:52

Огромное спасибо за материал. Я немного продвинулся благодаря коду в gdal_mc.7z, и на его основе (вернее удалив все, что не нужно) написал пример, но натолкнулся на ошибку трансформации гтифа. Лог огромный да и как его выводить в TXT я не знаю, поэтому я собрал пример, снабдил его необходимыми DLL и файлами (пути относительные), а также приложил исходник. Пожалуйста глянь и скажи что не так?
Вложения
gdal.part03.rar
(9.6 МБ) 421 скачивание
gdal.part02.rar
(10 МБ) 350 скачиваний
gdal.part01.rar
(10 МБ) 397 скачиваний

wowka1319
Участник
Сообщения: 93
Зарегистрирован: 04 дек 2013, 02:14
Репутация: 1

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение wowka1319 » 09 фев 2014, 13:32

Программа успешно открывает файл, но потом выдает ошибки в лог и стопорится. При этом новый (как бы перепроецированный) файл создается, но он весит 2 Гига (исходник = 64 Мб) и естественно не открывается ни в одной программе. В чем проблема - не знаю. Прилагаю логи, может по ним кто-нибудь разберется.
Вложения
log.txt
логи
(216.82 КБ) 616 скачиваний

wowka1319
Участник
Сообщения: 93
Зарегистрирован: 04 дек 2013, 02:14
Репутация: 1

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение wowka1319 » 09 фев 2014, 15:23

Поправка к предыдущему сообщению: программа не стопорится, она просто оооочень долго проводит перепроецирование и выходной геотиф получается в >1000 раз больше (гигабайты) входного (несколько мегобайт). И файл всеравно не открывается.

SlavaSm
Новоприбывший
Сообщения: 2
Зарегистрирован: 27 авг 2014, 14:54
Репутация: 0

Re: Работа GDAL на С++. Перепроецирование, ГК, RGB

Сообщение SlavaSm » 29 авг 2014, 09:14

Удалось разобраться почему так выходит? У меня 5 мб файл на входе превращается в 2.4Гб и более. Падает с сообщением:
10:56:52.049 Debug: nPixels 46733 nLines 111190
ERROR 1: Too many points (441 out of 441) failed to transform,
unable to compute output bounds.
Исходный размер изображения: 743x685x3

Ответить

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

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

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