Source code for buzzard._gdal_memory_vector

import contextlib

from buzzard._a_emissary_vector import AEmissaryVector, ABackEmissaryVector
from buzzard._a_gdal_vector import ABackGDALVector
from buzzard._tools import conv

[docs]class GDALMemoryVector(AEmissaryVector): """Concrete class defining the behavior of a GDAL raster using the "Memory" driver >>> help(Dataset.create_vector) Features Defined ---------------- None """ def __init__(self, ds, allocator, open_options): back = BackGDALMemoryVector( ds._back, allocator, open_options, ) super(GDALMemoryVector, self).__init__(ds=ds, back=back)
class BackGDALMemoryVector(ABackEmissaryVector, ABackGDALVector): """Implementation of GDALMemoryVector""" def __init__(self, back_ds, allocator, open_options): # gdal_ds, lyr = self.create_file('', geometry, fields, layer, 'Memory', open_options, sr) gdal_ds, lyr = allocator() self._gdal_ds = gdal_ds self._lyr = lyr rect = None if lyr is not None: rect = lyr.GetExtent() path = gdal_ds.GetDescription() driver = gdal_ds.GetDriver().ShortName sr = lyr.GetSpatialRef() if sr is None: wkt_stored = None else: wkt_stored = sr.ExportToWkt() fields = BackGDALMemoryVector._fields_of_lyr(lyr) type = conv.str_of_wkbgeom(lyr.GetGeomType()) layer = lyr.GetName() super(BackGDALMemoryVector, self).__init__( back_ds=back_ds, wkt_stored=wkt_stored, mode='w', driver=driver, open_options=open_options, path=path, layer=layer, fields=fields, rect=rect, type=type ) self._type_of_field_index = [ conv.type_of_oftstr(field['type']) for field in self.fields ] @contextlib.contextmanager def acquire_driver_object(self): yield self._gdal_ds, self._lyr def delete(self): # pragma: no cover raise NotImplementedError('GDAL Memory driver does no allow deletion, use `close`') def close(self): super(BackGDALMemoryVector, self).close() del self._lyr del self._gdal_ds