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

时间:2019-03-14 18:12:15

标签: python gdal

我需要从文件中提取栅格(存储为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”。

1 个答案:

答案 0 :(得分:1)

您可以使用内存驱动程序进行此类操作。

name1         a1a1,b2b2,c3c3
name2    d4d4,e4e4,f5f5,f6f6
name3               g5,h6,i7
Name: specialties, dtype: object