Как запретить GDAL записывать источник данных на диск при разыменовании - PullRequest
0 голосов
/ 14 марта 2019

Мне нужно извлечь растр (хранящийся в виде массива) из файла.После очень популярной OGR Cookbook я читаю в слое OGR (geojson), а затем растеризую векторы.Я прочитал этот массив с помощью функции ReadAsArray () GDAL.Это все прекрасно работает, и я могу делать с ним все разные нюансы.Однако 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, который я только что установил как «temp.tif».

1 Ответ

1 голос
/ 14 марта 2019

Вы можете использовать драйвер в памяти для таких вещей.

mem_drv = gdal.GetDriverByName('MEM')
target = mem_drv.Create('', source_raster.RasterXSize, source_raster.RasterYSize, 1, gdal.GDT_UInt16)
...