Satpy
IO
Raw data
Himawari (western Pacific)
import s3fs
fs = s3fs.S3FileSystem(anon=True)
Full disk
fs.get('noaa-himawari8/AHI-L1b-FLDK/YYYY/MM/DD/HHMM/*', 'FOLDER')
# Japan
...
GOES-16 (Atlantic)
AWS
https://registry.opendata.aws/noaa-goes/
https://noaa-goes16.s3.amazonaws.com/index.html
Full disk
# fs.glob('noaa-goes16/ABI-L1b-RadF/2020/265/02/*s20202650200181*')
fs.get('noaa-goes16/ABI-L1b-RadF/2020/265/02/*', 'FOLDER')
Satpy
import glob
from satpy import Scene
filenames = glob.glob('FOLDER/*')
Himawari (western Pacific)
scn = Scene(reader='ahi_hsd', filenames=filenames)
GOES-16 (Atlantic)
scn = Scene(reader='abi_l1b', filenames=filenames)
Resample
scn2 = scn.resample(scn.min_area(), resampler='native')
Crop
ll_bbox = (120, 30, 140, 40) # W, S, E, N
scn = scn.crop(ll_bbox=ll_bbox)
Plots
Simple viewer
scn.load(['CHANNEL']) # B04
scn.show('CHANNEL') # B04
Simple viewer (composites)
May need resampled first
scn.load(['CHANNEL'])
scn.load(['COMPOSITE']) # true_color, natural_color, colorized_ir_clouds
scn2 = scn.resample(scn.min_area(), resampler='native')
scn2.show('COMPOSITE')
scn2.save_dataset('true_color', filename='FILE.png')
Save plots
scn.save_dataset('CHANNEL', filename='FILE.png')
scn.save_dataset('CHANNEL', filename='FILE.tif', writer='geotiff')
Cartopy
import matplotlib.pyplot as plt
crs = scn['CHANNEL'].attrs['area'].to_cartopy_crs()
fig, ax = plt.subplots(figsize=(25, 15))
ax = plt.axes(projection=crs)
ax.gridlines(draw_labels=True)
plt.imshow(scn['CHANNEL'], cmap='Greys_r', transform=crs, extent=crs.bounds, origin='upper')
Utils
See datasets
scn.available_dataset_names(composites=False)
global_scene.available_composite_names()
See readers
from satpy import available_readers
available_readers(as_dict=False)
Get latest time files
def get_latest_time(filenames):
s_filenames = pd.Series(filenames)
s = s_filenames.str.split('_', expand=True)
times = s[4].drop_duplicates()
times = times.str.strip('s')
ix = s[s[4].str.contains(times.max())].index.values
return list(s_filenames.loc[ix])
Debugging
from satpy.utils import debug_on; debug_on()