Python osgeo.ogr.FieldDefn() Examples
The following are 17
code examples of osgeo.ogr.FieldDefn().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
osgeo.ogr
, or try the search function
.
Example #1
Source File: slicing.py From lidar with MIT License | 6 votes |
def polygonize(img,shp_path): # mapping between gdal type and ogr field type type_mapping = {gdal.GDT_Byte: ogr.OFTInteger, gdal.GDT_UInt16: ogr.OFTInteger, gdal.GDT_Int16: ogr.OFTInteger, gdal.GDT_UInt32: ogr.OFTInteger, gdal.GDT_Int32: ogr.OFTInteger, gdal.GDT_Float32: ogr.OFTReal, gdal.GDT_Float64: ogr.OFTReal, gdal.GDT_CInt16: ogr.OFTInteger, gdal.GDT_CInt32: ogr.OFTInteger, gdal.GDT_CFloat32: ogr.OFTReal, gdal.GDT_CFloat64: ogr.OFTReal} ds = gdal.Open(img) prj = ds.GetProjection() srcband = ds.GetRasterBand(1) dst_layername = "Shape" drv = ogr.GetDriverByName("ESRI Shapefile") dst_ds = drv.CreateDataSource(shp_path) srs = osr.SpatialReference(wkt=prj) dst_layer = dst_ds.CreateLayer(dst_layername, srs=srs) raster_field = ogr.FieldDefn('id', type_mapping[srcband.DataType]) dst_layer.CreateField(raster_field) gdal.Polygonize(srcband, srcband, dst_layer, 0, [], callback=None) del img, ds, srcband, dst_ds, dst_layer # convert images in a selected folder to shapefiles
Example #2
Source File: zonalstats.py From wradlib with MIT License | 6 votes |
def set_attribute(self, name, values): """Add/Set given Attribute with given values Parameters ---------- name : string Attribute Name values : :class:`numpy:numpy.ndarray` Values to fill in attributes """ lyr = self.ds.GetLayerByIndex(0) lyr.ResetReading() # todo: automatically check for value type defn = lyr.GetLayerDefn() if defn.GetFieldIndex(name) == -1: lyr.CreateField(ogr.FieldDefn(name, ogr.OFTReal)) for i, item in enumerate(lyr): item.SetField(name, values[i]) lyr.SetFeature(item)
Example #3
Source File: convert_labels.py From SMAC-M with MIT License | 5 votes |
def convert_file(path, acronym, fields, values): file = ogr.Open(str(path), True) try: layer = file.GetLayer() defn = layer.GetLayerDefn() existing_fields = [] missing_fields = [] for field in fields: if defn.GetFieldIndex(field) >= 0: existing_fields.append(field) if defn.GetFieldIndex(field + '_txt') < 0: missing_fields.append(ogr.FieldDefn(field + '_txt')) layer.CreateFields(missing_fields) feat = layer.GetNextFeature() while feat: for field in existing_fields: value = feat.GetFieldAsString(field) if value: value = ','.join( values[field].get(v, v) for v in value.split(',') ) feat.SetField(field + '_txt', value) layer.SetFeature(feat) feat = layer.GetNextFeature() finally: file.Destroy()
Example #4
Source File: process_level.py From SMAC-M with MIT License | 5 votes |
def featuresToFile(features, dst_drv, dst_name, dst_srs, layer_name=None, geomtype=None, overwrite=True): if not features: # features is empty list print("No Features Created") return drv = ogr.GetDriverByName(dst_drv) if drv is None: print("Driver not available ({})".format(dst_drv)) return dsrc = drv.CreateDataSource(dst_name) if dsrc is None: print("DataSource creation failed") return if not geomtype: f0 = features[0] geomref = features[0].GetGeometryRef() if geomref is not None: geomtype = geomref.GetGeometryType() else: return layer = dsrc.CreateLayer(layer_name, srs=dst_srs, geom_type=geomtype) # Create the fields for the new file for i in range(features[0].GetFieldCount()): fieldDef = features[0].GetFieldDefnRef(i) if "List" in ogr.GetFieldTypeName(fieldDef.GetType()): t = ogr.GetFieldTypeName(fieldDef.GetType())[:-4] if t == "String": fieldDef = ogr.FieldDefn(fieldDef.GetName(), ogr.OFTString) elif t == "Integer": fieldDef = ogr.FieldDefn(fieldDef.GetName(), ogr.OFTInteger) layer.CreateField(fieldDef) # print layer_name for feature in features: layer.CreateFeature(feature)
Example #5
Source File: process_level.py From SMAC-M with MIT License | 5 votes |
def add_fields(layer, fielddefs): # fielddefs = [(new_field_name, data_type),...] # for fielddef in fielddefs: layer.CreateField(ogr.FieldDefn(fielddef[0], fielddef[1]))
Example #6
Source File: test_shp.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def setUp(self): def createlayer(driver): lyr = shp.CreateLayer("edges", None, ogr.wkbLineString) namedef = ogr.FieldDefn("Name", ogr.OFTString) namedef.SetWidth(32) lyr.CreateField(namedef) return lyr drv = ogr.GetDriverByName("ESRI Shapefile") testdir = os.path.join(tempfile.gettempdir(), 'shpdir') shppath = os.path.join(tempfile.gettempdir(), 'tmpshp.shp') self.deletetmp(drv, testdir, shppath) os.mkdir(testdir) shp = drv.CreateDataSource(shppath) lyr = createlayer(shp) self.names = ['a', 'b', 'c', 'c'] # edgenames self.paths = ([(1.0, 1.0), (2.0, 2.0)], [(2.0, 2.0), (3.0, 3.0)], [(0.9, 0.9), (4.0, 0.9), (4.0, 2.0)]) self.simplified_names = ['a', 'b', 'c'] # edgenames self.simplified_paths = ([(1.0, 1.0), (2.0, 2.0)], [(2.0, 2.0), (3.0, 3.0)], [(0.9, 0.9), (4.0, 2.0)]) for path, name in zip(self.paths, self.names): feat = ogr.Feature(lyr.GetLayerDefn()) g = ogr.Geometry(ogr.wkbLineString) for p in path: g.AddPoint_2D(*p) feat.SetGeometry(g) feat.SetField("Name", name) lyr.CreateFeature(feat) self.shppath = shppath self.testdir = testdir self.drv = drv
Example #7
Source File: writer.py From stdm with GNU General Public License v2.0 | 5 votes |
def createField(self,table,field): #Creates an OGR field colType = columnType(table, field) #Get OGR type ogrType = ogrTypes[colType] #OGR date handling is broken! handle all dates as strings if ogrType == OGRWriter.OGR_DATE_TYPE: ogrType = OGRWriter.OGR_STRING_TYPE field_defn = ogr.FieldDefn(field.encode('utf-8'), ogrType) return field_defn
Example #8
Source File: vector.py From wradlib with MIT License | 5 votes |
def ogr_create_layer(ds, name, srs=None, geom_type=None, fields=None): """Creates OGR.Layer objects in gdal.Dataset object. Creates one OGR.Layer with given name in given gdal.Dataset object using given OGR.GeometryType and FieldDefinitions Parameters ---------- ds : gdal.Dataset object name : string OGRLayer name srs : OSR.SpatialReference object geom_type : OGR GeometryType (eg. ogr.wkbPolygon) fields : list of 2 element tuples (strings, OGR.DataType) field name, field type Returns ------- out : OGR.Layer object """ if geom_type is None: raise TypeError("geometry_type needed") lyr = ds.CreateLayer(name, srs=srs, geom_type=geom_type) if fields is not None: for fname, fvalue in fields: lyr.CreateField(ogr.FieldDefn(fname, fvalue)) return lyr
Example #9
Source File: shape.py From cadasta-platform with GNU Affero General Public License v3.0 | 5 votes |
def create_shp_layer(self, layer_type): srs = osr.SpatialReference() srs.ImportFromEPSG(4326) if layer_type in shp_types.keys(): layer = self.shp_datasource.CreateLayer( layer_type, srs, geom_type=shp_types[layer_type]) field = ogr.FieldDefn('id', ogr.OFTString) layer.CreateField(field) return layer
Example #10
Source File: function_vector.py From dzetsaka with GNU General Public License v3.0 | 5 votes |
def saveToShape(array, srs, outShapeFile): # Parse a delimited text file of volcano data and create a shapefile # use a dictionary reader so we can access by field name # set up the shapefile driver import ogr outDriver = ogr.GetDriverByName('ESRI Shapefile') # create the data source if os.path.exists(outShapeFile): outDriver.DeleteDataSource(outShapeFile) # Remove output shapefile if it already exists # options = ['SPATIALITE=YES']) ds = outDriver.CreateDataSource(outShapeFile) # create the spatial reference, WGS84 lyrout = ds.CreateLayer('randomSubset', srs, ogr.wkbPoint) fields = [array[1].GetFieldDefnRef(i).GetName() for i in range(array[1].GetFieldCount())] for i, f in enumerate(fields): field_name = ogr.FieldDefn(f, array[1].GetFieldDefnRef(i).GetType()) field_name.SetWidth(array[1].GetFieldDefnRef(i).GetWidth()) lyrout.CreateField(field_name) for k in array: lyrout.CreateFeature(k) # Save and close the data source ds = None
Example #11
Source File: function_vector.py From dzetsaka with GNU General Public License v3.0 | 5 votes |
def saveToShape(self, array, srs, outShapeFile): # Parse a delimited text file of volcano data and create a shapefile # use a dictionary reader so we can access by field name # set up the shapefile driver outDriver = ogr.GetDriverByName('ESRI Shapefile') # create the data source if os.path.exists(outShapeFile): outDriver.DeleteDataSource(outShapeFile) # Remove output shapefile if it already exists # options = ['SPATIALITE=YES']) ds = outDriver.CreateDataSource(outShapeFile) # create the spatial reference, WGS84 lyrout = ds.CreateLayer('randomSubset', srs) fields = [ array[1].GetFieldDefnRef(i).GetName() for i in range( array[1].GetFieldCount())] for f in fields: field_name = ogr.FieldDefn(f, ogr.OFTString) field_name.SetWidth(24) lyrout.CreateField(field_name) for k in array: lyrout.CreateFeature(k) # Save and close the data source ds = None
Example #12
Source File: jqvmap.py From bitcoin-arbitrage-trading-bot with MIT License | 5 votes |
def output_ogr(self, output): driver = ogr.GetDriverByName( 'ESRI Shapefile' ) if os.path.exists( output['file_name'] ): driver.DeleteDataSource( output['file_name'] ) source = driver.CreateDataSource( output['file_name'] ) layer = source.CreateLayer( self.layer_dfn.GetName(), geom_type = self.layer_dfn.GetGeomType(), srs = self.layer.GetSpatialRef() ) for field in self.fields: fd = ogr.FieldDefn( str(field['name']), field['type'] ) fd.SetWidth( field['width'] ) if 'precision' in field: fd.SetPrecision( field['precision'] ) layer.CreateField( fd ) for geometry in self.geometries: if geometry.geom is not None: feature = ogr.Feature( feature_def = layer.GetLayerDefn() ) for index, field in enumerate(self.fields): if field['name'] in geometry.properties: feature.SetField( index, geometry.properties[field['name']].encode('utf-8') ) else: feature.SetField( index, '' ) feature.SetGeometryDirectly( ogr.CreateGeometryFromWkb( shapely.wkb.dumps( geometry.geom ) ) ) layer.CreateFeature( feature ) feature.Destroy() source.Destroy()
Example #13
Source File: filling.py From lidar with MIT License | 5 votes |
def polygonize(img,shp_path): # mapping between gdal type and ogr field type type_mapping = {gdal.GDT_Byte: ogr.OFTInteger, gdal.GDT_UInt16: ogr.OFTInteger, gdal.GDT_Int16: ogr.OFTInteger, gdal.GDT_UInt32: ogr.OFTInteger, gdal.GDT_Int32: ogr.OFTInteger, gdal.GDT_Float32: ogr.OFTReal, gdal.GDT_Float64: ogr.OFTReal, gdal.GDT_CInt16: ogr.OFTInteger, gdal.GDT_CInt32: ogr.OFTInteger, gdal.GDT_CFloat32: ogr.OFTReal, gdal.GDT_CFloat64: ogr.OFTReal} ds = gdal.Open(img) prj = ds.GetProjection() srcband = ds.GetRasterBand(1) dst_layername = "Shape" drv = ogr.GetDriverByName("ESRI Shapefile") dst_ds = drv.CreateDataSource(shp_path) srs = osr.SpatialReference(wkt=prj) dst_layer = dst_ds.CreateLayer(dst_layername, srs=srs) # raster_field = ogr.FieldDefn('id', type_mapping[srcband.DataType]) raster_field = ogr.FieldDefn('id', type_mapping[gdal.GDT_Int32]) dst_layer.CreateField(raster_field) gdal.Polygonize(srcband, srcband, dst_layer, 0, [], callback=None) del img, ds, srcband, dst_ds, dst_layer # extract sinks from dem
Example #14
Source File: gdal2cesium.py From gdal2cesium with GNU General Public License v2.0 | 4 votes |
def make_tiles(self): # Generate the vrt files for zoom ranges i = 0 tmp_res = -1 vrt_file = None for tz in range(self.tminz,self.tmaxz+1): res = self.zoom_resolutions[tz][0] # I check only with resx, because resy will be positively correlated if res != tmp_res: if i>0: self.vrts[vrt_file][1] = tz-1 tmp_res = res resx = self.zoom_resolutions[tz][0] resy = self.zoom_resolutions[tz][1] self.make_vrt(resx,resy,i) vrt_file = "cesium_%s.vrt" % i self.vrts[vrt_file] = [tz,None] i += 1 if tz == self.tmaxz: self.vrts[vrt_file][1] = tz self.ti_cum = 0 if self.options.createtileindexshp and self.tilelayer is None: driver = ogr.GetDriverByName('Esri Shapefile') shptileindexfile = os.path.join(self.output,'tilesindex.shp') if os.path.exists(shptileindexfile): for f in glob.glob(self.output+'/tilesindex.*'): os.remove(f) shptileindex = driver.CreateDataSource(shptileindexfile) self.tilelayer = shptileindex.CreateLayer('tiles', None, ogr.wkbLineString) self.tilelayer.CreateField(ogr.FieldDefn('id', ogr.OFTInteger)) self.tilelayer.CreateField(ogr.FieldDefn('zoom', ogr.OFTInteger)) self.tilelayer.CreateField(ogr.FieldDefn('tile', ogr.OFTString)) self.tilelayer.CreateField(ogr.FieldDefn('children', ogr.OFTInteger)) # Generate parent tiles self.generate_fake_parent_tiles() # For each vrt (i.e. zoom range) generate the tiles self.steps = len(self.vrts) self.step = 1 for vrt in self.vrts.keys(): self.process_vrt(vrt) if not self.options.keepfiles: try: os.remove(vrt) except: pass self.step += 1 self.create_layerjsonfile() if self.options.createtileindexshp and self.tilelayer is not None: shptileindex.Destroy() shptileindex = self.tilelayer = feat = geom = None print """Processing finished. Tiles written to "%s".""" % self.output
Example #15
Source File: analysis.py From RHEAS with MIT License | 4 votes |
def cropYield(shapefile, name, startdate="", enddate="", crop="maize", dbname="rheas"): """Extract crop yield from a specified simulation *name* for dates ranging from *startdate* to *enddate*, and saves them a *shapefile*.""" logging.basicConfig(level=logging.INFO, format='%(message)s') log = logging.getLogger(__name__) db = dbio.connect(dbname) cur = db.cursor() datesql = "" if len(startdate) > 0: try: sdt = datetime.strptime(startdate, "%Y-%m-%d") datesql = "and fdate>=date'{0}'".format(sdt.strftime("%Y-%m-%d")) except ValueError: log.warning("Start date is invalid and will be ignored.") if len(enddate) > 0: try: edt = datetime.strptime(enddate, "%Y-%m-%d") datesql += "and fdate<=date'{0}'".format(edt.strftime("%y-%m-%d")) except ValueError: log.warning("End date is invalid and will be ignored.") fsql = "with f as (select gid,geom,gwad,ensemble,fdate from (select gid,geom,gwad,ensemble,fdate,row_number() over (partition by gid,ensemble order by gwad desc) as rn from {0}.dssat) gwadtable where rn=1 {1})".format(name, datesql) sql = "{0} select gid,st_astext(geom),max(gwad) as max_yield,avg(gwad) as avg_yield,stddev(gwad) as std_yield,max(fdate) as fdate from f group by gid,geom".format(fsql) cur.execute(sql) if bool(cur.rowcount): results = cur.fetchall() drv = ogr.GetDriverByName("ESRI Shapefile") ds = drv.CreateDataSource(shapefile) lyr = ds.CreateLayer("yield", geom_type=ogr.wkbMultiPolygon) lyr.CreateField(ogr.FieldDefn("gid", ogr.OFTInteger)) lyr.CreateField(ogr.FieldDefn("average", ogr.OFTReal)) lyr.CreateField(ogr.FieldDefn("maximum", ogr.OFTReal)) lyr.CreateField(ogr.FieldDefn("minimum", ogr.OFTReal)) for row in results: feat = ogr.Feature(lyr.GetLayerDefn()) feat.SetField("gid", row[0]) feat.SetField("maximum", row[2]) feat.SetField("average", row[3]) feat.SetField("minimum", row[4]) feat.SetGeometry(ogr.CreateGeometryFromWkt(row[1])) lyr.CreateFeature(feat) feat.Destroy() ds.Destroy()
Example #16
Source File: LSD_GeologyTools.py From LSDMappingTools with MIT License | 4 votes |
def geologic_maps_modify_shapefile(shapefile_name, geol_field = "xx"): # The shapefile to be rasterized: print('Rasterize ' + shapefile_name) #get path and filename seperately shapefilefilepath = LSDPT.GetPath(shapefile_name) #shapefilename = LSDPT.GetFileNameNoPath(shapefile_name) shapefileshortname = LSDPT.GetFilePrefix(shapefile_name) # get the new shapefile name new_shapefile_name = shapefilefilepath+os.sep+shapefileshortname+"_new.shp" # copy the shapefile into the new shapefile--we don't wwant to mess up the original data print("The New Shapefile name is: "+new_shapefile_name) Copy_Shapefile(shapefile_name,new_shapefile_name) # New shapefile is opened for writing. dataSource = ogr.Open(new_shapefile_name,1) daLayer = dataSource.GetLayer(0) # add a new field new_field = ogr.FieldDefn("GEOL_CODE", ogr.OFTInteger) daLayer.CreateField(new_field) # lets see what the layers are print("Let me tell you what the names of the fields are after I added one!") layerDefinition = daLayer.GetLayerDefn() for i in range(layerDefinition.GetFieldCount()): print(layerDefinition.GetFieldDefn(i).GetName()) # Make a key for the bedrock geol_dict = dict() geol_iterator = 0 for feature in daLayer: GEOL = feature.GetField(geol_field) if GEOL not in geol_dict: geol_iterator = geol_iterator+1 print("I found a new rock type, GEOL: "+ str(GEOL)+ " and rock type: " + str(geol_iterator)) geol_dict[GEOL] = geol_iterator # now get the geol code this_geol_code = geol_dict[GEOL] # set the feature feature.SetField("GEOL_CODE", this_geol_code) # need to update the layer daLayer.SetFeature(feature) print("The rocks are: ") print(geol_dict) print("All done") return new_shapefile_name, geol_dict
Example #17
Source File: LSDMap_VectorTools.py From LSDMappingTools with MIT License | 4 votes |
def geologic_maps_modify_shapefile(shapefile_name, geol_field = "xx"): # The shapefile to be rasterized: print('Rasterize ' + shapefile_name) #get path and filename seperately shapefilefilepath = LSDPT.GetPath(shapefile_name) #shapefilename = LSDPT.GetFileNameNoPath(shapefile_name) shapefileshortname = LSDPT.GetFilePrefix(shapefile_name) # get the new shapefile name new_shapefile_name = shapefilefilepath+os.sep+shapefileshortname+"_new.shp" # copy the shapefile into the new shapefile--we don't wwant to mess up the original data print("The New Shapefile name is: "+new_shapefile_name) Copy_Shapefile(shapefile_name,new_shapefile_name) # New shapefile is opened for writing. dataSource = ogr.Open(new_shapefile_name,1) daLayer = dataSource.GetLayer(0) # add a new field new_field = ogr.FieldDefn("GEOL_CODE", ogr.OFTInteger) daLayer.CreateField(new_field) # lets see what the layers are print("Let me tell you what the names of the fields are after I added one!") layerDefinition = daLayer.GetLayerDefn() for i in range(layerDefinition.GetFieldCount()): print(layerDefinition.GetFieldDefn(i).GetName()) # Make a key for the bedrock geol_dict = dict() geol_iterator = 0 geol_field = geol_field # for feature in daLayer: GEOL = feature.GetField(geol_field) if GEOL not in geol_dict: geol_iterator = geol_iterator+1 print("I found a new rock type, GEOL: "+ str(GEOL)+ " and rock type: " + str(geol_iterator)) geol_dict[GEOL] = geol_iterator # now get the geol code this_geol_code = geol_dict[GEOL] # set the feature feature.SetField("GEOL_CODE", this_geol_code) # need to update the layer daLayer.SetFeature(feature) print("The rocks are: ") print(geol_dict) print("All done") return new_shapefile_name, geol_dict