巨菜的阿豪 2023-10-18 16:43 采纳率: 50%
浏览 20
已结题

报错Writing through VRTSourcedRasterBand is not supported

ERROR 1: Writing through VRTSourcedRasterBand is not supported.
ERROR 1: C:\Users\Lenovo\AppData\Local\Temp\s8fk.0, band 1: IReadBlock failed at X offset 0, Y offset 0: Writing through VRTSourcedRasterBand is not supported.

GDALDataset *m_out_ds=(GDALDataset*)GDALAutoCreateWarpedVRT(poDSRef, in_srs_wkt, out_srs_wkt, GRA_NearestNeighbour , 0,NULL);
//调用该接口时,报上面错误
m_out_ds->RasterIO(GF_Read, rx, ry, rxsize, rysize, outDsRasterIO, wxsize, wysize, m_tiledata, m_dataBandsCount, p_band_list, 0, 0, 0);

调用gdal接口时报错,python走相同的流程不报错,python代码如下:

self.out_ds = gdal.AutoCreateWarpedVRT( self.in_ds, self.in_srs_wkt, self.out_srs.ExportToWkt() )
data = ds.ReadRaster(rx, ry, rxsize, rysize, wxsize, wysize, band_list=list(range(1,self.dataBandsCount+1)))
  • 写回答

1条回答 默认 最新

  • Leodong. 2023-10-18 16:46
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    这个错误是由于在C++和Python中使用GDAL库时,尝试通过VRTSourcedRasterBand进行写操作,但该操作不受支持。为了解决这个问题,你可以尝试以下方法:
    1、 在C++代码中,使用GDALWarp函数替换GDALAutoCreateWarpedVRT函数。GDALWarp函数允许你指定输出文件名,这样可以避免使用VRTSourcedRasterBand。示例代码如下:

    GDALDataset *m_out_ds = (GDALDataset *)GDALWarp(poDSRef, out_filename, in_srs_wkt, out_srs_wkt, GRA_NearestNeighbour, 0, NULL, NULL, NULL);
    

    2、 在Python代码中,使用gdal.Warp函数替换gdal.AutoCreateWarpedVRT函数。示例代码如下:

    self.out_ds = gdal.Warp(self.out_filename, self.in_ds, format='GTiff', srcSRS=self.in_srs_wkt, dstSRS=self.out_srs.ExportToWkt(), resampleAlg=GRA_NearestNeighbour)
    data = ds.ReadRaster(rx, ry, rxsize, rysize, wxsize, wysize, band_list=list(range(1, self.dataBandsCount + 1)))
    

    这样修改后,你的代码应该可以正常运行,不再出现"Writing through VRTSourcedRasterBand is not supported"的错误。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月31日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来