Я не знаю, это не ко мне вопрос. Но картинка такая зелёная именно чтобы выглядело хоть как-то прилично в условиях нехватки цветов в исходнике.
IRS фотографировался без красного канала, так что это невозможно.
Без синего.
IRS LISS-IV
Band 2 (green) 520-590 nm
Band 3 (red) 620-680 nm
Band 4 (NIR) 770-860 nm
А то что показывает maps.mail.ru и яндекс это композит этих каналов ?
Я видел пример полного набора каналов KOMPSAT-2 (1m pan, 4m blue/green/red/nir),
т.е. сравним по характеристикам.
Естественно не на территории России Должен честно сказать, что чудо индийской техники,
мягко говоря, отдыхает.
А как они тогда такую картинку получили
pseudocolor.
А то что показывает maps.mail.ru и яндекс это композит этих каналов ?
Яндекс в основном показывает IRS в чистом виде.
По сути вопроса: попробовал классифицировать по irs (rgb) + landsat (p + 1-7). Лес хорошо детектится, думаю можно спасти куски размером 20-30 метров по короткой стороне, типы лесов у меня пока различить не получилось. Вода тоже неплохо.
Вода очень хорошо распознается, если есть “реальный” синий канал.
Я попробовал сделать классификацию полной сцены ландсата (20000x20000)
точно так, как описано в 1 статье
(только каналы 2, 4, 5 + 8 + brovey), но используя в качестве тренинговой карты саму CORINE в
тех частях сцены, которые находятся на территории Финляндии и Эстонии.
Результат очень интересный, ошибки есть, но легко объяснимые.
Из полного набора 44 классов присутствовали 28.
Мелких рек не видно совсем.
Все три типа леса очень качественны.
Болотами торфяными/обычными, полями разных типов тоже вполне доволен.
Сейчас попробую использовать все каналы landsat.
i.gensigset работал больше суток на Opteron 2.7GHz,
multithreaded версия бы тут не помешала,
для машины с 16/32 процессорами
i.smap тоже думал около 5 часов.
Полный скрипт надо будет причесать и сохранить в wiki.
Ну я немного с другой стороны пошел - мне интересны мелкие детали и точная привязка - я взял кусок знакомый мне с детства.
Глянул на импорт CORINE в osm, так в ужас пришел, - там по-моему какая-то каша, хотя наверное я чего-то не понял просто.
Все после i.gensigset по идее параллелится, но я даже боюсь представить сколько времени уйдет на фильтрацию геометрии, если i.smap 5 часов.
А где можно прочитать про три типа леса? Какие вообще выделяют? Есть ли какая-то общепринятая грань между “кустарником” и “лесом”?
Все после i.gensigset по идее параллелится, но я даже боюсь представить сколько времени уйдет на фильтрацию геометрии, если i.smap 5 часов.
Я пока не буду спешить с импортом, а постараюсь сравнить результат с классификацией других сцен.
Тем более что сначала надо поправить границу, чтобы не залезать в Финляндию и Эстонию.
Больше всего конечно будет мешать недоделанность фильтра облаков и теней в GRASS.
А где можно прочитать про три типа леса? Какие вообще выделяют? Есть ли какая-то общепринятая грань между “кустарником” и “лесом”?
Вот эти три типа:
GRID_CODE|CLC_CODE|LABEL1|LABEL2|LABEL3|RGB
23|311|Forest and semi natural areas|Forests|Broad-leaved forest|128-255-000
24|312|Forest and semi natural areas|Forests|Coniferous forest|000-166-000
25|313|Forest and semi natural areas|Forests|Mixed forest|077-255-000
Класс для кустарников есть, но при моем подходе к проблеме деление между “кустарником” и “лесом” (и остальными) сделали для меня соседи в ЕС
Моя статистика по 28 классам (полный лист clc_legend.csv здесь http://www.eea.europa.eu/data-and-maps/data/corine-land-cover-2006-clc2006-100-m-version-12-2009 ):
GRASS 6.4.0RC4 (EPSG_32636):/mnt/landsat/036-465 > r.stats -alc input=corine_class_brovey_2_4_5
100%
1 210277919.812500 1035533
2 66419713.125000 327090
3 7937307.000000 39088
4 19823773.500000 97624
5 60542475.187500 298147
6 351572868.562500 1731353
7 32638032.562500 160729
8 26583318.000000 130912
10 341322882.750000 1680876
11 5792560.875000 28526
12 304505214.750000 1499564
18 700196051.250000 3448180
20 474169619.250000 2335092
21 29329535.250000 144436
23 1864972907.437500 9184231
24 6499529263.687500 32007531
25 2505811962.375000 12340102
26 950758525.125000 4682098
27 896530887.562500 4415049
29 195257792.812500 961565
30 50161717.125000 247026
32 215461496.250000 1061060
35 756961157.812500 3727725
36 533376146.250000 2626660
37 173122965.000000 852560
40 138202103.812500 680589
41 12247022650.500000 60311592
44 4501538844.187500 22168243
* no data 34593980718.937500 170361247
Большие ошибки тут (что неудивительно, надо убирать из спиcка)
6|124|Artificial surfaces|Industrial, commercial and transport units|Airports|230-204-230
озера-моря надо объединять в 1 клаcс, и добавлять в маску просеки/буферы крупных дорог (“Скандинавия” сильно портит дело), ЛЭП и газопроводов.
A man_made=cutline вообще чем-нибудь рендерится? А то уже сильно хочется.
Кстати, наткнулся на примере маньякизма:
http://www.openstreetmap.org/?lat=53.0685&lon=52.1074&zoom=13&layers=B000FTF
Этакая комбинация cutline и разрывов в одном флаконе.
A man_made=cutline вообще чем-нибудь рендерится? А то уже сильно хочется.
Напишите тикет в http://trac.openstreetmap.org/query?component=mapnik&order=id&desc=1
A man_made=cutline вообще чем-нибудь рендерится? А то уже сильно хочется.
Кстати, наткнулся на примере маньякизма:
http://www.openstreetmap.org/?lat=53.0685&lon=52.1074&zoom=13&layers=B000FTF
Этакая комбинация cutline и разрывов в одном флаконе.
Это я эксперименты ставил Там еще скоро номера кварталов появятся…
Наконец сравнил 6 канальную классификацию с 2-4-5-brovey, налицо улучшение распознавания того, что связано с водой (в основном болота),
но и ухудшение точности. Есть принципиальные проблемы, например, каким же должно быть разрешение распознанных объектов,
чтобы не положить на лопатки рендереры, гармины и прочие руссы. Так же есть необходимость порезать “хвойные” мультиполигоны на куски,
иначе импорт в OSM будет просто невозможен. Но это наверное заслуживает особой темы.
Какого размера штатный квартал леса? 2х2 км? Меньше? Больше? Может на столько и нарезать лесную массу?
около Екатеринбурга в основном с шагом в 1 км. Но не всегда ровно, а иногда это совсем не квадраты, а откровенные трапеции
По сути вопроса: попробовал классифицировать по irs (rgb) + landsat (p + 1-7).
Использовал свою старую 6 канальную сигнатуру (30 m/pix) из glcf для обработки с помощью i.smap склейки вот этих 2 сцен
http://edcsns17.cr.usgs.gov/cgi-bin/browse/browse?debug=3&ds_id=landsatetm&ds_path=186/17/2002/LE7186017000223151.jpg
и
http://edcsns17.cr.usgs.gov/cgi-bin/browse/browse?debug=3&ds_id=landsatetm&ds_path=186/18/2002/LE7186018000223151.jpg
Классифицированный 25000x20000 geotiff занимает около 17МБ, думаю, куда бы его залить, чтобы люди поглядели
стоит ли игра свеч. Для тех кто находится в похожей природной зоне и схожим зенитным углом солнца (чтобы не корректировать
BRDF http://www-modis.bu.edu/brdf/brdfexpl.html ) можно обойтись и без i.getsigset
Для 15 m/pix 7 канальной классифификации решил убрать радиометрически малоосмысленные категории
как Port areas, Airports, снизив таким образом число классов до 20.
i.getsigset думает уже 4 суток, использует 16GB RAM, обработаны 12 классов.
Другой интересный эксперимент это нормировка 30 m/pix каналов и перемножение их на панхроматический канал (что-то типа Brovey)
с последующей 15 m/pix 7 канальной классифификацией.
Работает быстро, но результаты по болотам плохие.
Кстати, сравнение картинок по годам показывает местами сплошную варварскую вырубку леса в погранзоне и других малодоступных
местах.
Кстати, сравнение картинок по годам показывает местами сплошную варварскую вырубку леса в погранзоне и других малодоступных местах.
Увы, для этого даже спутниковых сведений не нужно - возле Кингисеппа в сторону Гдова прямо вдоль шоссе вырублены огромные площади леса. А уж что творится “в глубинке” - без слез не скажешь - там каждую сосну чуть ли не “в лицо” с детства знал. И брошено огромное количество гнить. Сволочи.
Sorry за офф.
Кому интересно посмотреть как выглядит тестовая 30 m/pix классификация, вот geotiff
http://rapidshare.com/files/364119721/corine_class_all6_z36sig_bl512_recoded.tif.html
Кому интересно посмотреть как выглядит тестовая 30 m/pix классификация, вот geotiff
http://rapidshare.com/files/364119721/corine_class_all6_z36sig_bl512_recoded.tif.html
А где можно посмотреть соответствие значений растра классам?
А где можно посмотреть соответствие значений растра классам?
GRASS 6.4.0RC4 (EPSG_32635):/mnt/raid0/data/tmp > r.stats -l lceugr100_00_pct_reclass
100%
1 Continuous urban fabric
7 Mineral extraction sites
8 Dump sites
10 Green urban areas
12 Non-irrigated arable land
18 Pastures
20 Complex cultivation patterns
21 Land principally occupied by agriculture, with significant areas of natural vegetation
23 Broad-leaved forest
24 Coniferous forest
25 Mixed forest
26 Natural grasslands
27 Moors and heathland
29 Transitional woodland-shrub
30 Beaches, dunes, sands
32 Sparsely vegetated areas
35 Inland marshes
36 Peat bogs
37 Salt marshes
41 Water bodies
* no data
[Raster MASK present]
Может быть тут кое-что можно еще убрать.
Теперь надо как.то бороться с недоделками grass: v.split не умеет работать с полигонами,
и непонятно как заставить v.build не создавать острова и ограничить число вертексов в area.
Можно пытаться сделать v.to.points, потом v.delaunay и прибить все треугольники принадлежащие островам.
При этом получится порядка 5 миллионов треугольников на сцену
Я конечно, сразу взялся за большую и очень сложную задачу, в местах с бескрайними полями все будет гораздо
проще, это видно даже по южной части моей сцены.
Но если всерьез думать о классификации IRS, то эти геометрические проблемы надо как-то решать.
С полигонами по 200000 нодов в “outer” и 10000 “inner” островов, cо своими вложенными полигонами
далеко не уедешь.
Другой вариант - это резать сцену на мелкие квадраты, обрабатывать и заливать данные по квадратам.
Тогда появятся сдвоенные ноды на границах, и нестыковки. Но это можно пережить.
Насчет лимита нодов, у меня были мысли делать это в PostGIS + pl/SQL.
- разделяем мультиполигоны так, чтобы у полигона был 1 outer, но по идее при классификации таких и быть то не должно.
- берем outer мультиполигона находим две ближайшие противоположные по порядку точки и получаем два куска outer-а.
- замыкаем эти куски получаем два полигона p1 и p2
- делаем intersect(mp, p1) и intersect(mp, p2) получая таким образом два куска исходного mp.
Пункт 2 скорее всего нужно будет подточить, чтобы не разрезать С-образный полигон по концам, т.е надо еще проверить лежит ли внутри outer-а.
Еще можно брать не строго противоположные узлы, а противоположные ± 10% или что-то подобное.