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()