2017-02-03 17:51:20 -07:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Satellite images are returned by Python AWIPS as grids, and can be rendered with Cartopy pcolormesh the same as gridded forecast models in other python-awips examples. "
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from awips.dataaccess import DataAccessLayer\n",
"import cartopy.crs as ccrs\n",
"import cartopy.feature as cfeat\n",
"import matplotlib.pyplot as plt\n",
"from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER\n",
"import numpy as np\n",
"import datetime\n",
"\n",
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
"request = DataAccessLayer.newDataRequest()\n",
"request.setDatatype(\"satellite\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Available Satellite Sectors and Products"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Available sectors and products\n",
"\n",
"Alaska National:\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
" - Percent of Normal TPW\n",
" - Rain fall rate\n",
" - Sounder Based Derived Precipitable Water (PW)\n",
"Alaska Regional:\n",
" - Imager 11 micron IR\n",
" - Imager 3.9 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"East CONUS:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron (IR)\n",
" - Imager 3.9 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
" - Low cloud base imagery\n",
"GOES-East:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron IR\n",
" - Imager 3.5-4.0 micron IR (Fog)\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"GOES-East-West:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron IR\n",
" - Imager 3.5-4.0 micron IR (Fog)\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"GOES-Sounder:\n",
" - CAPE\n",
" - Sounder Based Derived Lifted Index (LI)\n",
" - Sounder Based Derived Precipitable Water (PW)\n",
" - Sounder Based Derived Surface Skin Temp (SFC Skin)\n",
" - Sounder Based Total Column Ozone\n",
"GOES-West:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron IR\n",
" - Imager 3.5-4.0 micron IR (Fog)\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"Global:\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
"Hawaii National:\n",
" - Gridded Cloud Amount\n",
" - Gridded Cloud Top Pressure or Height\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
" - Percent of Normal TPW\n",
" - Rain fall rate\n",
" - Sounder 11.03 micron imagery\n",
" - Sounder 14.06 micron imagery\n",
" - Sounder 3.98 micron imagery\n",
" - Sounder 4.45 micron imagery\n",
" - Sounder 6.51 micron imagery\n",
" - Sounder 7.02 micron imagery\n",
" - Sounder 7.43 micron imagery\n",
" - Sounder Based Derived Lifted Index (LI)\n",
" - Sounder Based Derived Precipitable Water (PW)\n",
" - Sounder Based Derived Surface Skin Temp (SFC Skin)\n",
" - Sounder Visible imagery\n",
"Hawaii Regional:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron (IR)\n",
" - Imager 3.9 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"Mollweide:\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
"NEXRCOMP:\n",
" - DHR\n",
" - DVL\n",
" - EET\n",
" - HHC\n",
" - N0R\n",
" - N1P\n",
" - NTP\n",
"NH Composite - Meteosat-GOES E-GOES W-GMS:\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"Northern Hemisphere Composite:\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"Puerto Rico National:\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
" - Percent of Normal TPW\n",
" - Rain fall rate\n",
" - Sounder Based Derived Precipitable Water (PW)\n",
"Puerto Rico Regional:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron (IR)\n",
" - Imager 3.9 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
"Supernational:\n",
" - Gridded Cloud Amount\n",
" - Gridded Cloud Top Pressure or Height\n",
" - Imager 11 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
" - Percent of Normal TPW\n",
" - Rain fall rate\n",
" - Sounder Based Derived Lifted Index (LI)\n",
" - Sounder Based Derived Precipitable Water (PW)\n",
" - Sounder Based Derived Surface Skin Temp (SFC Skin)\n",
"West CONUS:\n",
" - Imager 11 micron IR\n",
" - Imager 13 micron (IR)\n",
" - Imager 3.9 micron IR\n",
" - Imager 6.7-6.5 micron IR (WV)\n",
" - Imager Visible\n",
" - Low cloud base imagery\n",
" - Sounder 11.03 micron imagery\n",
" - Sounder 14.06 micron imagery\n",
" - Sounder 3.98 micron imagery\n",
" - Sounder 4.45 micron imagery\n",
" - Sounder 6.51 micron imagery\n",
" - Sounder 7.02 micron imagery\n",
" - Sounder 7.43 micron imagery\n",
" - Sounder Visible imagery\n"
]
}
],
"source": [
"availableSectors = DataAccessLayer.getAvailableLocationNames(request)\n",
"availableSectors.sort()\n",
"\n",
"print(\"\\nAvailable sectors and products\\n\")\n",
"for sect in availableSectors:\n",
" request.setLocationNames(sect)\n",
" availableProducts = DataAccessLayer.getAvailableParameters(request)\n",
" availableProducts.sort()\n",
" print(sect + \":\")\n",
" for prod in availableProducts:\n",
" print(\" - \"+prod)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plot Global Water Vapor Composite"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 96 available times\n",
" 2017-01-23 00:00:00\n",
" to\n",
" 2017-02-03 21:00:00\n",
"Using 2017-02-03 21:00:00 (2hr 3m ago)\n"
]
}
],
"source": [
"request.setLocationNames(\"Global\")\n",
"availableProducts = DataAccessLayer.getAvailableParameters(request)\n",
"availableProducts.sort()\n",
"request.setParameters(availableProducts[0])\n",
"\n",
"utc = datetime.datetime.utcnow()\n",
"times = DataAccessLayer.getAvailableTimes(request)\n",
"hourdiff = utc - datetime.datetime.strptime(str(times[-1]),'%Y-%m-%d %H:%M:%S')\n",
"hours,days = hourdiff.seconds/3600,hourdiff.days\n",
"minute = str((hourdiff.seconds - (3600 * hours)) / 60)\n",
"offsetStr = ''\n",
"if hours > 0:\n",
" offsetStr += str(hours) + \"hr \"\n",
"offsetStr += str(minute) + \"m ago\"\n",
"if days > 1:\n",
" offsetStr = str(days) + \" days ago\"\n",
"\n",
"print(\"Found \"+ str(len(times)) +\" available times\")\n",
"print(\" \"+str(times[0]) + \"\\n to\\n \" + str(times[-1]))\n",
"print(\"Using \"+str(times[-1]) + \" (\"+offsetStr+\")\")"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"grid size (1024, 2048)\n",
"grid extent [-179.91191, 179.99982, -89.977936, 89.890022]\n"
]
}
],
"source": [
"response = DataAccessLayer.getGridData(request, [times[-1]])\n",
"grid = response[0]\n",
"data = grid.getRawData()\n",
"lons,lats = grid.getLatLonCoords()\n",
"bbox = [lons.min(), lons.max(), lats.min(), lats.max()]\n",
"\n",
"print(\"grid size \" + str(data.shape))\n",
"print(\"grid extent \" + str(list(bbox)))"
]
},
{
"cell_type": "code",
2017-02-04 15:00:46 -07:00
"execution_count": 10,
2017-02-03 17:51:20 -07:00
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
2017-02-04 15:00:46 -07:00
"image/png": "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\nznQqLwxQovfa2OZ1DfP
2017-02-03 17:51:20 -07:00
"text/plain": [
2017-02-04 15:00:46 -07:00
"<matplotlib.figure.Figure at 0x10a61d190>"
2017-02-03 17:51:20 -07:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def make_map(bbox, projection=ccrs.PlateCarree()):\n",
" fig, ax = plt.subplots(figsize=(18,14),\n",
" subplot_kw=dict(projection=projection))\n",
" ax.set_extent(bbox)\n",
" ax.coastlines(resolution='50m')\n",
" gl = ax.gridlines(draw_labels=True)\n",
" gl.xlabels_top = gl.ylabels_right = False\n",
" gl.xformatter = LONGITUDE_FORMATTER\n",
" gl.yformatter = LATITUDE_FORMATTER\n",
" return fig, ax\n",
"\n",
"fig, ax = make_map(bbox=bbox)\n",
"# State boundaries\n",
"states = cfeat.NaturalEarthFeature(category='cultural',\n",
" name='admin_1_states_provinces_lines',\n",
" scale='50m', facecolor='none')\n",
"ax.add_feature(states, linestyle=':')\n",
"cs = ax.pcolormesh(lons, lats, data, cmap='Greys_r')\n",
"cbar = fig.colorbar(cs, shrink=0.9, orientation='horizontal')\n",
"cbar.set_label(str(grid.getLocationName())+\" \" \\\n",
" +str(grid.getParameter())+\" \" \\\n",
" +str(grid.getDataTime().getRefTime()))\n",
"plt.tight_layout()"
]
2017-02-04 15:00:46 -07:00
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
2017-02-03 17:51:20 -07:00
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}