import numpy as np
from osgeo import gdal
GDAL with NetCDF and earthaccess
gdal.UseExceptions()
def configure_auth():
import earthaccess
= earthaccess.login()
auth = auth.get_s3_credentials("PODAAC")
s3_credentials "AWS_REGION", "us-west-2")
gdal.SetConfigOption("AWS_SECRET_ACCESS_KEY", s3_credentials["secretAccessKey"])
gdal.SetConfigOption("AWS_ACCESS_KEY_ID", s3_credentials["accessKeyId"])
gdal.SetConfigOption("AWS_SESSION_TOKEN", s3_credentials["sessionToken"]) gdal.SetConfigOption(
def load_data():
= "podaac-ops-cumulus-protected"
bucket = "MUR-JPL-L4-GLOB-v4.1/20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc"
input_uri = f"NETCDF:/vsis3/{bucket}/{input_uri}:analysed_sst"
src = gdal.Open(src)
ds = ds.GetRasterBand(1)
band = band.ReadAsArray().astype("float32", casting="unsafe")
arr = band.GetMaskBand().ReadAsArray()
mask = np.ma.masked_array(arr, np.logical_not(mask), fill_value=np.nan)
ma =ma, casting="unsafe")
np.multiply(ma, band.GetScale(), out=ma, casting="unsafe")
np.add(ma, band.GetOffset(), outreturn ma.filled(fill_value=np.nan)
if __name__ == "__main__":
configure_auth()= load_data() da