Собственно выкладываю в общий доступ свое поделие.
Поделие экспрементальное и до этого с gdal я вообще не работал.
Поделие позволяет рассчитывать площадь которую занимает снимок без учета нулевых значений (часто это черный цвет).
http://dlang.ru/files/GeoTiff_info.zip (7MB)
Программа выводит данные на консоль и больше пока ничего не умеет. Если кому-то пригодится будет хорошо. Если вдруг будет криво считать площадь -- сообщите.
GeoTiffinfo:рассчет площади снимка без фона/нулевых значений
-
- Активный участник
- Сообщения: 167
- Зарегистрирован: 23 сен 2009, 16:09
- Репутация: 0
GeoTiffinfo:рассчет площади снимка без фона/нулевых значений
- Вложения
-
- 1.png (24.81 КБ) 5642 просмотра
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: GeoTiffinfo:рассчет площади снимка без фона/нулевых знач
А чем не угодила операция конвертирования растра в вектор с учетом nodata через gdal_polygonize.py и последующее вычисление площади скриптом из пяти строчек на том же Питоне?
- SergeyRyzhkov
- Гуру
- Сообщения: 909
- Зарегистрирован: 02 июл 2014, 19:13
- Репутация: 203
- Ваше звание: GP-экотеррористы
- Откуда: Санкт-Петербург
- Контактная информация:
Re: GeoTiffinfo:рассчет площади снимка без фона/нулевых знач
А Вы могли бы привести эти строчки?ericsson писал(а):А чем не угодила операция конвертирования растра в вектор с учетом nodata через gdal_polygonize.py и последующее вычисление площади скриптом из пяти строчек на том же Питоне?
Для общего образования, да и для форума полезно будет. В данной теме будет два варианта решения задачи
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: GeoTiffinfo:рассчет площади снимка без фона/нулевых знач
Можно уложиться в 5 строчек и без gdal_polygonize.py:
Во вложении чуть более полезная версия скрипта, которая умеет подсчитывать суммарную площадь значений, попадающих в некоторый диапазон. Параметры: путь к файлу растра, номер канала и необязательные нижняя (инклюзивная) и верхняя (неинклюзивная) границы интервала значений.
Код: Выделить всё
import sys, osgeo.gdal
r = osgeo.gdal.Open(sys.argv[1])
g, b = r.GetGeoTransform(), r.GetRasterBand(int(sys.argv[2]))
a, n, k = b.ReadAsArray(), b.GetNoDataValue(), abs(g[1] * g[5] - g[2] * g[4])
print(k * a[a != n].size if n is not None else k * a.size)
Во вложении чуть более полезная версия скрипта, которая умеет подсчитывать суммарную площадь значений, попадающих в некоторый диапазон. Параметры: путь к файлу растра, номер канала и необязательные нижняя (инклюзивная) и верхняя (неинклюзивная) границы интервала значений.
- Вложения
-
- rasterarea.py
- Cкрипт на Python
- (652 байт) 596 скачиваний
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость