Страница 1 из 2
Как создать GeoTiff
Добавлено: 19 сен 2025, 00:28
whale
Всем привет,
подскажите
есть bmp файлы (карта) которую генерит прога, и известны географические координаты например 4-х углов, (в принципе можно вычислить всех точек)
как из этого создать файл GeoTiff наиболее простым способом и желательно встроить в программу на Buildere ?
Я так понимаю есть два способа :
1) использовать сторонние библиотеки (GDAL ? ) (как их прикрутить к проекту неясно )
2) вручную прописать все директории в файле Tiff (так и не нашел внятного описания где там что прописывать)
Может кто сталкивался покажет дорогу ?
Для меня второй вариант предпочтительнее, все прозрачно, никаких библиотек устанавливать никуда не надо.
Re: Как создать GeoTiff
Добавлено: 19 сен 2025, 12:15
AlexRomantsov
а ваша прога не может генерить вместе с bmp файл-спутник с геопривязкой, такой как world-файл (
https://gis-lab.info/qa/tfw.html)? Из этой пары потом не сложно получить GeoTiff, хоть через командную строчку gdal, хоть любым подручным ГИС.
Пример вызова gdal, файл 1map.bmp и рядом с ним 1map.bpw:
gdal_translate -of GTiff D:/temp/1map.bmp D:/temp/1map.tif
Содержимое bpw, что то вроде (если без поворотов):
0.00003659111904762 - сколько в точке по Х
0
0
-0.00003659111904762 - сколько в точке по Y
36.58674340522618706 - долгота левый нижний угол
54.7949135714404818 - широта левый нижний? или верхний, не помню, угол
Для совсем ленивых - есть утилитка gtt, конвертирующая в разные геопривязанные форматы:

- gtt.JPG (14.79 КБ) 907 просмотров
, только она с bmp не работает

Ей (да и всем конверторам) потребуется файл-спутник растра с геопривязкой, world (esry) или tab (mapinfo)
Re: Как создать GeoTiff
Добавлено: 19 сен 2025, 19:23
whale
Файл привязки генерировать может, правда не совсем ясно как обеспечивается поворот ,
наверно через С и D.
Еще не нашел gdal на 32-разрядную систему и как вообще его установить.
Я так понимаю придется на каждой машине его устанавливать что нереально.
Я тут нашел описание GeoTiff
https://gis-lab.info/docs/geotiff-1.8.2.pdf
пока вникаю, может получиться сразу прописать все дириктивы вручную ?
Можно вместо bmp генерировать tiff практически без разницы.
Я не пойму файл gdal_translate.exe можно просто взять отдельный без всяких установок библиотек или к нему идет какие то доп файлы и в одиночку он работать не будет?
Если он отдельный то можно просто прикрутить к программе.
Re: Как создать GeoTiff
Добавлено: 20 сен 2025, 11:49
_taras_
GeoTiff прекрасно формирует программа R с библиотеками терра и иже с ними. Возможно через неё Вы можете решить свою задачу.
Re: Как создать GeoTiff
Добавлено: 20 сен 2025, 13:00
whale
Решил пока попробовать напрямую в директории писать.
Re: Как создать GeoTiff
Добавлено: 22 сен 2025, 11:54
whale
Научился вручную генерировать tiff файлы, чтобы превратить их в geo осталось заполнить всего три поля,
вроде все понятно но как вычислять параметры c и d поворота непонятно.
Re: Как создать GeoTiff
Добавлено: 22 сен 2025, 12:25
AlexRomantsov
А поворота может и не быть. Если ваши геоданные сразу хранятся в географических (или в любых других, но карта в географических), или рендер ее фрагмента производится в географических, с "квадратным" вертикально-горизонтальным охватом по градусной сетке, тогда и bmp получится прямоугольной, без поворота. Проверяйте. Откройте результат (GeoTIFF) где нибудь (хоть в qgis), просмотрите, координаты точек сравните.
Аналогично, без поворота, получится, если рендер будете делать из цилиндрической проекции (типа 3857 Pseudo-Mercator)
Re: Как создать GeoTiff
Добавлено: 22 сен 2025, 12:41
AlexRomantsov
С поворотом получится в следующем случае: у вас растровый планшет в местной прямоугольной системе координат. Его геопривязка в географической СК - как раз с поворотом, тем большим, чем дальше планшет от осевого меридиана местной СК
Re: Как создать GeoTiff
Добавлено: 23 сен 2025, 01:39
whale
Я тут почитал спецификацию на GeoTiff по моему ее спецом написали так чтобы никто ничего не понял.
Есть какое то внятное описание какие куда директории поля и данные писать в tiff чтобы он стал Geo?
Поиски не дали пока результатов, все бездумно пользуются библиотеками, у меня задача напрямую
прописать.
В моем случае есть просто снимок местности прямоугольный, обычно длинной 100-200м, шириной 200м, под разными углами к северу, в котором известны координаты всех точек.
Я так понимаю там не так все сложно прописать но нужно внятное объяснение.
Неужели не нашлось у нас героя который бы разобрался в этом вопросе ?
Re: Как создать GeoTiff
Добавлено: 23 сен 2025, 11:17
trir
посмотри исходники gdal
Re: Как создать GeoTiff
Добавлено: 23 сен 2025, 11:56
whale
Я смотрел, там пол года в них разбираться надо.
Re: Как создать GeoTiff
Добавлено: 23 сен 2025, 12:21
AlexRomantsov
whale писал(а): ↑23 сен 2025, 01:39
Неужели не нашлось у нас героя который бы разобрался в этом вопросе ?
Таких полно - авторов библиотек типа gdal. Которые, в свою очередь, используют библиотеки типа PROJ (чем облегчают себе жизнь, доверяя чужим компетенциям).
GeoTIFF - не единственный целевой формат, есть еще штук тридцать полезных. Если самому - придется геройствовать со всеми тридцатью. Причем, геройствовать не только с координатами углов (геопривязкой), есть гриды с float значениями растра (не целочисленного цвета, а дробного типа высоты), надо уметь хранить альфа-канал (области без данных), надо хранить описания проекций и параметров перехода, хранить пирамиды (все это в т.ч. в GeoTIFF), тайловые сетки и много чего еще. А спецификации не вечные, регулярно обновляются, еще и за этим гоняться.
Уважаю Ваш подход, в 90-е насмотрелся на таких самоотверженных героев. В итоге - все брошено (в силу технологического старения программ)
Re: Как создать GeoTiff
Добавлено: 23 сен 2025, 20:59
whale
Тайловые сетки , пирамиды и высоты мне не нужны ,
альфа канала тоже наверно не надо, растр у меня серый 8 бит,
у меня растры водной поверхности,
нормальное описание бы найти всего этого дела а там разберемся.
Re: Как создать GeoTiff
Добавлено: 24 сен 2025, 02:01
whale
Пока понял что:
Все начинается с директории 34735 GeoKeyDirectoryTag, где указан адрес (сдвиг) на начало массива ключей, например (мл сначала)
0xAF, 0x87, 0x03, 0, 0x20, 0, 0, 0, 0x98, 0x18, 0, 0 -> последние 4 байта адрес массива ключей,
по указанному адресу сначала идет заголовок (все данные в нем сгруппированы по 8 байт)
заголовок :
1,0, 1,0, 2,0, 6,0 - > последние два байту указывают на кол-во ключей (тут 6 шт).
далее идут ключи тоже по 8 байт:
номер / адрес / счетчик /сдвиг
1024, 0, 1, 2 -> 1024 номер ключа, 0-> значение прописано в ключе, 1-> одно значение, 2-> само значение, те ключ 1024 =2 ( 0, 1, 2 -> каждое значение состоит из двух байт)
след ключ :
1026, 34737,12, 0 -> ключ номер 1026, значение указано в теге 34737 (в котором указан адрес массива значений), смещение в этом массиве 0, длинна 12.
итд
довольно запутано но в принципе понятно.
Re: Как создать GeoTiff
Добавлено: 24 сен 2025, 14:57
trir
сделай GDAL'ом - посмотри что поменялось