blogs/nexrad2/visualize/radardata.ipynb (219 lines of code) (raw):
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1> Reading NEXRAD Level II data from Google Cloud public datasets </h1>\n",
"\n",
"This notebook demonstrates how to use PyART to visualize data from the Google Cloud public dataset."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%bash\n",
"rm -rf data\n",
"mkdir data\n",
"cd data\n",
"RADAR=KIWA\n",
"YEAR=2013\n",
"MONTH=07\n",
"DAY=23\n",
"HOUR=23\n",
"gsutil cp gs://gcp-public-data-nexrad-l2/$YEAR/$MONTH/$DAY/$RADAR/*_$RADAR_${YEAR}${MONTH}${DAY}${HOUR}0000_${YEAR}${MONTH}${DAY}${HOUR}5959.tar temp.tar\n",
"tar xvf temp.tar\n",
"rm *.tar\n",
"ls"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3> Install Py-ART </h3>\n",
"\n",
"See https://github.com/ARM-DOE/pyart/wiki/Simple-Install-of-Py-ART-using-Anaconda"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3> Plot volume scans using Py-ART within Jupyter </h3>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Based on\n",
"# http://arm-doe.github.io/pyart/dev/auto_examples/plotting/plot_nexrad_multiple_moments.html\n",
"# by Jonathan J. Helmus (jhelmus@anl.gov)\n",
"import matplotlib.pyplot as plt\n",
"import pyart\n",
"def plot_data(filename):\n",
" radar = pyart.io.read_nexrad_archive(infilename)\n",
" display = pyart.graph.RadarDisplay(radar)\n",
" fig = plt.figure(figsize=(10, 10))\n",
"\n",
" ax = fig.add_subplot(221)\n",
" display.plot('velocity', 1, ax=ax, title='Doppler Velocity',\n",
" colorbar_label='',\n",
" axislabels=('', 'North South distance from radar (km)'))\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
" ax = fig.add_subplot(222)\n",
" display.plot('reflectivity', 0, ax=ax,\n",
" title='Reflectivity lowest', colorbar_label='',\n",
" axislabels=('', ''))\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
"\n",
" ax = fig.add_subplot(223)\n",
" display.plot('reflectivity', 1, ax=ax,\n",
" title='Reflectivity second', colorbar_label='')\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
"\n",
" ax = fig.add_subplot(224)\n",
" display.plot('cross_correlation_ratio', 0, ax=ax,\n",
" title='Correlation Coefficient', colorbar_label='',\n",
" axislabels=('East West distance from radar (km)', ''))\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
"\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2> Plot into png </h2>"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting plot_pngs.py\n"
]
}
],
"source": [
"%writefile plot_pngs.py\n",
"import matplotlib.pyplot as plt\n",
"import pyart\n",
"\n",
"def plot_data(infilename, outpng):\n",
" radar = pyart.io.read_nexrad_archive(infilename)\n",
" display = pyart.graph.RadarDisplay(radar)\n",
" fig = plt.figure(figsize=(10, 10))\n",
"\n",
" ax = fig.add_subplot(221)\n",
" display.plot('velocity', 1, ax=ax, title='Doppler Velocity',\n",
" colorbar_label='',\n",
" axislabels=('', 'North South distance from radar (km)'))\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
" ax = fig.add_subplot(222)\n",
" display.plot('reflectivity', 0, ax=ax,\n",
" title='Reflectivity lowest', colorbar_label='',\n",
" axislabels=('', ''))\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
"\n",
" ax = fig.add_subplot(223)\n",
" display.plot('reflectivity', 1, ax=ax,\n",
" title='Reflectivity second', colorbar_label='')\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
"\n",
" ax = fig.add_subplot(224)\n",
" display.plot('cross_correlation_ratio', 0, ax=ax,\n",
" title='Correlation Coefficient', colorbar_label='',\n",
" axislabels=('East West distance from radar (km)', ''))\n",
" display.set_limits((-300, 300), (-300, 300), ax=ax)\n",
"\n",
" fig.savefig(outpng)\n",
" \n",
"if __name__ == '__main__':\n",
" import argparse\n",
" parser = argparse.ArgumentParser(description='plot some radar data')\n",
" parser.add_argument('nexrad', help=\"volume scan filename\")\n",
" parser.add_argument('png', help=\"output png filename\")\n",
" args = parser.parse_args()\n",
"\n",
" print \"Plotting {} into {}\".format(args.nexrad, args.png)\n",
" plot_data(args.nexrad, args.png)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%bash\n",
"python plot_pngs.py data/KIWA20130723_235451_V06.gz radarplot.png"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2> Create animating PNG </h2>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%bash\n",
"rm -rf images\n",
"mkdir images\n",
"for volumefile in $(ls data); do\n",
" base=$(basename $volumefile)\n",
" python plot_pngs.py data/$volumefile images/$base.png\n",
"done"
]
}
],
"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.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}