def check_string(result, func, cargs, offset=-1, str_result=False): """ Checks the string output returned from the given function, and frees the string pointer allocated by OGR. The `str_result` keyword may be used when the result is the string pointer, otherwise the OGR error code is assumed. The `offset` keyword may be used to extract the string pointer passed in by-reference at the given slice offset in the function arguments. """ if str_result: # For routines that return a string. ptr = result if not ptr: s = None else: s = string_at(result) else: # Error-code return specified. check_err(result) ptr = ptr_byref(cargs, offset) # Getting the string value s = ptr.value # Correctly freeing the allocated memory behind GDAL pointer # with the VSIFree routine. if ptr: lgdal.VSIFree(ptr) return s
def check_arg_errcode(result, func, cargs): """ The error code is returned in the last argument, by reference. Check its value with `check_err` before returning the result. """ check_err(arg_byref(cargs)) return result
def check_arg_errcode(result, func, cargs, cpl=False): """ The error code is returned in the last argument, by reference. Check its value with `check_err` before returning the result. """ check_err(arg_byref(cargs), cpl=cpl) return result
def check_string(result, func, cargs, offset=-1, str_result=False): """ Checks the string output returned from the given function, and frees the string pointer allocated by OGR. The `str_result` keyword may be used when the result is the string pointer, otherwise the OGR error code is assumed. The `offset` keyword may be used to extract the string pointer passed in by-reference at the given slice offset in the function arguments. """ if str_result: # For routines that return a string. ptr = result if not ptr: s = None else: s = string_at(result) else: # Error-code return specified. check_err(result) ptr = ptr_byref(cargs, offset) # Getting the string value s = ptr.value # Correctly freeing the allocated memory beind GDAL pointer # w/the VSIFree routine. if ptr: lgdal.VSIFree(ptr) return s
def output_mapinfo(self): drv_name = "MapInfo File" drv = ogr.GetDriverByName(drv_name) if drv is None: raise OGRException("%s driver not available" % drv) if not options['output']: raise Exception("Must supply output filename") ds = drv.CreateDataSource(options['output']) if ds is None: raise OGRException("Failed to output to '%s'" % options['output']) srs = osr.SpatialReference() check_err(srs.SetFromUserInput(TARGET_CRS)) lyr = ds.CreateLayer('paatos', srs, ogr.wkbPoint) if lyr is None: raise OGRException("Layer creation failed") field_def = ogr.FieldDefn("diaarinro", ogr.OFTString) field_def.SetWidth(20) check_err(lyr.CreateField(field_def)) field_def = ogr.FieldDefn("otsikko", ogr.OFTString) field_def.SetWidth(100) check_err(lyr.CreateField(field_def)) field_def = ogr.FieldDefn("openahjo", ogr.OFTString) field_def.SetWidth(100) check_err(lyr.CreateField(field_def)) issue_list = Issue.objects.filter(geometries__isnull=False) for issue in issue_list: print issue geom_list = issue.geometries.all() pnt = None for geom in geom_list: g = geom.geometry if not isinstance(g, Point): pnt = g.centroid else: pnt = g break pnt.transform(TARGET_CRS) feat = ogr.Feature(lyr.GetLayerDefn()) feat.SetField("diaarinro", issue.register_id.encode('utf8')) feat.SetField("otsikko", issue.subject.encode('utf8')) feat.SetField( "openahjo", "http://dev.hel.fi/paatokset/asia/%s/" % issue.slug.encode('utf8')) pt = ogr.Geometry(ogr.wkbPoint) pt.SetPoint_2D(0, pnt.x, pnt.y) feat.SetGeometry(pt) check_err(lyr.CreateFeature(feat)) feat.Destroy()
def check_const_string(result, func, cargs, offset=None): """ Similar functionality to `check_string`, but does not free the pointer. """ if offset: check_err(result) ptr = ptr_byref(cargs, offset) return ptr.value else: return result
def check_const_string(result, func, cargs, offset=None, cpl=False): """ Similar functionality to `check_string`, but does not free the pointer. """ if offset: check_err(result, cpl=cpl) ptr = ptr_byref(cargs, offset) return ptr.value else: return result
def output_mapinfo(self): drv_name = "MapInfo File" drv = ogr.GetDriverByName(drv_name) if drv is None: raise OGRException("%s driver not available" % drv) if not options['output']: raise Exception("Must supply output filename") ds = drv.CreateDataSource(options['output']) if ds is None: raise OGRException("Failed to output to '%s'" % options['output']) srs = osr.SpatialReference() check_err(srs.SetFromUserInput(TARGET_CRS)) lyr = ds.CreateLayer('paatos', srs, ogr.wkbPoint) if lyr is None: raise OGRException("Layer creation failed") field_def = ogr.FieldDefn("diaarinro", ogr.OFTString) field_def.SetWidth(20) check_err(lyr.CreateField(field_def)) field_def = ogr.FieldDefn("otsikko", ogr.OFTString) field_def.SetWidth(100) check_err(lyr.CreateField(field_def)) field_def = ogr.FieldDefn("openahjo", ogr.OFTString) field_def.SetWidth(100) check_err(lyr.CreateField(field_def)) issue_list = Issue.objects.filter(geometries__isnull=False) for issue in issue_list: print issue geom_list = issue.geometries.all() pnt = None for geom in geom_list: g = geom.geometry if not isinstance(g, Point): pnt = g.centroid else: pnt = g break pnt.transform(TARGET_CRS) feat = ogr.Feature(lyr.GetLayerDefn()) feat.SetField("diaarinro", issue.register_id.encode('utf8')) feat.SetField("otsikko", issue.subject.encode('utf8')) feat.SetField("openahjo", "http://dev.hel.fi/paatokset/asia/%s/" % issue.slug.encode('utf8')) pt = ogr.Geometry(ogr.wkbPoint) pt.SetPoint_2D(0, pnt.x, pnt.y) feat.SetGeometry(pt) check_err(lyr.CreateFeature(feat)) feat.Destroy()
def check_const_string(result, func, cargs, offset=None): """ Similar functionality to `check_string`, but does not free the pointer. """ if offset: check_err(result) ptr = ptr_byref(cargs, offset) return ptr.value.decode() else: if result is not None: return result.decode()
def _convert_(self): dr = ogr.GetDriverByName('ESRI Shapefile') ds = dr.CreateDataSource(self.path) if ds is None: raise IOError( 'Could not create file on disk. Does it already exist?') layer = ds.CreateLayer(self.layer, srs=self.srs, geom_type=self.ogr_geom) for ogr_field in self.ogr_fields: check_err(layer.CreateField(ogr_field.ogr_field)) feature_def = layer.GetLayerDefn() for attr in (self._get_iter_()): feat = ogr.Feature(feature_def) ## pull values for o in self.ogr_fields: val = attr[o.orig_name.upper()] args = [o.ogr_name, val] try: feat.SetField(*args) except NotImplementedError: args[1] = str(args[1]) feat.SetField(*args) check_err(feat.SetGeometry(ogr.CreateGeometryFromWkt(attr['WKT']))) check_err(layer.CreateFeature(feat)) return (self.path)
def _convert_(self): dr = ogr.GetDriverByName('ESRI Shapefile') ds = dr.CreateDataSource(self.path) if ds is None: raise IOError('Could not create file on disk. Does it already exist?') layer = ds.CreateLayer(self.layer,srs=self.srs,geom_type=self.ogr_geom) for ogr_field in self.ogr_fields: check_err(layer.CreateField(ogr_field.ogr_field)) feature_def = layer.GetLayerDefn() for attr in (self._get_iter_()): feat = ogr.Feature(feature_def) ## pull values for o in self.ogr_fields: val = attr[o.orig_name.upper()] args = [o.ogr_name,val] try: feat.SetField(*args) except NotImplementedError: args[1] = str(args[1]) feat.SetField(*args) check_err(feat.SetGeometry(ogr.CreateGeometryFromWkt(attr['WKT']))) check_err(layer.CreateFeature(feat)) return(self.path)
def write(self): """Write the shapefile to disk.""" dr = ogr.GetDriverByName('ESRI Shapefile') ds = dr.CreateDataSource(self.path) if ds is None: raise IOError( 'Could not create file on disk. Does it already exist?') layer = ds.CreateLayer(self.layer, srs=self.srs, geom_type=self.ogr_geom) for ogr_field in self.ogr_fields: check_err(layer.CreateField(ogr_field.ogr_field)) feature_def = layer.GetLayerDefn() for attr in self.attrs: feat = ogr.Feature(feature_def) for o in self.ogr_fields: if o.orig_name == self.id: args = (o.ogr_name, attr[o.orig_name]) else: args = (o.ogr_name, attr['properties'][o.orig_name]) try: feat.SetField(*args) ## hack for certain osgeo installations not liking datetime ## format passed to SetField except NotImplementedError: args = list(args) args[1] = str(args[1]) feat.SetField(*args) check_err( feat.SetGeometry(ogr.CreateGeometryFromWkt( attr[self.geom].wkt))) check_err(layer.CreateFeature(feat)) ds.Destroy() return ([ self.path.replace('shp', item) for item in ['shp', 'shx', 'prj', 'dbf'] ])
def check_errcode(result, func, cargs): """ Check the error code returned (c_int). """ check_err(result) return
# restype is set to c_void_p if isinstance(result, int): >>>>>>> 37c99181c9a6b95433d60f8c8ef9af5731096435 result = c_void_p(result) if not result: raise GDALException('Invalid geometry pointer returned from "%s".' % func.__name__) return result def check_geom_offset(result, func, cargs, offset=-1): <<<<<<< HEAD "Chcks the geometry at the given offset in the C parameter list." ======= "Check the geometry at the given offset in the C parameter list." >>>>>>> 37c99181c9a6b95433d60f8c8ef9af5731096435 check_err(result) geom = ptr_byref(cargs, offset=offset) return check_geom(geom, func, cargs) # ### Spatial Reference error-checking routines ### def check_srs(result, func, cargs): <<<<<<< HEAD if isinstance(result, six.integer_types): ======= if isinstance(result, int): >>>>>>> 37c99181c9a6b95433d60f8c8ef9af5731096435 result = c_void_p(result) if not result: raise SRSException('Invalid spatial reference pointer returned from "%s".' % func.__name__) return result
def check_geom_offset(result, func, cargs, offset=-1): "Chcks the geometry at the given offset in the C parameter list." check_err(result) geom = ptr_byref(cargs, offset=offset) return check_geom(geom, func, cargs)
"""
def check_errcode(result, func, cargs): """ Check the error code returned (c_int). """ check_err(result)
def check_errcode(result, func, cargs, cpl=False): """ Check the error code returned (c_int). """ check_err(result, cpl=cpl)