Тайлы из Landsat 8: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
м (данных)
м (→‎Паншарпенинг: опечатка)
 
(не показано 27 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Статья|Черновик}}
{{Статья|Опубликована|landsat-tiles}}
 
{{Аннотация|Упрощённая инструкция по получению и обработке снимков Landsat 8 и подготовке из них тайлов}}


Главное свойство данных ДЗЗ Landsat 8 — свободная лицензия, которая позволяет обрисовывать снимки для, в частности, OpenStreetMap. Эта статья не вдаётся в теорию, но содержит шаги для поиска и обработки снимков Landsat 8 и их превращения в тайлы для публикации или обрисовки в JOSM.
Главное свойство данных ДЗЗ Landsat 8 — свободная лицензия, которая позволяет обрисовывать снимки для, в частности, OpenStreetMap. Эта статья не вдаётся в теорию, но содержит шаги для поиска и обработки снимков Landsat 8 и их превращения в тайлы для публикации или обрисовки в JOSM.
Некоторые шаги будет непросто выполнить в ОС Windows. Для пользователей этой системы советуем [http://gis-lab.info/qa/qgis-osgeo4w.html установить OSGeo4W] и делать [http://courses.neteler.org/processing-landsat-8-data-in-grass-gis-7-rgb-composites-and-pan-sharpening/ паншарпенинг и цветовую коррекцию в GRASS].


== Получение снимка ==
== Получение снимка ==
Строка 9: Строка 13:
http://libra.developmentseed.org
http://libra.developmentseed.org


Напоминаем, что каждый снимок весит 500-800 мегабайт в архиве (2 гигабайта вне его), и для обработки потребуются ещё гигабайта четыре.
Напоминаем, что каждый снимок весит 500-800 мегабайт в архиве (2 гигабайта вне его), и для обработки потребуются ещё гигабайта четыре. Под линуксом файл распаковывается такой командой:
 
tar -xjvf LC*.tar.bz


В архиве вы получите [https://www.mapbox.com/blog/putting-landsat-8-bands-to-work/ 11 каналов] и слой QA, на котором отмечены точки без информации о земной поверхности (например, облака). Мы будем работать с каналами 2, 3, 4 (синий, зелёный, красный) и 8 (ч/б с 15-метровым разрешением).
В архиве вы получите [http://geektimes.ru/post/183416/ 11 каналов] и слой QA, на котором отмечены точки без информации о земной поверхности (например, облака). Мы будем работать с каналами 2, 3, 4 (синий, зелёный, красный) и 8 (ч/б с 15-метровым разрешением).


== Паншарпенинг ==
== Паншарпенинг ==


У нас есть 3 канала с разрешением 15 м/пк и один — 30 м/пк. Паншерпенинг — это объединение их всех в один цветной снимок максимального разрешения. Раньше это делали длинным цепочками команд GDAL или ImageMagick, но нам повезло. Умные люди из GINA (университет Аляски) написали [https://github.com/gina-alaska/dans-gdal-scripts/ скрипт], и теперь достаточно одной команды. Набор аляскинских скриптов есть в большинстве дистрибутивов, поищите пакет ''dans-gdal-scripts''. Команда такая:
У нас есть 3 канала с разрешением 30 м/пк и один — 15 м/пк. Паншарпенинг — это объединение их всех в один цветной снимок максимального разрешения. Раньше его делали длинным цепочками команд GDAL или ImageMagick, но нам повезло. Умные люди из GINA (университет Аляски) написали [https://github.com/gina-alaska/dans-gdal-scripts/ скрипт], и теперь достаточно одной команды. Набор аляскинских скриптов есть в большинстве дистрибутивов, поищите пакет ''dans-gdal-scripts''. Команда такая:


  gdal_landsat_pansharp -pan B8.TIF -ndv 0 -o result.tif \
  gdal_landsat_pansharp -pan B8.TIF -ndv 0 -o result.tif \
  -rgb B4.TIF -rgb B3.TIF -rgb B2.TIF -lum B3.TIF 0.5 -lum B4.TIF 0.5
  -rgb B4.TIF -rgb B3.TIF -rgb B2.TIF -lum B3.TIF 0.5 -lum B4.TIF 0.5


Я опустил длинные идентификаторы снимков, вида «LC81850172014281LGN00». С ними будет длиннее и менее понятно:
Здесь опущены длинные идентификаторы снимков, вида «LC81850172014281LGN00». Для удобства пригодится такой скрипт:


  gdal_landsat_pansharp -pan LC81850172014281LGN00_B8.TIF -ndv 0 -o result.tif \
BASE=LC81850172014281LGN00
-rgb LC81850172014281LGN00_B4.TIF -rgb LC81850172014281LGN00_B3.TIF -rgb LC81850172014281LGN00_B2.TIF \
  gdal_landsat_pansharp -pan ${BASE}_B8.TIF -ndv 0 -o result.tif \
-lum LC81850172014281LGN00_B3.TIF 0.5 -lum LC81850172014281LGN00_B4.TIF 0.5
  -rgb ${BASE}_B4.TIF -rgb ${BASE}_B3.TIF -rgb ${BASE}_B2.TIF \
  -lum ${BASE}_B3.TIF 0.5 -lum ${BASE}_B4.TIF 0.5


Что тут происходит? Первые три параметра передают панхроматический канал (восьмой), значение «нет данных» и имя выходного файла. Следующая тройка с <code>-ref</code> — каналы для красного, зелёного и синего цветов. В Landsat 8 им соответствуют 4, 3 и 2, но можно выбрать другие, из [http://gis-lab.info/qa/landsat-bandcomb.html невидимых областей спектра].
Что тут происходит? Первые три параметра передают панхроматический канал (восьмой), значение «нет данных» и имя выходного файла. Следующая тройка с <code>-rgb</code> — каналы для красного, зелёного и синего цветов. В Landsat 8 им соответствуют 4, 3 и 2, но можно выбрать другие, из [http://gis-lab.info/qa/landsat-bandcomb.html невидимых областей спектра].


Наконец, параметры <code>-lum</code> корректируют наложение цвета на панхроматический канал. [https://github.com/gina-alaska/dans-gdal-scripts/wiki/Gdal_landsat_pansharp Описание алгоритма] слишком сложное, мы взяли коэффициенты из [https://gist.github.com/dwtkns/d18828165160384d0fe1 этих функций] Дерека Уоткинса.
Наконец, параметры <code>-lum</code> корректируют наложение цвета на панхроматический канал. [https://github.com/gina-alaska/dans-gdal-scripts/wiki/Gdal_landsat_pansharp Описание алгоритма] слишком сложное, мы взяли коэффициенты из [https://gist.github.com/dwtkns/d18828165160384d0fe1 этих функций] Дерека Уоткинса.
Строка 32: Строка 39:
== Коррекция цвета ==
== Коррекция цвета ==


Белую дымку удалить непросто. В GDAL нет команды для обработки цвета, подобной вкладке в QGIS, но тот же аляскинском наборе содержит скрипт, выдающий приемлемый результат:
Снимок после паншарпенинга получится либо весь в белой дымке, либо невозможно тёмный. Для его использования обязательна коррекция цвета, хотя бы методом автоматического растягивания гистограммы.
 
=== Автоматически ===
 
В GDAL нет команды для обработки цвета, подобной вкладке в QGIS, но тот же аляскинском наборе содержит скрипт, выдающий приемлемый результат:


  gdal_contrast_stretch -ndv 0 -percentile-range 0.05 0.95 result.tif result2.tif
  gdal_contrast_stretch -ndv 0 -percentile-range 0.05 0.95 result.tif result2.tif
Строка 38: Строка 49:
Доли отбрасываемых цветов можно покрутить на ±0.03: чем ближе к 0-100, тем темнее получается картинка, но тем больше деталей сохраняется.
Доли отбрасываемых цветов можно покрутить на ±0.03: чем ближе к 0-100, тем темнее получается картинка, но тем больше деталей сохраняется.


== Тайлы ==
=== В графическом редакторе ===
 
Раз tif — обычная картинка с доп. полями, можно открыть его в [http://imagej.nih.gov/ij/ ImageJ] или ином редакторе и подкрутить контраст вручную, акцентируя нужные полосы. Чтобы сохранить геопривязку, понадобятся программы из пакета ''libgeotiff'' (иногда ''geotiff-bin''). Экспорт геопривязки в файл:
 
listgeo result.tif > result.geo
 
Восстановление геопривязки для отредактированного файла (сохранять нужно, понятно, тоже в формате TIFF):
 
geotifcp -g result.geo edited.tif edited_geo.tif
 
== Изображение ==
 
Если снимок нужен для иллюстрирования, а не для обрисовки, можно просто взять файл tif: этот формат читается всеми. Как вариант, с помощью ImageMagick можно из него сделать более удобный jpeg:


В комплекте GDAL есть программа для создания тайлов из геопривязанного растра:
convert result.tif -quality 85 result.jpg


gdal2tiles.py -r lanczos -z 6-13 -a 0 result.tif tiles
Программа выдаст несколько предупреждений об «unknown field with tag». Это нормально: она не умеет читать поля TIFF с геопривязкой, и пропускает их.


Она работает медленно, неправильно вычисляет границы растра, тайлы сохраняет только в PNG и выдаёт странные ошибки во время работы. Но результат выдаёт.
== Тайлы ==


Чтобы подключить слой в JOSM, скопируйте строку для него из демонстрационной страницы, либо напишите сами:
=== С помощью GDAL ===


tms[13]:file:///home/user/путь/к/тайлам/{z}/{x}/{y}.png
В комплекте GDAL есть программа для создания тайлов из геопривязанного растра:


Для Windows путь записывается чуть по-другому:
gdalwarp -t_srs EPSG:3857 result.tif result_merc.tif
gdal2tiles.py -r lanczos -z 6-13 -a 0 result_merc.tif tiles


tms[13]:file:///C:/путь/к/тайлам/{z}/{x}/{y}.png
Она работает очень медленно, сохраняет тайлы только в PNG и выдаёт странные ошибки во время работы. Альтернатива — QTiles.


== Загрузка в QGIS ==
=== В QGIS ===


Собранный растр можно обработать в QGIS, а не запускать дополнительные скрипты. Если не правили контраст скриптом, в свойствах растрового слоя, во вкладке «Стиль» нужно выбрать «Среднее ± отклонение × 2», нажать кнопку «Загрузить» — и «OK».
Собранный растр можно обработать в QGIS, а не запускать дополнительные скрипты. Если не правили контраст скриптом, в свойствах растрового слоя, во вкладке «Стиль» нужно выбрать «Среднее ± отклонение × 2», нажать кнопку «Загрузить» — и «OK».
Строка 62: Строка 86:
Тайлы рекомендуем делать в формате jpeg, до 13 масштаба. Демонстрационную html-страницу придётся поправить, заменив расширение тайлов на jpg. В JOSM тайлы подключаются так же, как и раньше, только поправьте расширение.
Тайлы рекомендуем делать в формате jpeg, до 13 масштаба. Демонстрационную html-страницу придётся поправить, заменив расширение тайлов на jpg. В JOSM тайлы подключаются так же, как и раньше, только поправьте расширение.


== Изображение ==
=== Подключение в JOSM ===
 
Чтобы подключить слой в JOSM, скопируйте строку для него из демонстрационной страницы, либо напишите сами:
 
tms[13]:file:///home/user/путь/к/тайлам/{zoom}/{x}/{y}.png
 
Для Windows путь записывается чуть по-другому:


Если снимок нужен для иллюстрирования, а не для обрисовки, можно просто взять файл tif: этот формат читается всеми. Как вариант, с помощью ImageMagick можно из него сделать более удобный jpeg:
tms[13]:file:///C:/путь/к/тайлам/{zoom}/{x}/{y}.png


convert result.tif -quality 85 result.jpg
Не забывайте проверять привязку по трекам.


== См. также ==
== См. также ==


* [http://www.imagico.de/map/landsat8.php Сравнение каналов Landsat 7 и 8 Кристофом Хорманном]
* [http://www.imagico.de/map/landsat8.php Сравнение каналов Landsat 7 и 8 Кристофом Хорманном]
* [http://blog.remotesensing.io/2013/04/pansharpening-using-a-handy-gdal-tool/ Pansharpening with a handy GDAL tool]
* [http://uafgina.tumblr.com/post/46725058295/landsat-8-ldcm-pan-sharpened-natural-color-i Landsat 8 / LDCM pan-sharpened natural color]
* [http://joelarson.com/landsat/2013/12/17/landsat-pan-sharpening-and-processing/ Эксперименты с каналами]
* [http://joelarson.com/landsat/2013/12/17/landsat-pan-sharpening-and-processing/ Эксперименты с каналами]
* [http://blog.remotesensing.io/2013/04/pansharpening-using-a-handy-gdal-tool/ Команды для Landsat 7]
* [http://landsat.usgs.gov/Landsat_Processing_Details.php Орторектифицирован ли снимок?] (обычно да)
* [https://www.mapbox.com/blog/processing-landsat-8/ Подготовка снимков в ImageMagick]
* [[Паншарпенинг данных Landsat 8 средствами свободного ПО]]

Текущая версия от 20:27, 28 августа 2015

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/landsat-tiles.html


Упрощённая инструкция по получению и обработке снимков Landsat 8 и подготовке из них тайлов

Главное свойство данных ДЗЗ Landsat 8 — свободная лицензия, которая позволяет обрисовывать снимки для, в частности, OpenStreetMap. Эта статья не вдаётся в теорию, но содержит шаги для поиска и обработки снимков Landsat 8 и их превращения в тайлы для публикации или обрисовки в JOSM.

Некоторые шаги будет непросто выполнить в ОС Windows. Для пользователей этой системы советуем установить OSGeo4W и делать паншарпенинг и цветовую коррекцию в GRASS.

Получение снимка

Раньше нужно было шоркаться по EarthExplorer, вводить параметры поиска, что-то выбирать. Спасибо DevelopmentSeed, много лет работающей с Landsat, теперь выбрать нужный снимок проще. Заходите, приближайте свою область, кликайте в точку, фильтруйте и скачивайте:

http://libra.developmentseed.org

Напоминаем, что каждый снимок весит 500-800 мегабайт в архиве (2 гигабайта вне его), и для обработки потребуются ещё гигабайта четыре. Под линуксом файл распаковывается такой командой:

tar -xjvf LC*.tar.bz

В архиве вы получите 11 каналов и слой QA, на котором отмечены точки без информации о земной поверхности (например, облака). Мы будем работать с каналами 2, 3, 4 (синий, зелёный, красный) и 8 (ч/б с 15-метровым разрешением).

Паншарпенинг

У нас есть 3 канала с разрешением 30 м/пк и один — 15 м/пк. Паншарпенинг — это объединение их всех в один цветной снимок максимального разрешения. Раньше его делали длинным цепочками команд GDAL или ImageMagick, но нам повезло. Умные люди из GINA (университет Аляски) написали скрипт, и теперь достаточно одной команды. Набор аляскинских скриптов есть в большинстве дистрибутивов, поищите пакет dans-gdal-scripts. Команда такая:

gdal_landsat_pansharp -pan B8.TIF -ndv 0 -o result.tif \
-rgb B4.TIF -rgb B3.TIF -rgb B2.TIF -lum B3.TIF 0.5 -lum B4.TIF 0.5

Здесь опущены длинные идентификаторы снимков, вида «LC81850172014281LGN00». Для удобства пригодится такой скрипт:

BASE=LC81850172014281LGN00
gdal_landsat_pansharp -pan ${BASE}_B8.TIF -ndv 0 -o result.tif \
 -rgb ${BASE}_B4.TIF -rgb ${BASE}_B3.TIF -rgb ${BASE}_B2.TIF \
 -lum ${BASE}_B3.TIF 0.5 -lum ${BASE}_B4.TIF 0.5

Что тут происходит? Первые три параметра передают панхроматический канал (восьмой), значение «нет данных» и имя выходного файла. Следующая тройка с -rgb — каналы для красного, зелёного и синего цветов. В Landsat 8 им соответствуют 4, 3 и 2, но можно выбрать другие, из невидимых областей спектра.

Наконец, параметры -lum корректируют наложение цвета на панхроматический канал. Описание алгоритма слишком сложное, мы взяли коэффициенты из этих функций Дерека Уоткинса.

Коррекция цвета

Снимок после паншарпенинга получится либо весь в белой дымке, либо невозможно тёмный. Для его использования обязательна коррекция цвета, хотя бы методом автоматического растягивания гистограммы.

Автоматически

В GDAL нет команды для обработки цвета, подобной вкладке в QGIS, но тот же аляскинском наборе содержит скрипт, выдающий приемлемый результат:

gdal_contrast_stretch -ndv 0 -percentile-range 0.05 0.95 result.tif result2.tif

Доли отбрасываемых цветов можно покрутить на ±0.03: чем ближе к 0-100, тем темнее получается картинка, но тем больше деталей сохраняется.

В графическом редакторе

Раз tif — обычная картинка с доп. полями, можно открыть его в ImageJ или ином редакторе и подкрутить контраст вручную, акцентируя нужные полосы. Чтобы сохранить геопривязку, понадобятся программы из пакета libgeotiff (иногда geotiff-bin). Экспорт геопривязки в файл:

listgeo result.tif > result.geo

Восстановление геопривязки для отредактированного файла (сохранять нужно, понятно, тоже в формате TIFF):

geotifcp -g result.geo edited.tif edited_geo.tif

Изображение

Если снимок нужен для иллюстрирования, а не для обрисовки, можно просто взять файл tif: этот формат читается всеми. Как вариант, с помощью ImageMagick можно из него сделать более удобный jpeg:

convert result.tif -quality 85 result.jpg

Программа выдаст несколько предупреждений об «unknown field with tag». Это нормально: она не умеет читать поля TIFF с геопривязкой, и пропускает их.

Тайлы

С помощью GDAL

В комплекте GDAL есть программа для создания тайлов из геопривязанного растра:

gdalwarp -t_srs EPSG:3857 result.tif result_merc.tif
gdal2tiles.py -r lanczos -z 6-13 -a 0 result_merc.tif tiles

Она работает очень медленно, сохраняет тайлы только в PNG и выдаёт странные ошибки во время работы. Альтернатива — QTiles.

В QGIS

Собранный растр можно обработать в QGIS, а не запускать дополнительные скрипты. Если не правили контраст скриптом, в свойствах растрового слоя, во вкладке «Стиль» нужно выбрать «Среднее ± отклонение × 2», нажать кнопку «Загрузить» — и «OK».

Отсюда же легко сделать тайлы с помощью модуля QTiles. Если его не видно в списке модулей, включите в настройках «также показывать экспериментальные модули». Если нет вкладки настроек — установите пакет qgis-python или подобный.

Тайлы рекомендуем делать в формате jpeg, до 13 масштаба. Демонстрационную html-страницу придётся поправить, заменив расширение тайлов на jpg. В JOSM тайлы подключаются так же, как и раньше, только поправьте расширение.

Подключение в JOSM

Чтобы подключить слой в JOSM, скопируйте строку для него из демонстрационной страницы, либо напишите сами:

tms[13]:file:///home/user/путь/к/тайлам/{zoom}/{x}/{y}.png

Для Windows путь записывается чуть по-другому:

tms[13]:file:///C:/путь/к/тайлам/{zoom}/{x}/{y}.png

Не забывайте проверять привязку по трекам.

См. также