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

2024-09-27 07:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从文件中提取光栅(存储为numpy数组)。在非常流行的OGR Cookbook之后,我阅读OGR层(geojson),然后对向量进行光栅化。我使用GDAL的ReadAsArray()函数读取数组。这一切都很好,我可以做各种各样的事情。但是,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

之后,一旦程序完成,geotiff就被写入output_raster_path,我刚刚将其设置为“temp.tif”


Tags: 文件数据函数程序sourcetargetband光栅

热门问题