示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
    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()
示例#6
0
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
示例#7
0
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
示例#8
0
    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()
示例#9
0
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()
示例#10
0
    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)
示例#11
0
 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)
示例#12
0
    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']
        ])
示例#13
0
def check_errcode(result, func, cargs):
    """
    Check the error code returned (c_int).
    """
    check_err(result)
    return
示例#14
0
    # 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
示例#15
0
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)
示例#16
0
"""
示例#17
0
def check_errcode(result, func, cargs):
    """
    Check the error code returned (c_int).
    """
    check_err(result)
示例#18
0
def check_errcode(result, func, cargs, cpl=False):
    """
    Check the error code returned (c_int).
    """
    check_err(result, cpl=cpl)
示例#19
0
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)
示例#20
0
def check_errcode(result, func, cargs, cpl=False):
    """
    Check the error code returned (c_int).
    """
    check_err(result, cpl=cpl)