在gdal转化开发中遇见相关python函数,不理解c++中该用何种方式进行等价替换,代码如下:
dsjoin = gdal.Open(tilefilename)
datajoin = dsjoin.ReadAsArray(0, 0, dsjoin.RasterXSize, dsjoin.RasterYSize)
pixvals = []
for b in range(1,dstile.RasterCount + 1) :
band = dstile.GetRasterBand(b)
fmt = self.pt2fmt(band.DataType)
pixel = band.ReadRaster(i, k, 1, 1, 1, 1)
pixval = struct.unpack(fmt, pixel)
pixvals.append(pixval[0])
#print("pixel(%s, %s, %s, %s)" % (k, i, pixvals[0], pixvals[1]))
alpha = dstile.RasterCount - 1
if pixvals[alpha] == 0 or (self.in_nodata != [] and pixvals[alpha] == self.in_nodata[0]):
# Try get pixel values from existing tile
for b in range(1, dstile.RasterCount + 1) :
band = dstile.GetRasterBand(b)
fmt = self.pt2fmt(band.DataType)
if self.tiledriver != 'EHdr' :
band.WriteRaster(i, k, 1, 1, struct.pack(fmt, datajoin[b - 1][k][i]))
else :
band.WriteRaster(i, k, 1, 1, struct.pack(fmt, datajoin[k][i]))
如上,两处函数。
1.struct.unpack()
2.ReadAsArray()函数
20231018追加:
需要结题,暂时先根据自己理解,使用rasterIo函数读取数据了,后续测试完成没问题后,再具体写一下使用方法