コード例 #1
0
ファイル: geom.py プロジェクト: PowerPan/mapproxy
def load_ogr_datasource(datasource, where=None):
    """
    Loads polygons from any OGR datasource.

    Returns a list of Shapely Polygons.
    """
    from mapproxy.util.ogr import OGRShapeReader, OGRShapeReaderError

    polygons = []
    try:
        with closing(OGRShapeReader(datasource)) as reader:
            for wkt in reader.wkts(where):
                try:
                    geom = shapely.wkt.loads(wkt.decode())
                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
コード例 #2
0
ファイル: test_ogr_reader.py プロジェクト: GeoDodo/mapproxy
class TestOGRShapeReader(object):
    def setup(self):
        self.reader = OGRShapeReader(polygon_file)
    def test_read_all(self):
        wkts = list(self.reader.wkts())
        eq_(len(wkts), 3)
        for wkt in wkts:
            assert wkt.startswith(b'POLYGON ('), 'unexpected WKT: %s' % wkt
    def test_read_filter(self):
        wkts = list(self.reader.wkts(where='name = "germany"'))
        eq_(len(wkts), 2)
        for wkt in wkts:
            assert wkt.startswith(b'POLYGON ('), 'unexpected WKT: %s' % wkt
    def test_read_filter_no_match(self):
        wkts = list(self.reader.wkts(where='name = "foo"'))
        eq_(len(wkts), 0)
コード例 #3
0
class TestOGRShapeReader(object):
    def setup(self):
        self.reader = OGRShapeReader(polygon_file)

    def test_read_all(self):
        wkts = list(self.reader.wkts())
        eq_(len(wkts), 3)
        for wkt in wkts:
            assert wkt.startswith(b'POLYGON ('), 'unexpected WKT: %s' % wkt

    def test_read_filter(self):
        wkts = list(self.reader.wkts(where='name = "germany"'))
        eq_(len(wkts), 2)
        for wkt in wkts:
            assert wkt.startswith(b'POLYGON ('), 'unexpected WKT: %s' % wkt

    def test_read_filter_no_match(self):
        wkts = list(self.reader.wkts(where='name = "foo"'))
        eq_(len(wkts), 0)
コード例 #4
0
def load_datasource(datasource, where=None):
    """
    Loads polygons from any OGR datasource.
    
    Returns the bbox and a Shapely MultiPolygon with
    the loaded geometries.
    """
    from mapproxy.util.ogr import OGRShapeReader
    
    polygons = []
    for wkt in OGRShapeReader(datasource).wkts(where):
        geom = shapely.wkt.loads(wkt)
        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)
    
    return polygons
コード例 #5
0
def load_ogr_datasource(datasource, where=None):
    """
    Loads polygons from any OGR datasource.

    Returns a list of Shapely Polygons.
    """
    from mapproxy.util.ogr import OGRShapeReader

    polygons = []
    with closing(OGRShapeReader(datasource)) as reader:
        for wkt in reader.wkts(where):
            geom = shapely.wkt.loads(wkt)
            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)

    return polygons
コード例 #6
0
 def setup(self):
     self.reader = OGRShapeReader(polygon_file)
コード例 #7
0
 def setup(self):
     self.reader = OGRShapeReader(polygon_file)