mirror of
https://github.com/heyarne/earth-observation-for-journalism.git
synced 2026-05-06 19:13:40 +02:00
Make band_paths work with unzipped folders
This commit is contained in:
parent
08a4a3db4c
commit
cdcab96370
1 changed files with 19 additions and 23 deletions
|
|
@ -1,35 +1,31 @@
|
||||||
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:
|
||||||
|
files = f.namelist()
|
||||||
|
rasters = [f for f in files if f.endswith('.jp2')]
|
||||||
|
else:
|
||||||
|
rasters = glob.glob(Path(p) / '**/*.jp2'
|
||||||
|
|
||||||
with zipfile.ZipFile(p) as f:
|
rasters = [r for r in rasters for b in bands if b in r]
|
||||||
|
if resolution:
|
||||||
|
rasters = [r for r in rasters if resolution in r]
|
||||||
|
|
||||||
files = f.namelist()
|
rasters = ['zip+file://' + p + '!/' + r for r in rasters]
|
||||||
|
return rasters
|
||||||
rasters = [f for f in files if f.endswith('.jp2')]
|
|
||||||
rasters = [r for r in rasters for b in bands if b in r]
|
|
||||||
if resolution:
|
|
||||||
rasters = [r for r in rasters if resolution in r]
|
|
||||||
|
|
||||||
rasters = ['zip+file://' + p + '!/' + r for r in rasters]
|
|
||||||
return rasters
|
|
||||||
|
|
||||||
|
|
||||||
def rgb_paths(zip_file, resolution='10m'):
|
def rgb_paths(zip_file, resolution='10m'):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue