Угу, разрешение, мягко говоря, херовое. А осваивать Landsat население не хочет - простота ему дороже точности.
Собрать landsat по инструкции Zverik’а не сложно http://gis-lab.info/qa/landsat-tiles.html
Неплохое описание основных типов композитов http://gis-lab.info/qa/landsat-bandcomb.html
Это для вас просто. Или для меня. Или для Zverik-а. А четыре пятых присутствующих здесь перестанут читать, когда увидят первый раз слово “Линукс”. И на этом все кончится. Обсуждали уже…
да по инструкции с гислаба всё просто. Но только действительно линукс …
Наличие леса в интересующем районе можно глянуть хотябы на этом сайте https://fetch.astrodigital.com
Попробовал сгенерировать плавные полигоны. Порядок таков:
Нужен QGIS с модулем GRASS
- Выкачать с http://earthenginepartners.appspot.com/science-2013-global-forest/download_v1.1.html tiff, не помню какой, но вроде первый.
- Обрезать
- gdal_calc.py блаблабла --calc=“1*(A>1)” #если значение пиксела больше 1, то выставить его в 1, если меньше 1 - то выставить его в 0.
- gdal_sieve.py #убрать мелкие кусты
- gdal_polygonize.py #получается вектор, но с границами из прямых линий
- в GRASS v.generalize method=chaiken #получается вектор со сглаженными границами
- git clone --recursive https://github.com/pnorman/ogr2osm
- python ogr2osm/ogr2osm.py forest_generalised.shp #конвертация в .osm
- Открываю JOSM, копирую кусок границы большого участка тайги на отдельный слой данных, и вручную корректирую разные отроги леса.
http://www.openstreetmap.org/#map=13/43.4542/132.3072
Это всё можно склеить в одну последовательность в модуле QGIS Processing, только я не умею им пользоваться.
Что-то не очень точно получается. Граница с погрешностью гдето ±20 метров. Да и в некоторых местах наверно лучше по дорогам разрезать полигон.
хороший сценарий, будет время надо его рапробовать.
надеюсь наши гис-гуру займутся ентим преобразованием, вместо наполнения форума
20 метров хороший показатель для черновой закраски “пустых земель”, да и никто не запрещал потом подкорректировать по бингу мапбоксу сканексу.
Да, для массовой обрисовки нужно наверное придумать такой алгоритм, что бы полигоны бы сжимались внутрь где-нибудь на километр, и сильно упрощались. Тогда большие массивы будут залиты лесом, а их изрезанные границы - будут рисовать плагином FreeDraw по бингу.
Кстати интересно как это сработает с объектами с более чёткой границей вроде свежевспаханных полей. Мне кажется результат должен быть лучше.
Поделюсь своими радостью и граблями. Инструкция от Ильи-Зверика действительно очень простая (“оно работает!!!”). Однако я столкнулся с тем, что в репозиториях Ubuntu (14.04) оказалась старая версия QGis (2.0.1), которая выдавала странную ошибку Python при попытке запустить нарезку тайлов QTiles. Прописал в системе репозитории “от производителя” (http://qgis.org/ru/site/forusers/alldownloads.html#debian-ubuntu), поставил свежую версию QGis (2.10.1) - всё заработало. Вторая моя грабля из разряда copy-paste (чистая невнимательность) - по инструкции, в настройках QTiles рекомендуется выбрат формат jpg, а в строке для подключения в JOSM написано png. Но кто ж смотрит на такие мелочи…
Готовые тайлы (до 13 зума) с одного снимка заняли 57 МБ.
Спасибо BushmanK и Zverik за инструкции!
-del
Потому что нужно автоматизированное решение:
- Плагин для JOSM
- Ссылка на сервер тайлов ZXY которую можно вставить даже в iD
- что угодно простое
d1g и pfg21, я последний раз объясню, почему то, о чем вы говорите, малореально.
-
Данные Landsat 8 обновляются все время, и делать, например, сервер, на котором бы заранее были подготовлены тайлы, например, на целую область (в смысле, административную единицу) - бессмысленная трата места на сервере и времени, потому что до того времени, как кто-нибудь соберется воспользоваться этими данными, произойдут еще изменения и то, что там есть, устареет, а новых снимков там не будет.
-
Данные Landsat 8 - весьма объемная штука, так что одним только “выкачиванием последнего” на какую-то территорию можно забить любые имеющиеся винты - одна сцена - это 2Гб в несжатом виде.
-
Для маппинга разных вещей нужны снимки, которые сделаны в разное время года на одну и ту же территорию.
-
Выбор сцен - ручная задача в любом случае, потому что облака, низкий контраст и все такое. Если кто-то хоть раз пытался не требовать готового на форуме, а самостоятельно с этим поэкспериментировать, то он бы знал, что это так.
-
Для детекции разных природных объектов (леса, болота, кустарник, заливные луга и все такое) нужны композиты разных каналов. Это увеличивает и объем готового результата и объем работы.
-
Сборка композита - автоматизированный, но ручной процесс, потому что нужно подбирать параметры сжатия гистограммы исходя из визуальной различимости искомых объектов в сцене, которая зависит от кучи условий при съемке каждой конкретной сцены, иначе композит теряет кучу информации. Автоматика дает результат средней паршивости.
-
Софтина с “одной кнопкой” (почему не с одной, я описал уже выше) - возможна. Есть коммерческие аналоги, например, http://www.geosage.com/highview/features_landsat8.html Но это достаточно сложная штука, которая по объему разработки тянет на коммерческий продукт. И тут возникает вопрос: что проще, нескольким желающим перестать бояться командной строки и ImageJ и научиться делать простые вещи самостоятельно, или пресловутым профессионалам (только не в ГИС, а в разработке ГИС, что несколько разные вещи - к вторым лично я, например, себя точно не отношу, я сам - квалифицированный пользователь) напрячься и написать инструмент для особо ленивых?
-
Почему не “плагин для JOSM” из того, что сказано выше, должно быть очевидно, но я поясню: если такая программа будет существовать, то делать ее только для нужд узкого сообщества OSM абсолютно бессмысленно, это должен быть самостоятельный инструмент, которым смогут воспользоваться и другие.
Для тех, кто верит в одну кнопку, я приведу скриншот, который демонстрирует минимально необходимый набор инструментов настройки для сборки композита из Landsat 8, который существует в коммерческом продукте:
Меньше - не имеет смысла. Имеет смысл - больше.
Как вариант, можно это не делать, а просто сохранить в shape файл. В JOSM плагин OpenData его спокойно воспримет.
Есть ли рендеры отображающие вырубки landuse=logging?
OSMand отображает
В инструкции Zverik’а по сборке landsat похоже опечатка: после корекции цвета результат помещается в result2.tif, а все дальнейшие операции расписаны для result.tif.
Расскажу о своём способе векторизовать леса из проекта, указанного в первом посте. Может кому-то будет интересно.
Нам потребуется:
-
Квадраты леса treecover2000, взятые тут
-
QGIS (точнее gdal calc)
-
GlobalMapper (необязательно, уверен есть способ и в QGIS, но я его не изучал)
-
JOSM
-
JOSM-модуль Scanaerial
-
JOSM-модуль RemoveRedundantPoints (опционально)
Процесс подготовки:
-
Качаем квадраты нужной территории по ссылке выше.
-
Далее нужно пересчитать их с помощью команды gdal calc. Формулу я взял у trolleway тут, но с другим значением. Экспериментальным путём решил выставить 55, чтобы убрать лишние редколесья и оставить только густой лес и чтобы граница леса была поменьше. Использовал её через приложение OSGeo4W Shell, которое идёт в пакете с QGIS (может ещё как-то можно использовать gdal, не знаю). Итог такой (соответственно, ссылку на файл и полученный результат меняем под себя):
gdal_calc -A "D:\Downloads\Hansen_GFC2014_treecover2000_60N_130E.tif" --outfile="D:\Downloads\Hansen_GFC2014_treecover2000_60N_130Emod.tif" --calc="1*(A>55)"
-
Далее нам нужно порезать их на тайлы png с прозрачностью (transparency которая, такие тайлы очень удобно потом использовать). Про QGIS ничего не знаю, пошёл проще и использовал GlobalMapper (экспорт в веб-формат, тайлы OSM, png, transparent, без пустых тайлов, зум 12). Максимальный зум 12-й, больше нет смысла. Меньше делать есть смысл только для обзорной карты, в работе они не используются.
-
Готовые тайлы подключаем к JOSM. Ссылка:
tms[12]:file:/путь/до/тайлов/{zoom}/{x}/{y}.png
Я использую в связке со слоем Mapnik-a, что выглядит следующим образом: Это очень удобно, потому что можно оценить где леса уже отрисованы, а где нет (не всегда новые леса видны будут на Mapnike, поэтому придется увеличивать до максимума, чтоб они отрисовались. А лучше, конечно, просто скачать данные, например через Overpass-запрос, чтоб точно не наделать дублей).
-
Устанавливаем Scanaerial как написано тут. Затем редактируем scanaerial.cfg под наши нужды:
в разделе [WMS] устанавливаем:fixedzoomlevel = 12
и добавляем наш “сервер” -
server_api = tms server_name = Hansen GFC2015 treecover2000 server_url = file:/путь/до/тайлов/{zoom}/{x}/{y}.png
На все остальные строчки в начале ставим #, чтоб они не учитывались.
Настройки раздела [SCAN] методом проб и ошибок я выбрал для себя следующие:[SCAN] douglas_peucker_epsilon = 0.60 deactivate_simplifying = 0 colour_str = 30 maxfilter_setting = 5 size_limit = 30000
size_limit делайте под себя, из расчёта, что 1000 = квадрат 50.2 x 50.2 км. Если кусок замкнутого леса огромен и вы выставили, например, 10000, то ждать придётся долго (в моём случае конца процесса я не дождался, после 2.5 часов я сбросил просто). Если же кусок леса относительно небольшой, то хоть 100500+ ставь, он обработает только его и быстро. Поэтому у меня по умолчанию стоит 30000, когда наталкиваюсь на огромный кусок, ставлю 1000, делаю квадраты-мультиполигоны и склеиваю границы. Обработка полного куска 1000 на моём ноуте занимает 3-6 минут. 5000 как-то обрабатывались 45 минут.
И в разделе [TAGS] добавляем:natural = wood
и также всё остальное - #.
Процесс векторизации:
В JOSM вызываем инструмент Scanaerial (у меня это клавиша X) и тыкаем на кусок леса. Получится что-то типа: Далее чистим от мелких областей (которых процентов 90 в участниках отношений и которые почти все являются артефактами). Выделяем всё, что входит в мультиполигон, Поиск " areasize:-30000" (можно поэкспериментировать с числом) и отметить Найти в выделенном. Затем удалить новое выделенное. Я ещё упрощаю внешнюю линию с модулем RemoveRedundantPoints на max значении 53, а потом режу полученную линию если более 2000 точек остаётся в ней. На результат при имеющихся погрешностях это не сильно влияет, зато значительно сокращает количество точек. Если после всего этого мультиполигон по-прежнему велик, можно его разделить на несколько. Вот и всё, черновой вариант большого куска леса готов.
Также, так как данные от 2000 года, можно их сразу проверить. Подключаем в JOSM ещё один слой, который отображает изменения леса с 2000 по 2014:
tms[12]:http://earthengine.google.org/static/hansen_2014/loss_tree_gain/{zoom}/{x}/{y}.png
и смотрим те места, которые выделены красным (леса больше нет) и синим (новый лес вырос) цветом.
Параллельно, если хочется сразу качественно сделать, можно в фоне подгружать и Бинг-слой и делать финальную отрисовку по нему. И также подготовить слой с последними снимками Landsat-8. Я использую всё вместе сразу.
Вывод: на мой взгляд, очень удобный и простой способ черновой отрисовки больших массивов леса для дальнейшей ручной коррекции его краёв. Для 12 зума качество получается очень даже приемлемое. Таким образом я отрисовал Приморский и юг Хабаровского краёв. На это ушло примерно 6-8 дней по 2-4 часа в день (по бОльшей части из-за того, что много экспериментировал с разными настройками и способами). Несмотря на приличные (по меркам рисования 17-18 зумов) погрешности, качество автоотрисовки предложенным методом значительно выше в сравнении с быстрой ручной отрисовкой больших кусков леса (что видно даже на картинке выше). Небольшие массивы леса лучше всё же рисовать руками.
Пожалуй, процесс подготовки самый сложный. Потом процесс рисования и коррекции ничем не отличается от простого рисования в JOSM.
Спасибо за подробную инструкцию!
Здесь лучше добавить информацию о вырубках и приросте леса:
gdal_calc.py -A "treecover2000.tif" -B "gain.tif" -C "loss.tif" --outfile="treecover_with_gain_and_loss.tif" --NoDataValue=0 --calc="1*((1*(A>55)+B-C)>0)"