from osgeo import gdal
from pyproj.crs import CRS
GDAL with NetCDF, VSIS3, 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 warp_resample():
= "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 = ""
output = "MEM"
output_format = "EPSG:3857"
dstSRS
= height = 256
width = [
te -20037508.342789244,
-20037508.342789244,
20037508.342789244,
20037508.342789244,
]= [
gt 0],
te[2] - te[0]) / width,
(te[0,
3],
te[0,
-(te[3] - te[1]) / height,
]= CRS(dstSRS).to_wkt()
output_crs
= gdal.GetDriverByName(output_format).Create(
output_ds 1, gdal.GDT_Byte
output, width, height,
)
output_ds.SetProjection(output_crs)
output_ds.SetGeoTransform(gt)= gdal.Open(src)
input_ds return gdal.Warp(output_ds, input_ds)
if __name__ == "__main__":
configure_auth() warp_resample()