2017-02-02 6 views
-3

Я пытаюсь выполнить следующий код:Как открыть геотипные изображения с помощью gdal в python?

from osgeo import gdal 
import sys 

# this allows GDAL to throw Python Exceptions 
src_ds = gdal.Open("fused.tif") 
src_ds.show() 

Но я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File ".../gdalopen1.py", line 5, in module src_ds.show() 
AttributeError: 'Dataset' object has no attribute 'show' 

Почему это происходит?

+0

Похоже "шоу" не существует для этого объекта. На странице [this] (https://pcjericks.github.io/py-gdalogr-cookbook/raster_layers.html) они открывают образ '* .tif', а затем' print gtif.GetMetadata() '. Это работает для вас? – JonesV

+2

Что вы ожидаете от метода '.show()'? Нарисуйте растр? Зачем? Где вы видели документацию по этому методу? Метод '.Open' * * успешно открыл растровый файл. Теперь, что вы хотите с этим сделать? – Spacedman

+0

Нам нужно прочитать изображения и отобразить изображение с плавным геотипом в python. вы можете объяснить, как читать изображение в массиве –

ответ

2

Вы уже открыли набор данных, как ответил Spacedman. GDAL не является библиотекой визуализации (в ее основе).

Вы можете прочитать данные с: data = src_ds.ReadAsArray()

А затем передать его на ваш любимый черчения библиотеке.

В качестве альтернативы вы можете просто вывести на более общий формат изображения (например, PNG) и использовать любой просмотрщик, который вам нравится отображать результат. vmin = 0 # minimum value in your data (will be black in the output) vmax = 1 # minimum value in your data (will be white in the output) ds = gdal.Translate('fused.png', 'fused.tif', format='PNG', outputType=gdal.GDT_Byte, scaleParams=[[vmin,vmax]]) ds = None

Масштабирование необходимо для преобразования ваших значений данных в 8-битный диапазон (0-255), который обычно используется для изображений.

+0

Ошибка получается как 'модуль скомпилирован против API версии 9, но эта версия numpy равна 7' –

0

Следующий код открывает растровый файл и считывает полосу растра в массив numpy.

from osgeo import gdal 
ds = gdal.Open('input.tif', gdal.GA_ReadOnly) 
rb = ds.GetRasterBand(1) 
img_array = rb.ReadAsArray() 
+0

А также после некоторого редактирования это выглядит так: –

+0

@kalemulaaditya 'ds' это 'NoneType', потому что файл не был открыт правильно. Наиболее вероятной причиной является неверное имя файла, которое передается как параметр gdal.Open, или абсолютный путь. –

0

Вы можете сделать следующее,

from osgeo import gdal 
import sys 
gdal.UseExceptions() 
ds=gdal.Open('Your Geotif image') 
band= ds.getRasterBand(1)