{ "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-0940433763d6array('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-0940433763d6array('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)