mirror of
https://github.com/django/django.git
synced 2025-07-04 09:49:12 +00:00
gis: gdal: cleaned up the error module; got rid of relative imports in __init__; added the utility functions get_fields() and get_geoms() to Layer.
git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@6059 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
85ea950759
commit
ceac9c9645
@ -1,8 +1,8 @@
|
|||||||
from driver import Driver
|
from django.contrib.gis.gdal.driver import Driver
|
||||||
from envelope import Envelope
|
from django.contrib.gis.gdal.envelope import Envelope
|
||||||
from datasource import DataSource
|
from django.contrib.gis.gdal.datasource import DataSource
|
||||||
from srs import SpatialReference, CoordTransform
|
from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
|
||||||
from geometries import OGRGeometry
|
from django.contrib.gis.gdal.geometries import OGRGeometry
|
||||||
from geomtype import OGRGeomType
|
from django.contrib.gis.gdal.geomtype import OGRGeomType
|
||||||
from error import check_err, OGRException, SRSException
|
from django.contrib.gis.gdal.error import check_err, OGRException, SRSException
|
||||||
|
|
||||||
|
@ -1,35 +1,31 @@
|
|||||||
# OGR Error Codes
|
"""
|
||||||
OGRERR_NONE = 0
|
This module houses the OGR & SRS Exception objects, and the
|
||||||
OGRERR_NOT_ENOUGH_DATA = 1
|
check_err() routine which checks the status code returned by
|
||||||
OGRERR_NOT_ENOUGH_MEMORY = 2
|
OGR methods.
|
||||||
OGRERR_UNSUPPORTED_GEOMETRY_TYPE = 3
|
"""
|
||||||
OGRERR_UNSUPPORTED_OPERATION = 4
|
|
||||||
OGRERR_CORRUPT_DATA = 5
|
|
||||||
OGRERR_FAILURE = 6
|
|
||||||
OGRERR_UNSUPPORTED_SRS = 7
|
|
||||||
|
|
||||||
# OGR & SRS Exceptions
|
# OGR & SRS Exceptions
|
||||||
class OGRException(Exception): pass
|
class OGRException(Exception): pass
|
||||||
class SRSException(Exception): pass
|
class SRSException(Exception): pass
|
||||||
|
|
||||||
def check_err(code, msg=False):
|
# OGR Error Codes
|
||||||
|
OGRERR_DICT = { 1 : (OGRException, 'Not enough data.'),
|
||||||
|
2 : (OGRException, 'Not enough memory.'),
|
||||||
|
3 : (OGRException, 'Unsupported geometry type.'),
|
||||||
|
4 : (OGRException, 'Unsupported operation.'),
|
||||||
|
5 : (OGRException, 'Corrupt data.'),
|
||||||
|
6 : (OGRException, 'OGR failure.'),
|
||||||
|
7 : (SRSException, 'Unsupported SRS.'),
|
||||||
|
}
|
||||||
|
OGRERR_NONE = 0
|
||||||
|
|
||||||
|
def check_err(code):
|
||||||
"Checks the given OGRERR, and raises an exception where appropriate."
|
"Checks the given OGRERR, and raises an exception where appropriate."
|
||||||
|
|
||||||
if code == OGRERR_NONE:
|
if code == OGRERR_NONE:
|
||||||
return
|
return
|
||||||
elif code == OGRERR_NOT_ENOUGH_DATA:
|
elif code in OGRERR_DICT:
|
||||||
raise OGRException, 'Not enough data!'
|
e, msg = OGRERR_DICT[code]
|
||||||
elif code == OGRERR_NOT_ENOUGH_MEMORY:
|
raise e, msg
|
||||||
raise OGRException, 'Not enough memory!'
|
|
||||||
elif code == OGRERR_UNSUPPORTED_GEOMETRY_TYPE:
|
|
||||||
raise OGRException, 'Unsupported Geometry Type!'
|
|
||||||
elif code == OGRERR_UNSUPPORTED_OPERATION:
|
|
||||||
raise OGRException, 'Unsupported Operation!'
|
|
||||||
elif code == OGRERR_CORRUPT_DATA:
|
|
||||||
raise OGRException, 'Corrupt Data!'
|
|
||||||
elif code == OGRERR_FAILURE:
|
|
||||||
raise OGRException, 'OGR Failure!'
|
|
||||||
elif code == OGRERR_UNSUPPORTED_SRS:
|
|
||||||
raise SRSException, 'Unsupported SRS!'
|
|
||||||
else:
|
else:
|
||||||
raise OGRException, 'Unknown error code: "%s"' % str(code)
|
raise OGRException, 'Unknown error code: "%s"' % code
|
||||||
|
@ -112,3 +112,19 @@ class Layer(object):
|
|||||||
return [ string_at(lgdal.OGR_Fld_GetNameRef(lgdal.OGR_FD_GetFieldDefn(self._ldefn, i)))
|
return [ string_at(lgdal.OGR_Fld_GetNameRef(lgdal.OGR_FD_GetFieldDefn(self._ldefn, i)))
|
||||||
for i in xrange(self.num_fields) ]
|
for i in xrange(self.num_fields) ]
|
||||||
|
|
||||||
|
#### Layer Methods ####
|
||||||
|
def get_fields(self, field_name):
|
||||||
|
"""Returns a list containing the given field name for every Feature
|
||||||
|
in the Layer."""
|
||||||
|
if not field_name in self.fields:
|
||||||
|
raise OGRException, 'invalid field name: %s' % field_name
|
||||||
|
return [feat.get(field_name) for feat in self]
|
||||||
|
|
||||||
|
def get_geoms(self, geos=False):
|
||||||
|
"""Returns a list containing the OGRGeometry for every Feature in
|
||||||
|
the Layer."""
|
||||||
|
if geos:
|
||||||
|
from django.contrib.gis.geos import fromstr
|
||||||
|
return [fromstr(feat.geom.wkt) for feat in self]
|
||||||
|
else:
|
||||||
|
return [feat.geom for feat in self]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user