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])
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])
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)), ])
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))
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))
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))
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))
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))
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))])
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))
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])
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])
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))
def setup(self): self.coverage = coverage([-10, 10, 80, 80], SRS(4326))
def coverage_from_feature_collection(feature_collection): geom = geometry_from_feature_collection(feature_collection) if geom: return coverage(geom, SRS(3857))
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))
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)
def coverage_from_geojson_object(geojson): if not geojson: return geom = asShape(geojson) return coverage(geom, SRS(3857))
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)), ])