def vectorize_raster(source, gdal_band_number, target_vector_layer_filename, layer_name, field_name_of_layer): import os if os.path.isfile(source): ds = get_dataset(source) else: #TODO: test if is dataset LOGGER.info('dataset') projection_reference = ds.GetProjection() data_layer, ds_layer=create_empty_layer(target_vector_layer_filename, layer_name, projection_reference) band = ds.GetRasterBand(gdal_band_number) field = ogr.FieldDefn(field_name_of_layer, ogr.OFTInteger) data_layer.CreateField(field) return gdal.Polygonize(band, None, data_layer, 0, [])
def write_C5_dataframe_to_shape(dataframe, shape_class, out_file): data_layer, ds_layer = create_empty_layer(out_file, 'export', shape_class.srid) fid = ogr.FieldDefn('gid', ogr.OFTInteger) data_layer.CreateField(fid) table_types = dataframe.dtypes table_columns = dataframe.columns geomcolumn = 'geom' for c in range(table_columns.shape[0]): dt = table_types[c] n = table_columns[c] if "float" in str(dt): FieldType = ogr.OFTReal elif "int" in str(dt): FieldType = ogr.OFTInteger elif "object" in str(dt): FieldType = ogr.OFTString else: FieldType = ogr.OFTString fd = ogr.FieldDefn(n, FieldType) if not n == geomcolumn: data_layer.CreateField(fd) for i in range(dataframe.shape[0]): data = dataframe.iloc[i].values feature = ogr.Feature(data_layer.GetLayerDefn()) gfi = feature.GetFieldIndex('gid') feature.SetField(gfi, i + 1) for c in range(table_columns.shape[0]): d = data[c] n = table_columns[c] if n == geomcolumn: feature.SetGeometry(ogr.CreateGeometryFromWkt(d)) else: gfi = feature.GetFieldIndex(n) feature.SetField(gfi, str(d)) data_layer.CreateFeature(feature) feature.Destroy() data_source = None
def write_C5_dataframe_to_shape(dataframe, shape_class, out_file): data_layer, ds_layer = create_empty_layer(out_file, 'export', shape_class.srid) fid = ogr.FieldDefn('gid', ogr.OFTInteger) data_layer.CreateField(fid) table_types = dataframe.dtypes table_columns = dataframe.columns geomcolumn = 'geom' for c in range(table_columns.shape[0]): dt = table_types[c] n = table_columns[c] if "float" in str(dt) : FieldType = ogr.OFTReal elif "int" in str(dt) : FieldType = ogr.OFTInteger elif "object" in str(dt) : FieldType = ogr.OFTString else: FieldType = ogr.OFTString fd = ogr.FieldDefn(n, FieldType) if not n == geomcolumn: data_layer.CreateField(fd) for i in range(dataframe.shape[0]): data = dataframe.iloc[i].values feature = ogr.Feature(data_layer.GetLayerDefn()) gfi = feature.GetFieldIndex('gid') feature.SetField(gfi, i+1) for c in range(table_columns.shape[0]): d = data[c] n = table_columns[c] if n == geomcolumn: feature.SetGeometry(ogr.CreateGeometryFromWkt(d)) else: gfi = feature.GetFieldIndex(n) feature.SetField(gfi, str(d)) data_layer.CreateFeature(feature) feature.Destroy() data_source = None