geotiff

Не знаете, где задать вопрос? Задавайте здесь.
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: geotiff

Сообщение gamm » 04 окт 2015, 22:04

Ariki писал(а):Не обязательно разбивать на интервалы: можно оставить в файле 16-битные целочисленные высоты и к ним применить палитру.
в примере файл с разноцветной палитрой, 256 интервалов, палитра в файле - скорее всего, ничего другого туда выложить не получится

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

Re: geotiff

Сообщение Ariki » 04 окт 2015, 22:21

Да, я тоже посмотрел, долго не мог сообразить, как скачать этот файл в Firefox. Но, насколько я понял, это образец, что должно получиться, а у автора реальные данные с высотами, которые надо отобразить так же - какой-нибудь SRTM или ASTER GDEM. Впрочем, гадать бессмысленно.

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: geotiff

Сообщение gamm » 04 окт 2015, 22:27

процитируем ТС:
Хорошо, опишу ситуацию подробно: мне нужно залить файл на один сервер. На сервер можно загрузить только geoTIFF. Данный файл geoTIFF должен содержать значения высот (высоты могут быть больше 255). В качестве примера я скачала с этого сервера файл - geoTIFF..
ТС явно путает высоты и номера интервалов.

Wurtion
Новоприбывший
Сообщения: 11
Зарегистрирован: 14 авг 2015, 09:38
Репутация: 0

Re: geotiff

Сообщение Wurtion » 05 окт 2015, 07:23

Вот что я имею: массив с высотами, которые мне нужно впихнуть в файл tif. На выходе должно получиться полноценное цветное изображение. Выше прочитала совет с установление тега COLORMAP. Буду пробывать. Насчет BITSPERSAMPLE=8: я указала значение как и в примере.
Вложения
res.png
res.png (10.46 КБ) 6922 просмотра

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: geotiff

Сообщение gamm » 05 окт 2015, 08:08

Wurtion писал(а):Вот что я имею: массив с высотами, которые мне нужно впихнуть в файл tif.
вы так и не поняли, что "впихнуть" вам нужно не высоты, а картинку, которую сначала нужно сделать (задав интервалы и палитру это которая ColorMap длиной 256*3). И до тех пор у вас так и будет "черный квадрат Малевича", в полном соответствии с тем, что вы делаете

Wurtion
Новоприбывший
Сообщения: 11
Зарегистрирован: 14 авг 2015, 09:38
Репутация: 0

Re: geotiff

Сообщение Wurtion » 05 окт 2015, 09:50

И ещё параллельно вопрос: какой бы я тиф не создавала, ни один на geoserver не загружается. Пишет:

Could not list layers for this store, an error occurred retrieving them: Failed to create reader from file:///tmp/data_u0315/test.tif and hints null

Кто-нибудь сталкивался с этим?

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: geotiff

Сообщение gamm » 05 окт 2015, 14:33

попробуйте начать с простого - создайте небольшой файл с разноцветными полосками(bmp 256 colors, с палитрой), и т.д. Можно чего-нибудь нарисовать в paint, потом самой переписать в geotif (структура у bmp простая). Потом попробуйте сделать то же самое from scratch. И каждый раз смотрите, какие тэги создались у вас, и какие должны быть.

Wurtion
Новоприбывший
Сообщения: 11
Зарегистрирован: 14 авг 2015, 09:38
Репутация: 0

Re: geotiff

Сообщение Wurtion » 09 окт 2015, 15:26

Спасибо за совет! Изображение создать получилось! Можете мне объяснить тег формата *tif colorMap. Как его задавать?

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

Re: geotiff

Сообщение Ariki » 10 окт 2015, 23:16

Вот нагуглился пример на C#, но на C/C++ всё аналогично. Вам нужно сопоставить каждому возможному индексу (значению ячейки растра) 16-битные беззнаковые значения трёх компонент RGB.

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: geotiff

Сообщение gamm » 11 окт 2015, 05:37

Ariki писал(а):Вот нагуглился пример на C#, но на C/C++ всё аналогично. Вам нужно сопоставить каждому возможному индексу (значению ячейки растра) 16-битные беззнаковые значения трёх компонент RGB.
судя по размеру палитры, приведенному ТС на скрине, там RGB 8-бит х 3

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: geotiff

Сообщение gamm » 11 окт 2015, 05:47

Wurtion писал(а):Спасибо за совет! Изображение создать получилось! Можете мне объяснить тег формата *tif colorMap. Как его задавать?
прежде, чем задавать, его нужно создать. Это соответствие индексов интервалов цветам. Делите диапазон высот на интервалы (не исключено, что для данного сайта такое деление задано, смотрите доки), и каждому интервалу готовите цвет в виде тройки RGB. Например, интервал номер 1, диапазон высот 50-70, цвет зеленый, и т.д. Это и есть ColorMap (отображение индексов на RGB), но перевод высот в индексы - ваша задача, весь диапазон высот в индексы от 0 до 255.

Саму эту таблицу цветов можете скопировать готовую (из примера с сайта - в таблице 3*256=768 байтов), а вот как нарезать рельеф на интервалы - лучше поискать на сайте, для экспериментов сгодится нарезка

Код: Выделить всё

ind[i]=(int)(255*(H[i]-Hmin)/(Hmax-Hmin))
.

Ответить

Вернуться в «Я новичок!»

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

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