Skip to content

Commit

Permalink
fix ogr import error in mapproxy-util
Browse files Browse the repository at this point in the history
defer loading of libgdal till it's needed
  • Loading branch information
olt committed Jul 9, 2014
1 parent 0a29202 commit 7914059
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 19 deletions.
6 changes: 2 additions & 4 deletions mapproxy/seed/config.py
Expand Up @@ -27,13 +27,11 @@
from mapproxy.util.py import memoize
from mapproxy.util.times import timestamp_from_isodate, timestamp_before
from mapproxy.util.coverage import MultiCoverage, BBOXCoverage, GeomCoverage
from mapproxy.util.geom import GeometryError, EmptyGeometryError
from mapproxy.util.geom import GeometryError, EmptyGeometryError, CoverageReadError
from mapproxy.util.yaml import load_yaml_file, YAMLError
from mapproxy.seed.util import bidict
from mapproxy.seed.seeder import SeedTask, CleanupTask
from mapproxy.seed.spec import validate_seed_conf
from mapproxy.util.ogr import OGRShapeReaderError


class SeedConfigurationError(ConfigurationError):
pass
Expand Down Expand Up @@ -150,7 +148,7 @@ def coverage(self, name):

try:
coverage = load_coverage(coverage_conf)
except OGRShapeReaderError, ex:
except CoverageReadError as ex:
raise SeedConfigurationError("can't load coverage '%s'. %s" % (name, ex))
except GeometryError, ex:
raise SeedConfigurationError("invalid geometry in coverage '%s'. %s" % (name, ex))
Expand Down
36 changes: 21 additions & 15 deletions mapproxy/util/geom.py
Expand Up @@ -39,6 +39,9 @@ class GeometryError(Exception):
class EmptyGeometryError(Exception):
pass

class CoverageReadError(Exception):
pass

def require_geom_support():
if not geom_support:
raise ImportError('Shapely required for geometry support')
Expand Down Expand Up @@ -66,23 +69,26 @@ def load_ogr_datasource(datasource, where=None):
Returns a list of Shapely Polygons.
"""
from mapproxy.util.ogr import OGRShapeReader
from mapproxy.util.ogr import OGRShapeReader, OGRShapeReaderError

polygons = []
with closing(OGRShapeReader(datasource)) as reader:
for wkt in reader.wkts(where):
try:
geom = shapely.wkt.loads(wkt)
except ReadingError, ex:
raise GeometryError(ex)
if geom.type == 'Polygon':
polygons.append(geom)
elif geom.type == 'MultiPolygon':
for p in geom:
polygons.append(p)
else:
log_config.warn('skipping %s geometry from %s: not a Polygon/MultiPolygon',
geom.type, datasource)
try:
with closing(OGRShapeReader(datasource)) as reader:
for wkt in reader.wkts(where):
try:
geom = shapely.wkt.loads(wkt)
except ReadingError as ex:
raise GeometryError(ex)
if geom.type == 'Polygon':
polygons.append(geom)
elif geom.type == 'MultiPolygon':
for p in geom:
polygons.append(p)
else:
log_config.warn('skipping %s geometry from %s: not a Polygon/MultiPolygon',
geom.type, datasource)
except OGRShapeReaderError as ex:
raise CoverageReadError(ex)

return polygons

Expand Down

0 comments on commit 7914059

Please sign in to comment.