我正在使用GDAL API读取光栅文件......我在某些地方发现python版本有ReadAsArray,我假设这将光栅文件的数据作为二维数组,C#有没有类似的选项,或者至少可以你告诉我怎么做?多谢!
riki
问问题
3178 次
2 回答
8
在与 GDAL 的 C# 绑定中没有等效的ReadAsArray函数。ReadAsArray 是可用的,因为 GDAL Python 绑定应该可以与NumPy定义的数组协议一起使用,所以这个函数是为了这个特定目的而存在的。
但是,您可以使用 Band 类的 ReadRaster 方法将像素读入一维数组,然后像二维数组一样遍历这样的一维数组。
假设您读取带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 版本中的ReadAsArray(0,0, xsize, ysize)
功能相当于ReadRaster(0,0, ds.RasterXSize, ds.RasterYSize, dstArray, ds.RasterXSize, ds.RasterYSize, 0)
C# 版本中的功能。
于 2020-04-13T15:42:19.223 回答