def test_dissolve(tmpdir, travis, testdata): scene = Raster(testdata['tif']) bbox1 = scene.bbox() # retrieve extent and shift its coordinates by one unit ext = bbox1.extent for key in ext.keys(): ext[key] += 1 # create new bbox shapefile with modified extent bbox2_name = os.path.join(str(tmpdir), 'bbox2.shp') bbox(ext, bbox1.srs, bbox2_name) # assert intersection between the two bboxes and combine them into one with Vector(bbox2_name) as bbox2: assert intersect(bbox1, bbox2) is not None bbox1.addvector(bbox2) # write combined bbox into new shapefile bbox3_name = os.path.join(str(tmpdir), 'bbox3.shp') bbox1.write(bbox3_name) bbox1.close() if not travis and platform.system() != 'Windows': # dissolve the geometries in bbox3 and write the result to new bbox4 # this test is currently disabled for Travis as the current sqlite3 version on Travis seems to not support # loading gdal as extension; Travis CI setup: Ubuntu 14.04 (Trusty), sqlite3 version 3.8.2 (2018-06-04) bbox4_name = os.path.join(str(tmpdir), 'bbox4.shp') dissolve(bbox3_name, bbox4_name, field='area') assert os.path.isfile(bbox4_name)
def _filter_overlap(scenes, wkt_geometry, min_overlap=0): """Filter scenes based on the minimum overlap to the area of interest Args: scenes: List of scenes to filter wkt_geometry: Wkt Geometry representation of the area of interest min_overlap: Minimum overlap (0-1) in decimal format between scene geometry and area of interest Returns: Filtered list of scenes """ filtered = [] with wkt2vector(wkt_geometry, srs=4326) as vec1: site_area = vec1.getArea() for scene in scenes: with wkt2vector(scene['footprint'], srs=4326) as vec2: footprint_area = vec2.getArea() with intersect(vec1, vec2) as inter: intersect_area = inter.getArea() overlap = intersect_area / site_area if overlap > min_overlap or ( site_area / footprint_area > 1 and intersect_area / footprint_area > min_overlap): scene['_script_overlap'] = overlap * 100 filtered.append(scene) return filtered