如何防止GDAL在取消引用时将数据源写入磁盘

问题描述 投票:0回答:1

我需要从文件中提取栅格(存储为numpy数组)。继非常受欢迎的OGR Cookbook之后,我正在读取OGR层(geojson),然后栅格化矢量。我使用GDAL的ReadAsArray()函数读取该数组。这一切都很好,我可以做各种各样的numpy事情。但是,GDAL会自动写出我创建的GDAL数据集,因为它会在程序结束后自动取消引用。我不需要/想要输出这个文件,因为它在磁盘上没用,我只需要内存中的数据。你怎么能防止这种情况发生?

我试过不调用FlushCache()函数,但文件仍然最终输出。码:

...

    # Create the destination data source
    target = gdal.GetDriverByName('GTiff').Create(output_raster_path, source_raster.RasterXSize, source_raster.RasterYSize, 1, gdal.GDT_UInt16)
    target.SetGeoTransform(source_raster.GetGeoTransform())
    target.SetProjection(source_raster.GetProjection())
    band = target.GetRasterBand(1)
    band.SetNoDataValue(no_data_value)
    gdal.RasterizeLayer(target, [1], source_layer, options=["ATTRIBUTE=BuildingID"])
    raster = band.ReadAsArray()
    return raster

之后,一旦程序完成,就会向output_raster_path写一个geotiff,我刚设置为“temp.tif”。

python gdal
1个回答
1
投票

你可以使用内存驱动程序这样的东西。

mem_drv = gdal.GetDriverByName('MEM')
target = mem_drv.Create('', source_raster.RasterXSize, source_raster.RasterYSize, 1, gdal.GDT_UInt16)
© www.soinside.com 2019 - 2024. All rights reserved.