Skip to content

Commit 5543f8c

Browse files
committed
Removed silent gdal initialization from mem.rs
1 parent 305b688 commit 5543f8c

2 files changed

Lines changed: 243 additions & 169 deletions

File tree

c/sedona-gdal/src/gdal.rs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ use crate::dataset::Dataset;
2727
use crate::driver::{Driver, DriverManager};
2828
use crate::errors::Result;
2929
use 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};
3231
use crate::raster::polygonize::{polygonize, PolygonizeOptions};
3332
use crate::raster::rasterize::{rasterize, RasterizeOptions};
3433
use crate::raster::rasterize_affine::rasterize_affine;
3534
use crate::raster::types::DatasetOptions;
35+
use crate::raster::types::GdalDataType;
3636
use crate::raster::RasterBand;
3737
use crate::spatial_ref::SpatialRef;
3838
use 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

Comments
 (0)