2011-07-15 5 views
6

私はPythonでGDALを使用して.tifファイルを作成しようとしています。ファイルを作成していますが、参照するたびに「プレビューなし」と表示されます。今、私は入力ファイルのコピーを作るようにしようとしています。 ======GDALラスター出力

gdal.AllRegister() 

inDs = gdal.Open("C:\\Documents and Settings\\patrick\\Desktop\\tiff elevation\\EBK1KM\\color_a2.tif") 
if inDs is None: 
    print 'Could not open image file' 
    sys.exit(1) 
else: 
    print "successfully opened input file" 

rows = inDs.RasterYSize 
cols = inDs.RasterXSize 
myband = inDs.GetRasterBand(1) 
elev_data = myband.ReadAsArray(0,0,cols,rows) 
driver = inDs.GetDriver() 
outDs = driver.Create('C:\\Documents and Settings\\patrick\\Desktop\\tiff elevation\\EBK1KM\\new.tif', cols, rows, 1, GDT_Int32) 

if outDs is None: 
    print "couldn't open output file" 
    sys.exit(1) 

outBand = outDs.GetRasterBand(1) 
outData = numpy.zeros((rows,cols),numpy.int16) 
outBand.WriteArray(elev_data) 
outBand.FlushCache() 
outBand.SetNoDataValue(-99) 
outDs.SetGeoTransform(inDs.GetGeoTransform()) 
outDs.SetProjection(inDs.GetProjection()) 
del outData 

============================更新:ここに私のコードです=================================== は ...いくつかの発見をした私は、変換の方法を研究してきました統計的な正規化を使用して、ある数値形式から別の数値形式に変換します。私は、入力データを処理し、次のアルゴリズムを使用してにuint8にそれを変換:

std = elev_data.std() #standard dev 
avg = elev_data.mean() 
arr = numpy.zeros((rows,cols),numpy.uint8) 
for _i_ in _range_(_rows_): 
    for _j_ in _range_(_cols_): 
     arr[i,j] = (((out_elev[i,j]-avg)/std)*127)+128 #normalization formula 
     #this puts all vals in range 1 to 255 (uint8) 
dr = gdal.GetDriverByName("GTiff") 
outDs = dr.Create("name",cols,rows,3,GDT_Byte) 
#creates and RGB file, accepts uint8 for input 
outDs.GetRasterBand(1).WriteArray(arr) #write the output as shades of red 
#this writes out a format viewable by microsoft products 

私はコピーしたかった主な理由は、計算に基づいて更新されたデータを書き出す、その後、私は読むことができたことを証明することでした。

単色の色ではなく、カラーランプを使用して出力データを書き出す方法はありますか?

答えて

2

TIFFファイルを画像としてプレビューしようとすると、Windowsのピクチャ&ファックスビューアアプリケーションから「プレビューなし」と表示されますか? (下記のスクリーンショットをご覧ください。)

No preview available screenshot

クマを念頭にあっmany different flavors of TIFFがあり、すべてが同じではないということ。特に、Windows Picture and Fax Viewerは、すべての種類のTIFFをサポートしていません。

部分で述べているマイクロソフトサポート技術情報の記事You Cannot View TIFF Images Using Windows Picture and Fax Viewerあり:

Windows画像とFAXビューアをWindows XPには、Windowsのグラフィックデバイスインターフェイス(GDI +)を使用しています。 GDI +は、FAX用の多くの標準圧縮アルゴリズムをサポートしています。ただし、頻繁に使用されないエンコーディングスキームの一部と互換性がない可能性があります。

あなたは(GeoTIFFのラスタを含む)ラスタデータを表示するためのツールを探しているなら、私はあなたがFWToolsパッケージの一部として取得することができ、OpenEV自由に利用をお勧めします。私は気づくことの

1

カップル:

  1. あなただけのソースデータセットの一つのバンドをコピーします。それはカラー 画像である場合、それは3つのバンド、またはカラーマップを有していてもよいです。カラーマップがある場合は、 もコピーする必要があります。 3バンドまたは4バンドの場合、すべてのデータをコピーするには が必要です。
  2. CreateCopy()は、探しているものを簡単に行う方法です。
+1

問題を見つけました。私が作成した出力ファイルのタイプに適切なビューアがありませんでした。 Int16は、Microsoftの製品ではサポートされていません。私はBrava Readerをダウンロードしてインストールしました。生成できる出力のほとんどを見ることができます。 – Pat

関連する問題