def test_ogr_create_layer(self): ds = gdal_create_dataset('Memory', 'test', gdal_type=gdal.OF_VECTOR) self.assertRaises(TypeError, lambda: georef.ogr_create_layer(ds, 'test')) lyr = georef.ogr_create_layer(ds, 'test', geom_type=ogr.wkbPoint, fields=[('test', ogr.OFTReal)]) self.assertTrue(isinstance(lyr, ogr.Layer))
def test_ogr_create_layer(self): ds = wradlib.io.gdal_create_dataset("Memory", "test", gdal_type=gdal.OF_VECTOR) with pytest.raises(TypeError): georef.ogr_create_layer(ds, "test") lyr = georef.ogr_create_layer( ds, "test", geom_type=ogr.wkbPoint, fields=[("test", ogr.OFTReal)] ) assert isinstance(lyr, ogr.Layer)
def test_ogr_create_layer(self): ds = gdal_create_dataset('Memory', 'test', gdal_type=gdal.OF_VECTOR) self.assertRaises(TypeError, lambda: georef.ogr_create_layer(ds, 'test')) lyr = georef.ogr_create_layer(ds, 'test', geom_type=ogr.wkbPoint, fields=[('test', ogr.OFTReal)]) self.assertTrue(isinstance(lyr, ogr.Layer))
def test_ogr_add_feature(self): ds = gdal_create_dataset('Memory', 'test', gdal_type=gdal.OF_VECTOR) georef.ogr_create_layer(ds, 'test', geom_type=ogr.wkbPoint, fields=[('index', ogr.OFTReal)]) point = np.array([1198054.34, 648493.09]) parr = np.array([point, point, point]) georef.ogr_add_feature(ds, parr) georef.ogr_add_feature(ds, parr, name='test')
def test_ogr_add_feature(self): ds = wradlib.io.gdal_create_dataset("Memory", "test", gdal_type=gdal.OF_VECTOR) georef.ogr_create_layer( ds, "test", geom_type=ogr.wkbPoint, fields=[("index", ogr.OFTReal)] ) point = np.array([1198054.34, 648493.09]) parr = np.array([point, point, point]) georef.ogr_add_feature(ds, parr) georef.ogr_add_feature(ds, parr, name="test")
def test_ogr_add_feature(self): ds = gdal_create_dataset('Memory', 'test', gdal_type=gdal.OF_VECTOR) georef.ogr_create_layer(ds, 'test', geom_type=ogr.wkbPoint, fields=[('index', ogr.OFTReal)]) point = np.array([1198054.34, 648493.09]) parr = np.array([point, point, point]) georef.ogr_add_feature(ds, parr) georef.ogr_add_feature(ds, parr, name='test')
def test_ogr_add_geometry(self): ds = gdal_create_dataset('Memory', 'test', gdal_type=gdal.OF_VECTOR) lyr = georef.ogr_create_layer(ds, 'test', geom_type=ogr.wkbPoint, fields=[('test', ogr.OFTReal)]) point = ogr.Geometry(ogr.wkbPoint) point.AddPoint(1198054.34, 648493.09) georef.ogr_add_geometry(lyr, point, [42.42])
def test_ogr_add_geometry(self): ds = wradlib.io.gdal_create_dataset("Memory", "test", gdal_type=gdal.OF_VECTOR) lyr = georef.ogr_create_layer( ds, "test", geom_type=ogr.wkbPoint, fields=[("test", ogr.OFTReal)] ) point = ogr.Geometry(ogr.wkbPoint) point.AddPoint(1198054.34, 648493.09) georef.ogr_add_geometry(lyr, point, [42.42])
def _check_src(self, src): """ Basic check of source elements (sequence of points or polygons). - array cast of source elements - create ogr_src datasource/layer holding src points/polygons - transforming source grid points/polygons to ogr.geometries on ogr.layer """ ogr_src = io.gdal_create_dataset('Memory', 'out', gdal_type=gdal.OF_VECTOR) try: # is it ESRI Shapefile? ds_in, tmp_lyr = io.open_shape( src, driver=ogr.GetDriverByName('ESRI Shapefile')) ogr_src_lyr = ogr_src.CopyLayer(tmp_lyr, self._name) if self._srs is None: self._srs = ogr_src_lyr.GetSpatialRef() except IOError: # no ESRI shape file raise # all failed? then it should be sequence or numpy array except RuntimeError: src = np.array(src) # create memory datasource, layer and create features if src.ndim == 2: geom_type = ogr.wkbPoint # no Polygons, just Points else: geom_type = ogr.wkbPolygon fields = [('index', ogr.OFTInteger)] georef.ogr_create_layer(ogr_src, self._name, srs=self._srs, geom_type=geom_type, fields=fields) georef.ogr_add_feature(ogr_src, src, name=self._name) return ogr_src
def _create_dst_datasource(self, **kwargs): """ Create destination target gdal.Dataset Creates one layer for each target polygon, consisting of the needed source data attributed with index and weights fields Returns ------- ds_mem : gdal.Dataset object """ # TODO: kwargs necessary? # create intermediate mem dataset ds_mem = io.gdal_create_dataset('Memory', 'dst', gdal_type=gdal.OF_VECTOR) # get src geometry layer src_lyr = self.src.ds.GetLayerByName('src') src_lyr.ResetReading() src_lyr.SetSpatialFilter(None) geom_type = src_lyr.GetGeomType() # create temp Buffer layer (time consuming) ds_tmp = io.gdal_create_dataset('Memory', 'tmp', gdal_type=gdal.OF_VECTOR) georef.ogr_copy_layer(self.trg.ds, 0, ds_tmp) tmp_trg_lyr = ds_tmp.GetLayer() for i in range(tmp_trg_lyr.GetFeatureCount()): feat = tmp_trg_lyr.GetFeature(i) feat.SetGeometryDirectly(feat.GetGeometryRef().Buffer( self._buffer)) tmp_trg_lyr.SetFeature(feat) # get target layer, iterate over polygons and calculate intersections tmp_trg_lyr.ResetReading() self.tmp_lyr = georef.ogr_create_layer(ds_mem, 'dst', srs=self._srs, geom_type=geom_type) print("Calculate Intersection source/target-layers") try: tmp_trg_lyr.Intersection(src_lyr, self.tmp_lyr, options=[ 'SKIP_FAILURES=YES', 'INPUT_PREFIX=trg_', 'METHOD_PREFIX=src_', 'PROMOTE_TO_MULTI=YES', 'PRETEST_CONTAINMENT=YES' ], callback=gdal.TermProgress) except RuntimeError: # Catch RuntimeError that was reported on gdal 1.11.1 # on Windows systems tmp_trg_lyr.Intersection(src_lyr, self.tmp_lyr, options=[ 'SKIP_FAILURES=YES', 'INPUT_PREFIX=trg_', 'METHOD_PREFIX=src_', 'PROMOTE_TO_MULTI=YES', 'PRETEST_CONTAINMENT=YES' ]) return ds_mem