{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Adding Lat/Lon coordinates to GOES-16/17 L2 Data on Amazon Web Services\n", "\n", "Author: Lucas Sterzinger | lsterzinger@ucdavis.edu | [Follow me on Twitter](https://twitter.com/lucassterzinger)\n", "\n", "This tutorial is paired with a medium post that [can be found here](https://lsterzinger.medium.com/add-lat-lon-coordinates-to-goes-16-goes-17-l2-data-and-plot-with-cartopy-27f07879157f) (and contains more detail on each step). \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import xarray as xr \n", "import s3fs\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "import cartopy.crs as ccrs\n", "import cartopy.feature as cfeature" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Open file with s3fs and xarray" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "fs = s3fs.S3FileSystem(anon=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "f = fs.open(\"s3://noaa-goes17/ABI-L2-MCMIPC/2021/050/18/OR_ABI-L2-MCMIPC-M6_G17_s20210501801176_e20210501803549_c20210501804089.nc\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "ds = xr.open_dataset(f)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n", "Dimensions: (band: 1, number_of_image_bounds: 2, number_of_time_bounds: 2, x: 2500, y: 1500)\n", "Coordinates: (12/37)\n", " t datetime64[ns] 2021-02-19T18:02:3...\n", " * y (y) float32 0.1282 ... 0.04427\n", " * x (x) float32 -0.06997 ... 0.06997\n", " y_image float32 0.08624\n", " x_image float32 0.0\n", " band_wavelength_C01 (band) float32 0.47\n", " ... ...\n", " band_id_C11 (band) int8 11\n", " band_id_C12 (band) int8 12\n", " band_id_C13 (band) int8 13\n", " band_id_C14 (band) int8 14\n", " band_id_C15 (band) int8 15\n", " band_id_C16 (band) int8 16\n", "Dimensions without coordinates: band, number_of_image_bounds, number_of_time_bounds\n", "Data variables: (12/124)\n", " CMI_C01 (y, x) float32 ...\n", " DQF_C01 (y, x) float32 ...\n", " CMI_C02 (y, x) float32 ...\n", " DQF_C02 (y, x) float32 ...\n", " CMI_C03 (y, x) float32 ...\n", " DQF_C03 (y, x) float32 ...\n", " ... ...\n", " mean_brightness_temperature_C16 float64 260.5\n", " std_dev_brightness_temperature_C16 float64 14.5\n", " percent_uncorrectable_GRB_errors float64 0.0\n", " percent_uncorrectable_L0_errors float64 0.0\n", " dynamic_algorithm_input_data_container int32 -2147483647\n", " algorithm_product_version_container int32 -2147483647\n", "Attributes: (12/29)\n", " naming_authority: gov.nesdis.noaa\n", " Conventions: CF-1.7\n", " Metadata_Conventions: Unidata Dataset Discovery v1.0\n", " standard_name_vocabulary: CF Standard Name Table (v35, 20 July 2016)\n", " institution: DOC/NOAA/NESDIS > U.S. Department of Commerce,...\n", " project: GOES\n", " ... ...\n", " date_created: 2021-02-19T18:04:08.9Z\n", " time_coverage_start: 2021-02-19T18:01:17.6Z\n", " time_coverage_end: 2021-02-19T18:03:54.9Z\n", " timeline_id: ABI Mode 6\n", " production_data_source: Realtime\n", " id: 900b3680-135c-454d-a4ac-0940433763d6
array('2021-02-19T18:02:36.315488000', dtype='datetime64[ns]')
array([0.128212, 0.128156, 0.1281 , ..., 0.04438 , 0.044324, 0.044268],\n", " dtype=float32)
array([-0.069972, -0.069916, -0.06986 , ..., 0.06986 , 0.069916, 0.069972],\n", " dtype=float32)
array(0.08624, dtype=float32)
array(0., dtype=float32)
array([0.47], dtype=float32)
array([0.64], dtype=float32)
array([0.87], dtype=float32)
array([1.38], dtype=float32)
array([1.61], dtype=float32)
array([2.25], dtype=float32)
array([3.89], dtype=float32)
array([6.17], dtype=float32)
array([6.93], dtype=float32)
array([7.34], dtype=float32)
array([8.44], dtype=float32)
array([9.61], dtype=float32)
array([10.33], dtype=float32)
array([11.19], dtype=float32)
array([12.27], dtype=float32)
array([13.27], dtype=float32)
array([1], dtype=int8)
array([2], dtype=int8)
array([3], dtype=int8)
array([4], dtype=int8)
array([5], dtype=int8)
array([6], dtype=int8)
array([7], dtype=int8)
array([8], dtype=int8)
array([9], dtype=int8)
array([10], dtype=int8)
array([11], dtype=int8)
array([12], dtype=int8)
array([13], dtype=int8)
array([14], dtype=int8)
array([15], dtype=int8)
array([16], dtype=int8)
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
[3750000 values with dtype=float32]
array(['2021-02-19T18:01:17.667058048', '2021-02-19T18:03:54.963917056'],\n", " dtype='datetime64[ns]')
array(-2147483647, dtype=int32)
array([0.12824, 0.04424], dtype=float32)
array([-0.07, 0.07], dtype=float32)
array(0.)
array(-137.199997)
array(35786.023438)
array(9.96921e+36, dtype=float32)
array(0.)
array(0.)
array(0.806226)
array(0.144942)
array(0.102976)
array(0.)
array(0.)
array(0.84505)
array(0.109361)
array(0.108442)
array(0.)
array(0.)
array(0.918203)
array(0.119383)
array(0.125583)
array(0.)
array(0.)
array(0.365923)
array(0.009322)
array(0.018185)
array(0.)
array(0.)
array(0.475334)
array(0.078198)
array(0.085298)
array(0.)
array(0.)
array(0.391219)
array(0.06273)
array(0.064176)
array(0.)
array(104.69072)
array(352.676605)
array(281.056061)
array(15.623469)
array(0.)
array(205.495361)
array(254.062332)
array(235.807083)
array(8.11472)
array(0.)
array(204.143646)
array(265.19278)
array(245.203537)
array(10.031142)
array(0.)
array(204.739899)
array(273.383362)
array(253.237869)
array(11.855058)
array(0.)
array(204.806412)
array(306.850647)
array(272.828674)
array(17.452894)
array(0.)
array(212.568314)
array(277.749817)
array(252.716934)
array(14.404919)
array(0.)
array(205.765472)
array(308.886749)
array(274.757019)
array(18.041609)
array(0.)
array(204.042404)
array(310.160645)
array(273.98172)
array(18.531471)
array(0.)
array(204.176437)
array(308.940277)
array(272.51709)
array(18.225906)
array(0.)
array(193.656113)
array(290.723083)
array(260.491608)
array(14.50307)
array(0.)
array(0.)
array(-2147483647, dtype=int32)
array(-2147483647, dtype=int32)
<xarray.Dataset>\n", "Dimensions: (band: 1, number_of_image_bounds: 2, number_of_time_bounds: 2, x: 1808, y: 770)\n", "Coordinates: (12/39)\n", " t datetime64[ns] 2021-02-19T18:02:3...\n", " * y (y) float32 0.1282 ... 0.08515\n", " * x (x) float32 -0.03867 ... 0.06252\n", " y_image float32 0.08624\n", " x_image float32 0.0\n", " band_wavelength_C01 (band) float32 0.47\n", " ... ...\n", " band_id_C13 (band) int8 13\n", " band_id_C14 (band) int8 14\n", " band_id_C15 (band) int8 15\n", " band_id_C16 (band) int8 16\n", " lat (y, x) float64 51.37 51.36 ... 30.01\n", " lon (y, x) float64 -159.1 ... -112.0\n", "Dimensions without coordinates: band, number_of_image_bounds, number_of_time_bounds\n", "Data variables: (12/124)\n", " CMI_C01 (y, x) float32 ...\n", " DQF_C01 (y, x) float32 ...\n", " CMI_C02 (y, x) float32 ...\n", " DQF_C02 (y, x) float32 ...\n", " CMI_C03 (y, x) float32 ...\n", " DQF_C03 (y, x) float32 ...\n", " ... ...\n", " mean_brightness_temperature_C16 float64 260.5\n", " std_dev_brightness_temperature_C16 float64 14.5\n", " percent_uncorrectable_GRB_errors float64 0.0\n", " percent_uncorrectable_L0_errors float64 0.0\n", " dynamic_algorithm_input_data_container int32 -2147483647\n", " algorithm_product_version_container int32 -2147483647\n", "Attributes: (12/29)\n", " naming_authority: gov.nesdis.noaa\n", " Conventions: CF-1.7\n", " Metadata_Conventions: Unidata Dataset Discovery v1.0\n", " standard_name_vocabulary: CF Standard Name Table (v35, 20 July 2016)\n", " institution: DOC/NOAA/NESDIS > U.S. Department of Commerce,...\n", " project: GOES\n", " ... ...\n", " date_created: 2021-02-19T18:04:08.9Z\n", " time_coverage_start: 2021-02-19T18:01:17.6Z\n", " time_coverage_end: 2021-02-19T18:03:54.9Z\n", " timeline_id: ABI Mode 6\n", " production_data_source: Realtime\n", " id: 900b3680-135c-454d-a4ac-0940433763d6
array('2021-02-19T18:02:36.315488000', dtype='datetime64[ns]')
array([0.128212, 0.128156, 0.1281 , ..., 0.08526 , 0.085204, 0.085148],\n", " dtype=float32)
array([-0.038668, -0.038612, -0.038556, ..., 0.062412, 0.062468, 0.062524],\n", " dtype=float32)
array(0.08624, dtype=float32)
array(0., dtype=float32)
array([0.47], dtype=float32)
array([0.64], dtype=float32)
array([0.87], dtype=float32)
array([1.38], dtype=float32)
array([1.61], dtype=float32)
array([2.25], dtype=float32)
array([3.89], dtype=float32)
array([6.17], dtype=float32)
array([6.93], dtype=float32)
array([7.34], dtype=float32)
array([8.44], dtype=float32)
array([9.61], dtype=float32)
array([10.33], dtype=float32)
array([11.19], dtype=float32)
array([12.27], dtype=float32)
array([13.27], dtype=float32)
array([1], dtype=int8)
array([2], dtype=int8)
array([3], dtype=int8)
array([4], dtype=int8)
array([5], dtype=int8)
array([6], dtype=int8)
array([7], dtype=int8)
array([8], dtype=int8)
array([9], dtype=int8)
array([10], dtype=int8)
array([11], dtype=int8)
array([12], dtype=int8)
array([13], dtype=int8)
array([14], dtype=int8)
array([15], dtype=int8)
array([16], dtype=int8)
array([[51.36645312, 51.36443846, 51.36242781, ..., 52.71189756,\n", " 52.71670156, 52.72151749],\n", " [51.32816643, 51.32615761, 51.3241528 , ..., 52.66882775,\n", " 52.67361046, 52.67840501],\n", " [51.28993063, 51.28792763, 51.28592863, ..., 52.62584212,\n", " 52.63060374, 52.6353771 ],\n", " ...,\n", " [29.74632202, 29.74580165, 29.74528215, ..., 30.05316306,\n", " 30.05410198, 30.05504211],\n", " [29.72361115, 29.72309146, 29.72257263, ..., 30.03004319,\n", " 30.03098082, 30.03191965],\n", " [29.70086836, 29.70034935, 29.69983119, ..., 30.0068902 ,\n", " 30.00782653, 30.00876406]])
array([[-159.08844751, -159.05307121, -159.01771224, ..., -97.38937586,\n", " -97.33844586, -97.28744078],\n", " [-159.06670716, -159.03137472, -158.99605954, ..., -97.44266106,\n", " -97.39186744, -97.34099933],\n", " [-159.04504663, -159.00975785, -158.97448627, ..., -97.49566236,\n", " -97.44500391, -97.39427157],\n", " ...,\n", " [-151.94436653, -151.92187688, -151.89939115, ..., -112.05421803,\n", " -112.02923249, -112.00423857],\n", " [-151.94031594, -151.91783294, -151.89535385, ..., -112.0615635 ,\n", " -112.03658725, -112.01160265],\n", " [-151.9362467 , -151.91377037, -151.89129796, ..., -112.06894214,\n", " -112.04397524, -112.01899998]])
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
[1392160 values with dtype=float32]
array(['2021-02-19T18:01:17.667058048', '2021-02-19T18:03:54.963917056'],\n", " dtype='datetime64[ns]')
array(-2147483647, dtype=int32)
array([0.12824, 0.04424], dtype=float32)
array([-0.07, 0.07], dtype=float32)
array(0.)
array(-137.199997)
array(35786.023438)
array(9.96921e+36, dtype=float32)
array(0.)
array(0.)
array(0.806226)
array(0.144942)
array(0.102976)
array(0.)
array(0.)
array(0.84505)
array(0.109361)
array(0.108442)
array(0.)
array(0.)
array(0.918203)
array(0.119383)
array(0.125583)
array(0.)
array(0.)
array(0.365923)
array(0.009322)
array(0.018185)
array(0.)
array(0.)
array(0.475334)
array(0.078198)
array(0.085298)
array(0.)
array(0.)
array(0.391219)
array(0.06273)
array(0.064176)
array(0.)
array(104.69072)
array(352.676605)
array(281.056061)
array(15.623469)
array(0.)
array(205.495361)
array(254.062332)
array(235.807083)
array(8.11472)
array(0.)
array(204.143646)
array(265.19278)
array(245.203537)
array(10.031142)
array(0.)
array(204.739899)
array(273.383362)
array(253.237869)
array(11.855058)
array(0.)
array(204.806412)
array(306.850647)
array(272.828674)
array(17.452894)
array(0.)
array(212.568314)
array(277.749817)
array(252.716934)
array(14.404919)
array(0.)
array(205.765472)
array(308.886749)
array(274.757019)
array(18.041609)
array(0.)
array(204.042404)
array(310.160645)
array(273.98172)
array(18.531471)
array(0.)
array(204.176437)
array(308.940277)
array(272.51709)
array(18.225906)
array(0.)
array(193.656113)
array(290.723083)
array(260.491608)
array(14.50307)
array(0.)
array(0.)
array(-2147483647, dtype=int32)
array(-2147483647, dtype=int32)