x, y = geoportail_pyramid[level].coordinate_to_projection(location) from PyGeoPortail.Math.Interval import Interval2D interval = Interval2D((x, x + 500), (y, y + 500)) mosaic_interval = geoportail_pyramid[level].projection_interval_to_mosaic(interval) print(mosaic_interval) # for row, column in mosaic_interval.iter(): # print(row, column) loop = asyncio.get_event_loop() tile = loop.run_until_complete(geoportail_wtms.download_ortho_photo(level, row, column)) # tile.to_pil_image().save(tile.filename(with_layer=True, with_level=True)) geoportail_map_provider = GeoPortailMapProvider(geoportail_wtms) tasks = [asyncio.async(geoportail_map_provider.get_tile(level, row, column + i)) for i in range(3)] loop.run_until_complete(asyncio.wait(tasks)) lru_cache = LruCache(constraint=1024**3) def done_callback(future): print('done', future.result()) cached_pyramid = CachedPyramid(geoportail_map_provider, lru_cache) tasks = [asyncio.async(cached_pyramid.acquire(level, row, column + i)) for i in (0, 1, 0)] for task in tasks: task.add_done_callback(done_callback) loop.run_until_complete(asyncio.wait(tasks)) cached_pyramid.release(level, row, column) lru_cache.recycle()
loop = asyncio.get_event_loop() cache_path = os.path.join(os.environ['HOME'], '.cache', 'pygeoportail') if not os.path.exists(cache_path): os.mkdir(cache_path) def done_callback(future): tile = future.result() tile.save(cache_path) if False: level_max = 16 for level in range(level_max +1): pyramid_level = geoportail_pyramid[level] mosaic_interval = pyramid_level.projection_interval_to_mosaic(area) print(level, mosaic_interval) for r in mosaic_interval.x.iter(): tasks = [asyncio.async(geoportail_map_provider.get_tile(level, r, c)) for c in mosaic_interval.y.iter()] for task in tasks: task.add_done_callback(done_callback) loop.run_until_complete(asyncio.wait(tasks)) loop.close() #################################################################################################### # # End # ####################################################################################################