Make band_paths work with unzipped folders

This commit is contained in:
heyarne 2020-07-24 11:28:36 +00:00
commit cdcab96370

View file

@ -1,29 +1,25 @@
import zipfile import zipfile
import glob
from Pathlib import Path
def band_paths(p, bands, resolution=None): def band_paths(p, bands, resolution=None):
''' '''
Given a zip file at `p`, returns the paths inside p to the raster files containing Given a zip file or folder at `p`, returns the paths inside p to the raster files containing
information for the given bands. Because some bands are available in more than one information for the given bands. Because some bands are available in more than one
resolution, this can be filtered by prodiding a third parameter (e.g. resolution='10m'). resolution, this can be filtered by prodiding a third parameter (e.g. resolution='10m').
The returned paths are formatted in the zip scheme as per Apache Commons VFS if necessary
and can be directly opened by rasterio.
The returned paths are formatted in the zip scheme as per Apache Commons VFS and can
thus be directly opened by rasterio.
''' '''
if p.endswith('.zip'):
with zipfile.ZipFile(p) as f: with zipfile.ZipFile(p) as f:
files = f.namelist() files = f.namelist()
rasters = [f for f in files if f.endswith('.jp2')] rasters = [f for f in files if f.endswith('.jp2')]
else:
rasters = glob.glob(Path(p) / '**/*.jp2'
rasters = [r for r in rasters for b in bands if b in r] rasters = [r for r in rasters for b in bands if b in r]
if resolution: if resolution:
rasters = [r for r in rasters if resolution in r] rasters = [r for r in rasters if resolution in r]