Simplified index bounds checking in GDAL objects.
This commit is contained in:
parent
f9c2fd30be
commit
adc07e8f90
|
@ -96,9 +96,10 @@ class DataSource(GDALBase):
|
||||||
if not layer:
|
if not layer:
|
||||||
raise OGRIndexError('invalid OGR Layer name given: "%s"' % index)
|
raise OGRIndexError('invalid OGR Layer name given: "%s"' % index)
|
||||||
elif isinstance(index, int):
|
elif isinstance(index, int):
|
||||||
if index < 0 or index >= self.layer_count:
|
if 0 <= index < self.layer_count:
|
||||||
raise OGRIndexError('index out of range')
|
|
||||||
layer = capi.get_layer(self._ptr, index)
|
layer = capi.get_layer(self._ptr, index)
|
||||||
|
else:
|
||||||
|
raise OGRIndexError('index out of range')
|
||||||
else:
|
else:
|
||||||
raise TypeError('Invalid index type: %s' % type(index))
|
raise TypeError('Invalid index type: %s' % type(index))
|
||||||
return Layer(layer, self)
|
return Layer(layer, self)
|
||||||
|
|
|
@ -35,10 +35,10 @@ class Feature(GDALBase):
|
||||||
"""
|
"""
|
||||||
if isinstance(index, str):
|
if isinstance(index, str):
|
||||||
i = self.index(index)
|
i = self.index(index)
|
||||||
else:
|
elif 0 <= index < self.num_fields:
|
||||||
if index < 0 or index > self.num_fields:
|
|
||||||
raise OGRIndexError('index out of range')
|
|
||||||
i = index
|
i = index
|
||||||
|
else:
|
||||||
|
raise OGRIndexError('index out of range')
|
||||||
return Field(self, i)
|
return Field(self, i)
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
|
|
|
@ -555,7 +555,7 @@ class LineString(OGRGeometry):
|
||||||
|
|
||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
"Return the Point at the given index."
|
"Return the Point at the given index."
|
||||||
if index >= 0 and index < self.point_count:
|
if 0 <= index < self.point_count:
|
||||||
x, y, z = c_double(), c_double(), c_double()
|
x, y, z = c_double(), c_double(), c_double()
|
||||||
capi.get_point(self.ptr, index, byref(x), byref(y), byref(z))
|
capi.get_point(self.ptr, index, byref(x), byref(y), byref(z))
|
||||||
dim = self.coord_dim
|
dim = self.coord_dim
|
||||||
|
@ -625,10 +625,10 @@ class Polygon(OGRGeometry):
|
||||||
|
|
||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
"Get the ring at the specified index."
|
"Get the ring at the specified index."
|
||||||
if index < 0 or index >= self.geom_count:
|
if 0 <= index < self.geom_count:
|
||||||
raise OGRIndexError('index out of range: %s' % index)
|
|
||||||
else:
|
|
||||||
return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)
|
return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)
|
||||||
|
else:
|
||||||
|
raise OGRIndexError('index out of range: %s' % index)
|
||||||
|
|
||||||
# Polygon Properties
|
# Polygon Properties
|
||||||
@property
|
@property
|
||||||
|
@ -664,10 +664,10 @@ class GeometryCollection(OGRGeometry):
|
||||||
|
|
||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
"Get the Geometry at the specified index."
|
"Get the Geometry at the specified index."
|
||||||
if index < 0 or index >= self.geom_count:
|
if 0 <= index < self.geom_count:
|
||||||
raise OGRIndexError('index out of range: %s' % index)
|
|
||||||
else:
|
|
||||||
return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)
|
return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)
|
||||||
|
else:
|
||||||
|
raise OGRIndexError('index out of range: %s' % index)
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
"Iterate over each Geometry."
|
"Iterate over each Geometry."
|
||||||
|
|
Loading…
Reference in New Issue