pytroll / satpy

Python package for earth-observing satellite data processing
http://satpy.readthedocs.org/en/latest/
GNU General Public License v3.0
1.07k stars 295 forks source link

Add area definitions corresponding to geostationary imager fields of regard #1880

Closed gerritholl closed 2 years ago

gerritholl commented 2 years ago

Feature Request

Is your feature request related to a problem? Please describe.

I want to filter a database of global vector objects to only those within the field of regard (FOR) of ABI on either GOES-West or GOES-East. I don't actually need to use the ABI data in this project for now, so reading an ABI file just to get the field of regard should not be needed.

Describe the solution you'd like

I would like that the areas.yaml included with Satpy includes areas corresponding to the fields of regard for geostationary imagers. Personally, I primarily require this for ABI (Full Disk, CONUS, and PACUS), but if adding this we might as well add for the others as well.

It's easy to write a script that derives this from a satellite imagery file. Perhaps this script could be included with Satpy?

Describe any changes to existing user workflow

N/A

Additional context

For SEVIRI we already have those areas, namely the ones named msg_seviri_*. For FCI we have those areas for full disk imagery only (mtg_fci_fdss_*). We don't have anything for ABI, AHI, AGRI, AMI, or MSU-GS.

djhoese commented 2 years ago

FYI here are the GOES East and West ABI grids at various resolutions that I use in my Geo2Grid (polar2grid) software:

https://github.com/ssec/polar2grid/blob/74c3d56ceb96d2e4890e204bb29fe438a45cf4a7/polar2grid/grids/grids.yaml#L418-L541

Note: Only full disk.

gerritholl commented 2 years ago

Start of a script to generate those, in progress...

from glob import glob
from satpy import Scene

abi_files_full_east = glob(
        "/media/nas/x21308/abi/ABI-L1B-RadF/2019/023/18/"
        "OR_ABI-L1b-RadF-M3C*_G16_s20190231800*_e*_c*.nc")
abi_files_conus = glob(
        "/media/nas/x21308/abi/ABI-L1B-RadC/2019/023/18/"
        "OR_ABI-L1b-RadC-M3C*_G16_s20190231857*_e*_c*.nc")

# TODO: GOES West ABI full disk
# TODO: GOES West ABI CONUS

# TODO: HIMAWARI AHI

# TODO: GEO-KOMPSAT AMI

# TODO: FengYun AGRI

def show_abi_areas(files):
    sc = Scene(filenames=files, reader=["abi_l1b"])
    chans = ["C01", "C02", "C04"]
    sc.load(chans)
    for ch in chans:
        print(sc[ch].attrs["area"].create_areas_def())

show_abi_areas(abi_files_full_east)
show_abi_areas(abi_files_conus)
ameraner commented 2 years ago

For future readers: see https://github.com/pytroll/satpy/issues/1248 for the discussion on the naming convention for geos area definitions