2

私はGDAL APIを使用してラスターファイルを読み取っていました... PythonバージョンにReadAsArrayがある場所がいくつか見つかりました.これはラスターファイルのデータを2次元配列として受け取ると思います.C#に同様のオプションがあるか、少なくともあなたはそれを行う方法を教えてくれますか?どうもありがとう!

4

2 に答える 2

8

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

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

width x height次元を持つバンドのピクセルを読み取ると仮定しましょう:

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

これで、次の式に従ってピクセルのインデックスを計算できます。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];
    }
}
于 2010-01-24T15:42:39.523 に答える
0

Python 版の関数はC# 版ReadAsArray(0,0, xsize, ysize)と同等です。ReadRaster(0,0, ds.RasterXSize, ds.RasterYSize, dstArray, ds.RasterXSize, ds.RasterYSize, 0)

于 2020-04-13T15:42:19.223 に答える