@@ -27,12 +27,12 @@ use crate::dataset::Dataset;
2727use crate :: driver:: { Driver , DriverManager } ;
2828use crate :: errors:: Result ;
2929use crate :: gdal_api:: GdalApi ;
30- use crate :: gdal_dyn_bindgen:: GDALOpenFlags ;
31- use crate :: gdal_dyn_bindgen:: OGRFieldType ;
30+ use crate :: gdal_dyn_bindgen:: { GDALOpenFlags , OGRFieldType } ;
3231use crate :: raster:: polygonize:: { polygonize, PolygonizeOptions } ;
3332use crate :: raster:: rasterize:: { rasterize, RasterizeOptions } ;
3433use crate :: raster:: rasterize_affine:: rasterize_affine;
3534use crate :: raster:: types:: DatasetOptions ;
35+ use crate :: raster:: types:: GdalDataType ;
3636use crate :: raster:: RasterBand ;
3737use crate :: spatial_ref:: SpatialRef ;
3838use crate :: vector:: feature:: FieldDefn ;
@@ -165,6 +165,31 @@ impl Gdal {
165165
166166 // -- Raster operations ---------------------------------------------------
167167
168+ /// Create a bare in-memory (MEM) GDAL dataset via `MEMDataset::Create`.
169+ ///
170+ /// This bypasses GDAL's open-dataset-list mutex for better concurrency.
171+ /// The returned dataset has `n_owned_bands` bands of type
172+ /// `owned_bands_data_type` whose pixel data is owned by GDAL.
173+ ///
174+ /// For a higher-level builder that also attaches zero-copy external bands,
175+ /// geo-transforms, projections, and nodata values, see
176+ /// [`MemDatasetBuilder`](crate::mem::MemDatasetBuilder).
177+ pub fn create_mem_dataset (
178+ & self ,
179+ width : usize ,
180+ height : usize ,
181+ n_owned_bands : usize ,
182+ owned_bands_data_type : GdalDataType ,
183+ ) -> Result < Dataset > {
184+ crate :: mem:: create_mem_dataset (
185+ self . api ,
186+ width,
187+ height,
188+ n_owned_bands,
189+ owned_bands_data_type,
190+ )
191+ }
192+
168193 /// Rasterize geometries with an affine transformer derived from the
169194 /// destination dataset.
170195 pub fn rasterize_affine (
0 commit comments