Страница 1 из 1

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

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

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

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

Добавлено: 17 апр 2015, 06:50
ericsson
А чем не угодила операция конвертирования растра в вектор с учетом nodata через gdal_polygonize.py и последующее вычисление площади скриптом из пяти строчек на том же Питоне?

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

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

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

Добавлено: 18 дек 2015, 13:10
Ariki
Можно уложиться в 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)

Во вложении чуть более полезная версия скрипта, которая умеет подсчитывать суммарную площадь значений, попадающих в некоторый диапазон. Параметры: путь к файлу растра, номер канала и необязательные нижняя (инклюзивная) и верхняя (неинклюзивная) границы интервала значений.