2009-08-06 8 views
2

私はGDAL APIを使ってラスターファイルを読み込んでいました...私はいくつかの場所でPythonバージョンにReadAsArrayがあることを発見しました。これは2次元配列としてラスターファイルのデータを取ります。 C#、または少なくとも私はそれを行う方法を示すことができますか?どうもありがとう!GDAL C#ReadAsArray

答えて

7

GDALへのC#バインディングには、ReadAsArrayの機能がありません。 ReadAsArrayは、GDAL PythonバインディングがNumPyで定義された配列プロトコルで使用可能であるため、この特定の目的のためにこの関数が存在するため、使用できます。

しかし、BandクラスのReadRasterメソッドを使用すると、ピクセルを1次元配列に読み込んだり、そのような1次元配列を2次元配列と同じように反復処理することができます。

のは、あなたがwidth x height寸法のバンドのピクセルを読むと仮定しましょう:column + row * width

for (int col = 0; col < width; col++) 
{ 
    for (int row = 0; row < height; row++) 
    { 
     // equivalent to bits[col][row] if bits is 2-dimension array 

     byte pixel = bits[col + row * width]; 
    } 
} 
:あなたはこの式に従ってピクセルのインデックスを計算することができ、今

byte[] bits = new byte[width * height]; 
band.ReadRaster(0, 0, width, height, bits, width, height, 0, 0); 

関連する問題