Hi Dave, thanks for your response,
My message took long to display in the group so I did some research using AI, this is what I got.
I'm still trying to process this. Thanks, you just made it easy for me to get through it.
HELLO! GREAT PROJECT, AND YES PYTHON + PYTROLL ARE PERFECT FOR THIS.
*1. PYTROLL: YES IT CAN HELP A LOT*
PYTROLL IS THE MAIN TOOLKIT FOR EUMETSAT DATA. SINCE YOU ARE ALREADY USING EUMETCAST, PYTROLL WILL HANDLE THE HARDEST PARTS:
- *SATPY*: READS MSG/SEVIRI DATA FROM EUMETCAST, DOES GEOLOCATION, CALIBRATION, AND REPROJECTION TO LAT/LON GRIDS AUTOMATICALLY.
- *PYRESAMPLE*: REGRIDS DATA TO REGULAR LAT/LON IF NEEDED FOR YOUR ALGORITHM.
WITHOUT PYTROLL YOU WOULD HAVE TO WRITE GEOLOCATION CODE YOURSELF FOR SEVIRI. THAT IS PAINFUL.
*2. BEST PYTHON WORKFLOW FOR CLOUD/STORM SEGMENTATION*
STEP 1: LOAD + PREPROCESS WITH SATPY
FROM SATPY.SCENE IMPORT SCENE
SCN = SCENE(FILENAMES = FILES, READER = 'SEVIRI_L1B_NATIVE')
SCN.LOAD(['IR_108', 'IR_087', 'WV_062']) # INFRARED CHANNELS ARE KEY FOR CLOUDS
SCN = SCN.RESPAMPLE('EUROPE4KM') # GET REGULAR LAT/LON GRID
STEP 2: SEGMENTATION - PICK ONE BASED ON YOUR NEEDS:
- *THRESHOLD + CONNECTED COMPONENTS*: FASTEST. USE IR_108 BRIGHTNESS TEMP. COLD PIXELS = HIGH CLOUDS/STORMS. `SKIMAGE.MEASURE.LABEL` TO FIND CLOUD OBJECTS.
- *WATERSHED SEGMENTATION*: GOOD FOR SEPARATING TOUCHING CLOUD CELLS. `SKIMAGE.SEGMENTATION.WATERSHED`.
- *ML APPROACH*: U-NET WITH TORCH/TENSORFLOW IF YOU HAVE LABELED TRAINING DATA. BETTER FOR COMPLEX SYSTEMS.
FOR STORM CELLS: MOST STUDENTS START WITH IR_108 < 235K THRESHOLD, THEN USE `SKIMAGE.MEASURE.REGIONPROPS` TO GET ELLIPSE PARAMETERS.
STEP 3: EXTRACT GEO INFO + FIT ELLIPSE
FROM SKIMAGE.MEASURE IMPORT REGIONPROPS
PROPS = REGIONPROPS(LABELED_CLOUDS, INTENSITY_IMAGE = IR_108)
FOR P IN PROPS:
LAT_CENTROID = LAT_GRID[P.CENTROID[0], P.CENTROID[1]]
LON_CENTROID = LON_GRID[P.CENTROID[0], P.CENTROID[1]]
ELLIPSE_MAJOR = P.MAJOR_AXIS_LENGTH * PIXEL_SIZE_KM
ELLIPSE_MINOR = P.MINOR_AXIS_LENGTH * PIXEL_SIZE_KM
ORIENTATION = P.ORIENTATION
`REGIONPROPS` GIVES YOU CENTROID, BOUNDING BOX, AREA, AND ELLIPSE FIT DIRECTLY. LAT/LON GRIDS COME FROM `SCN['IR_108'].ATTRS['AREA'].LONS` AND `.LATS`.
*3. LIBRARIES YOU NEED*
`SATPY`, `PYRESAMPLE`, `SCIPY`, `SKIMAGE`, `NUMPY`, `XARRAY`, `CARTOPY` FOR MAPS.
*4. TIP FOR STORM CELLS*
USE "CLOUD TOP TEMPERATURE" FROM IR_108 + "CLOUD TOP HEIGHT" IF YOU HAVE NWP DATA. OVERSHOOTING TOPS < 210K ARE USUALLY SEVERE STORMS. THEN FIT ELLIPSE TO THE COLD PIXEL CLUSTER.
Best regards