Example #1
0
 def setup(self):
     # box from 10 10 to 80 80 with small spike/corner to -10 60 (upper left)
     self.geom = shapely.wkt.loads(
         "POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     self.coverage1 = coverage(self.geom, SRS(4326))
     self.coverage2 = coverage([100, 0, 120, 20], SRS(4326))
     self.coverage = MultiCoverage([self.coverage1, self.coverage2])
Example #2
0
 def setup(self):
     # box from 10 10 to 80 80 with small spike/corner to -10 60 (upper left)
     self.geom = shapely.wkt.loads(
         "POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     self.coverage1 = coverage(self.geom, SRS(4326))
     self.coverage2 = coverage([100, 0, 120, 20], SRS(4326))
     self.coverage = MultiCoverage([self.coverage1, self.coverage2])
Example #3
0
 def setup(self):
     g1 = coverage(
         shapely.wkt.loads("POLYGON((-10 0, 20 0, 20 10, -10 10, -10 0))"),
         SRS(4326))
     g2 = coverage([0, 2, 8, 8], SRS(4326))
     g3 = coverage(
         shapely.wkt.loads(
             "POLYGON((-1000000 500000, 0 500000, 0 1000000, -1000000 1000000, -1000000 500000))"
         ), SRS(3857))
     self.coverage = diff_coverage([g1, g2, g3])
Example #4
0
 def setup(self):
     self.coverage = union_coverage([
         coverage([0, 0, 10, 10], SRS(4326)),
         coverage(
             shapely.wkt.loads("POLYGON((10 0, 20 0, 20 10, 10 10, 10 0))"),
             SRS(4326)),
         coverage(
             shapely.wkt.loads(
                 "POLYGON((-1000000 0, 0 0, 0 1000000, -1000000 1000000, -1000000 0))"
             ), SRS(3857)),
     ])
Example #5
0
def load_coverage(conf):
    if "ogr_datasource" in conf:
        require_geom_support()
        srs = conf["ogr_srs"]
        datasource = conf["ogr_datasource"]
        if not re.match(r"^\w{2,}:", datasource):
            # looks like a file and not PG:, MYSQL:, etc
            # make absolute path
            datasource = abspath(datasource)
        where = conf.get("ogr_where", None)
        geom = load_datasource(datasource, where)
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif "polygons" in conf:
        require_geom_support()
        srs = conf["polygons_srs"]
        geom = load_polygons(abspath(conf["polygons"]))
        bbox, geom = build_multipolygon(geom, simplify=True)
    else:
        srs = conf["bbox_srs"]
        bbox = conf["bbox"]
        if isinstance(bbox, basestring):
            bbox = map(float, bbox.split(","))
        geom = None

    return coverage(geom or bbox, SRS(srs))
Example #6
0
def coverage_intersection(a, b):
    if a and not b:
        return a
    if b and not a:
        return b
    geom = a.geom.intersection(b.geom)
    return coverage(geom, SRS(3857))
Example #7
0
def load_coverage(conf):
    if 'ogr_datasource' in conf:
        require_geom_support()
        srs = conf['ogr_srs']
        datasource = conf['ogr_datasource']
        if not re.match(r'^\w{2,}:', datasource):
            # looks like a file and not PG:, MYSQL:, etc
            # make absolute path
            datasource = abspath(datasource)
        where = conf.get('ogr_where', None)
        geom = load_datasource(datasource, where)
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'polygons' in conf:
        require_geom_support()
        srs = conf['polygons_srs']
        geom = load_polygons(abspath(conf['polygons']))
        bbox, geom = build_multipolygon(geom, simplify=True)
    else:
        srs = conf['bbox_srs']
        bbox = conf['bbox']
        if isinstance(bbox, basestring):
            bbox = map(float, bbox.split(','))
        geom = None

    return coverage(geom or bbox, SRS(srs))
Example #8
0
def coverage_intersection(a, b):
    if a and not b:
        return a
    if b and not a:
        return b
    geom = a.geom.intersection(b.geom)
    return coverage(geom, SRS(3857))
Example #9
0
 def test_eq(self):
     g1 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     g2 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert coverage(g1, SRS(4326)) == coverage(g2, SRS(4326))
     assert coverage(g1, SRS(4326)) != coverage(g2, SRS(31467))
     g3 = shapely.wkt.loads("POLYGON((10.0 10, 10 50.0, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert coverage(g1, SRS(4326)) == coverage(g3, SRS(4326))
     g4 = shapely.wkt.loads("POLYGON((10 10, 10.1 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert coverage(g1, SRS(4326)) != coverage(g4, SRS(4326))
Example #10
0
 def test_eq(self):
     g1 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     g2 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert coverage(g1, SRS(4326)) == coverage(g2, SRS(4326))
     assert coverage(g1, SRS(4326)) != coverage(g2, SRS(31467))
     g3 = shapely.wkt.loads("POLYGON((10.0 10, 10 50.0, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert coverage(g1, SRS(4326)) == coverage(g3, SRS(4326))
     g4 = shapely.wkt.loads("POLYGON((10 10, 10.1 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert coverage(g1, SRS(4326)) != coverage(g4, SRS(4326))
Example #11
0
 def test_eq(self):
     assert coverage([-10, 10, 80, 80],
                     SRS(4326)) == coverage([-10, 10, 80, 80], SRS(4326))
     assert coverage([-10, 10, 80, 80],
                     SRS(4326)) == coverage([-10, 10.0, 80.0, 80],
                                            SRS(4326))
     assert coverage([-10, 10, 80, 80], SRS(4326)) != coverage(
         [-10.1, 10.0, 80.0, 80], SRS(4326))
     assert coverage([-10, 10, 80, 80], SRS(4326)) != coverage(
         [-10, 10.0, 80.0, 80], SRS(31467))
Example #12
0
 def test_eq(self):
     g1 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     g2 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert MultiCoverage([coverage(g1, SRS(4326))]) == MultiCoverage([coverage(g2, SRS(4326))])
     assert MultiCoverage([coverage(g1, SRS(4326))]) != MultiCoverage([coverage(g2, SRS(31467))])
     c = coverage([-10, 10, 80, 80], SRS(4326))
     assert MultiCoverage([c, coverage(g1, SRS(4326))]) != MultiCoverage([c, coverage(g2, SRS(31467))])
Example #13
0
 def test_eq(self):
     g1 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     g2 = shapely.wkt.loads("POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     assert MultiCoverage([coverage(g1, SRS(4326))]) == MultiCoverage([coverage(g2, SRS(4326))])
     assert MultiCoverage([coverage(g1, SRS(4326))]) != MultiCoverage([coverage(g2, SRS(31467))])
     c = coverage([-10, 10, 80, 80], SRS(4326))
     assert MultiCoverage([c, coverage(g1, SRS(4326))]) != MultiCoverage([c, coverage(g2, SRS(31467))])
Example #14
0
def load_coverage(conf, base_path=None):
    if 'ogr_datasource' in conf:
        require_geom_support()
        srs = conf['ogr_srs']
        datasource = conf['ogr_datasource']
        if not re.match(r'^\w{2,}:', datasource):
            # looks like a file and not PG:, MYSQL:, etc
            # make absolute path
            datasource = abspath(datasource, base_path=base_path)
        where = conf.get('ogr_where', None)
        geom = load_ogr_datasource(datasource, where)
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'polygons' in conf:
        require_geom_support()
        srs = conf['polygons_srs']
        geom = load_polygons(abspath(conf['polygons'], base_path=base_path))
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'bbox' in conf:
        srs = conf.get('bbox_srs') or conf['srs']
        bbox = conf['bbox']
        if isinstance(bbox, string_type):
            bbox = [float(x) for x in bbox.split(',')]
        geom = None
    elif 'datasource' in conf:
        require_geom_support()
        datasource = conf['datasource']
        srs = conf['srs']
        if isinstance(datasource, (list, tuple)):
            bbox = datasource
            geom = None
        elif bbox_string_re.match(datasource):
            bbox = [float(x) for x in datasource.split(',')]
            geom = None
        else:
            if not re.match(r'^\w{2,}:', datasource):
                # looks like a file and not PG:, MYSQL:, etc
                # make absolute path
                datasource = abspath(datasource, base_path=base_path)
            where = conf.get('where', None)
            geom = load_datasource(datasource, where)
            bbox, geom = build_multipolygon(geom, simplify=True)
    else:
        return None
    return coverage(geom or bbox, SRS(srs))
Example #15
0
 def setup(self):
     g1 = coverage(shapely.wkt.loads("POLYGON((-10 0, 20 0, 20 10, -10 10, -10 0))"), SRS(4326))
     g2 = coverage([0, 2, 8, 8], SRS(4326))
     g3 = coverage(shapely.wkt.loads("POLYGON((-1000000 500000, 0 500000, 0 1000000, -1000000 1000000, -1000000 500000))"), SRS(3857))
     self.coverage = diff_coverage([g1, g2, g3])
Example #16
0
 def setup(self):
     g1 = coverage(shapely.wkt.loads("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"), SRS(4326))
     g2 = coverage([5, 5, 15, 15], SRS(4326))
     self.coverage = intersection_coverage([g1, g2])
Example #17
0
 def test_eq(self):
     assert coverage([-10, 10, 80, 80], SRS(4326)) == coverage([-10, 10, 80, 80], SRS(4326))
     assert coverage([-10, 10, 80, 80], SRS(4326)) == coverage([-10, 10.0, 80.0, 80], SRS(4326))
     assert coverage([-10, 10, 80, 80], SRS(4326)) != coverage([-10.1, 10.0, 80.0, 80], SRS(4326))
     assert coverage([-10, 10, 80, 80], SRS(4326)) != coverage([-10, 10.0, 80.0, 80], SRS(31467))
Example #18
0
 def setup(self):
     self.coverage = coverage([-10, 10, 80, 80], SRS(4326))
Example #19
0
def coverage_from_feature_collection(feature_collection):
    geom = geometry_from_feature_collection(feature_collection)
    if geom:
        return coverage(geom, SRS(3857))
Example #20
0
 def setup(self):
     # box from 10 10 to 80 80 with small spike/corner to -10 60 (upper left)
     self.geom = shapely.wkt.loads(
         "POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     self.coverage = coverage(self.geom, SRS(4326))
Example #21
0
def load_coverage(conf, base_path=None):
    clip = False
    if 'clip' in conf:
        clip = conf['clip']

    if 'union' in conf:
        parts = []
        for cov in conf['union']:
            parts.append(load_coverage(cov))
        return union_coverage(parts, clip=clip)
    elif 'intersection' in conf:
        parts = []
        for cov in conf['intersection']:
            parts.append(load_coverage(cov))
        return intersection_coverage(parts, clip=clip)
    elif 'difference' in conf:
        parts = []
        for cov in conf['difference']:
            parts.append(load_coverage(cov))
        return diff_coverage(parts, clip=clip)
    elif 'ogr_datasource' in conf:
        require_geom_support()
        srs = conf['ogr_srs']
        datasource = conf['ogr_datasource']
        if not re.match(r'^\w{2,}:', datasource):
            # looks like a file and not PG:, MYSQL:, etc
            # make absolute path
            datasource = abspath(datasource, base_path=base_path)
        where = conf.get('ogr_where', None)
        geom = load_ogr_datasource(datasource, where)
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'polygons' in conf:
        require_geom_support()
        srs = conf['polygons_srs']
        geom = load_polygons(abspath(conf['polygons'], base_path=base_path))
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'bbox' in conf:
        srs = conf.get('bbox_srs') or conf['srs']
        bbox = conf['bbox']
        if isinstance(bbox, string_type):
            bbox = [float(x) for x in bbox.split(',')]
        geom = None
    elif 'datasource' in conf:
        require_geom_support()
        datasource = conf['datasource']
        srs = conf['srs']
        if isinstance(datasource, (list, tuple)):
            bbox = datasource
            geom = None
        elif bbox_string_re.match(datasource):
            bbox = [float(x) for x in datasource.split(',')]
            geom = None
        else:
            if not re.match(r'^\w{2,}:', datasource):
                # looks like a file and not PG:, MYSQL:, etc
                # make absolute path
                datasource = abspath(datasource, base_path=base_path)
            where = conf.get('where', None)
            geom = load_datasource(datasource, where)
            bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'expire_tiles' in conf:
        require_geom_support()
        filename = abspath(conf['expire_tiles'])
        geom = load_expire_tiles(filename)
        _, geom = build_multipolygon(geom, simplify=False)
        return coverage(geom, SRS(3857))
    else:
        return None

    return coverage(geom or bbox, SRS(srs), clip=clip)
Example #22
0
 def setup(self):
     g1 = coverage(shapely.wkt.loads("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"), SRS(4326))
     g2 = coverage([5, 5, 15, 15], SRS(4326))
     self.coverage = intersection_coverage([g1, g2])
Example #23
0
def load_coverage(conf, base_path=None):
    clip = False
    if 'clip' in conf:
        clip = conf['clip']

    if 'union' in conf:
        parts = []
        for cov in conf['union']:
            parts.append(load_coverage(cov))
        return union_coverage(parts, clip=clip)
    elif 'intersection' in conf:
        parts = []
        for cov in conf['intersection']:
            parts.append(load_coverage(cov))
        return intersection_coverage(parts, clip=clip)
    elif 'difference' in conf:
        parts = []
        for cov in conf['difference']:
            parts.append(load_coverage(cov))
        return diff_coverage(parts, clip=clip)
    elif 'ogr_datasource' in conf:
        require_geom_support()
        srs = conf['ogr_srs']
        datasource = conf['ogr_datasource']
        if not re.match(r'^\w{2,}:', datasource):
            # looks like a file and not PG:, MYSQL:, etc
            # make absolute path
            datasource = abspath(datasource, base_path=base_path)
        where = conf.get('ogr_where', None)
        geom = load_ogr_datasource(datasource, where)
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'polygons' in conf:
        require_geom_support()
        srs = conf['polygons_srs']
        geom = load_polygons(abspath(conf['polygons'], base_path=base_path))
        bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'bbox' in conf:
        srs = conf.get('bbox_srs') or conf['srs']
        bbox = conf['bbox']
        if isinstance(bbox, string_type):
            bbox = [float(x) for x in bbox.split(',')]
        geom = None
    elif 'datasource' in conf:
        require_geom_support()
        datasource = conf['datasource']
        srs = conf['srs']
        if isinstance(datasource, (list, tuple)):
            bbox = datasource
            geom = None
        elif bbox_string_re.match(datasource):
            bbox = [float(x) for x in datasource.split(',')]
            geom = None
        else:
            if not re.match(r'^\w{2,}:', datasource):
                # looks like a file and not PG:, MYSQL:, etc
                # make absolute path
                datasource = abspath(datasource, base_path=base_path)
            where = conf.get('where', None)
            geom = load_datasource(datasource, where)
            bbox, geom = build_multipolygon(geom, simplify=True)
    elif 'expire_tiles' in conf:
        require_geom_support()
        filename = abspath(conf['expire_tiles'])
        geom = load_expire_tiles(filename)
        _, geom = build_multipolygon(geom, simplify=False)
        return coverage(geom, SRS(3857))
    else:
        return None

    return coverage(geom or bbox, SRS(srs), clip=clip)
Example #24
0
 def setup(self):
     self.coverage = coverage([-10, 10, 80, 80], SRS(4326))
Example #25
0
 def setup(self):
     # box from 10 10 to 80 80 with small spike/corner to -10 60 (upper left)
     self.geom = shapely.wkt.loads(
         "POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")
     self.coverage = coverage(self.geom, SRS(4326))
Example #26
0
def coverage_from_geojson_object(geojson):
    if not geojson:
        return

    geom = asShape(geojson)
    return coverage(geom, SRS(3857))
Example #27
0
def coverage_from_geojson_object(geojson):
    if not geojson:
        return

    geom = asShape(geojson)
    return coverage(geom, SRS(3857))
Example #28
0
def coverage_from_feature_collection(feature_collection):
    geom = geometry_from_feature_collection(feature_collection)
    if geom:
        return coverage(geom, SRS(3857))
Example #29
0
 def setup(self):
     self.coverage = union_coverage([
         coverage([0, 0, 10, 10], SRS(4326)),
         coverage(shapely.wkt.loads("POLYGON((10 0, 20 0, 20 10, 10 10, 10 0))"), SRS(4326)),
         coverage(shapely.wkt.loads("POLYGON((-1000000 0, 0 0, 0 1000000, -1000000 1000000, -1000000 0))"), SRS(3857)),
     ])