GeoTiffinfo:рассчет площади снимка без фона/нулевых значений

Кроме QGIS
Ответить
Syllion
Активный участник
Сообщения: 167
Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0

GeoTiffinfo:рассчет площади снимка без фона/нулевых значений

Сообщение Syllion » 16 апр 2015, 20:50

Собственно выкладываю в общий доступ свое поделие.
Поделие экспрементальное и до этого с gdal я вообще не работал.
Поделие позволяет рассчитывать площадь которую занимает снимок без учета нулевых значений (часто это черный цвет).

http://dlang.ru/files/GeoTiff_info.zip (7MB)
Программа выводит данные на консоль и больше пока ничего не умеет. Если кому-то пригодится будет хорошо. Если вдруг будет криво считать площадь -- сообщите.
Вложения
1.png
1.png (24.81 КБ) 2113 просмотров

ericsson
Гуру
Сообщения: 3250
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 706
Ваше звание: Вредитель полей

Re: GeoTiffinfo:рассчет площади снимка без фона/нулевых знач

Сообщение ericsson » 17 апр 2015, 06:50

А чем не угодила операция конвертирования растра в вектор с учетом nodata через gdal_polygonize.py и последующее вычисление площади скриптом из пяти строчек на том же Питоне?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: GeoTiffinfo:рассчет площади снимка без фона/нулевых знач

Сообщение SergeyRyzhkov » 17 апр 2015, 10:23

ericsson писал(а):А чем не угодила операция конвертирования растра в вектор с учетом nodata через gdal_polygonize.py и последующее вычисление площади скриптом из пяти строчек на том же Питоне?
А Вы могли бы привести эти строчки?
Для общего образования, да и для форума полезно будет. В данной теме будет два варианта решения задачи

Ariki
Гуру
Сообщения: 715
Зарегистрирован: 12 янв 2011, 22:40
Проекты: 1
Репутация: 289
Ваше звание:

Re: GeoTiffinfo:рассчет площади снимка без фона/нулевых знач

Сообщение Ariki » 18 дек 2015, 13:10

Можно уложиться в 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 байт) 79 скачиваний

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»