2016-03-15 20:27:25 -05:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2016-03-16 17:21:46 -05:00
|
|
|
"execution_count": 23,
|
2016-03-15 20:27:25 -05:00
|
|
|
"metadata": {
|
|
|
|
"collapsed": false
|
|
|
|
},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2016-03-16 17:21:46 -05:00
|
|
|
"using time 2016-03-16 21:13:53\n",
|
2016-03-15 20:27:25 -05:00
|
|
|
"buffer by 60\n",
|
2016-03-16 17:21:46 -05:00
|
|
|
"using range (Mar 16 16 21:12:53 , Mar 16 16 21:14:53 )\n",
|
|
|
|
"found 94 2016-03-16 21:13:53\n",
|
|
|
|
"found 99 2016-03-16 21:13:53\n"
|
2016-03-15 20:27:25 -05:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
2016-03-16 17:21:46 -05:00
|
|
|
"image/png": "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\nlFWjQi4Neo9sLc6L6jG
|
2016-03-15 20:27:25 -05:00
|
|
|
"text/plain": [
|
2016-03-16 17:21:46 -05:00
|
|
|
"<matplotlib.figure.Figure at 0x7fd249aa8990>"
|
2016-03-15 20:27:25 -05:00
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"from awips.dataaccess import DataAccessLayer\n",
|
|
|
|
"from awips import ThriftClient, RadarCommon\n",
|
|
|
|
"\n",
|
|
|
|
"from dynamicserialize.dstypes.com.raytheon.uf.common.time import TimeRange\n",
|
|
|
|
"from dynamicserialize.dstypes.com.raytheon.uf.common.dataplugin.radar.request import GetRadarDataRecordRequest\n",
|
|
|
|
"\n",
|
|
|
|
"from datetime import datetime\n",
|
|
|
|
"from datetime import timedelta\n",
|
|
|
|
"\n",
|
|
|
|
"import matplotlib.pyplot as plt\n",
|
|
|
|
"import numpy as np\n",
|
|
|
|
"from numpy import ma\n",
|
|
|
|
"\n",
|
|
|
|
"# use metpy for color table\n",
|
|
|
|
"from metpy.plots import ctables\n",
|
|
|
|
"\n",
|
|
|
|
"# Set EDEX server and radar site\n",
|
|
|
|
"edex = \"edex-cloud.unidata.ucar.edu\"\n",
|
|
|
|
"site = \"kftg\"\n",
|
|
|
|
"\n",
|
|
|
|
"DataAccessLayer.changeEDEXHost(edex)\n",
|
|
|
|
"\n",
|
|
|
|
"request = DataAccessLayer.newDataRequest()\n",
|
|
|
|
"request.setDatatype(\"radar\")\n",
|
|
|
|
"request.setLocationNames(site)\n",
|
|
|
|
"\n",
|
|
|
|
"datatimes = DataAccessLayer.getAvailableTimes(request)\n",
|
|
|
|
"\n",
|
|
|
|
"# Get last available time\n",
|
|
|
|
"timerange = datatimes[-1].validPeriod\n",
|
|
|
|
"dateTimeStr = str(datatimes[-1])\n",
|
|
|
|
"\n",
|
|
|
|
"# Buffer length in seconds\n",
|
|
|
|
"buffer = 60\n",
|
|
|
|
"dateTime = datetime.strptime(dateTimeStr, \"%Y-%m-%d %H:%M:%S\")\n",
|
|
|
|
"beginRange = dateTime - timedelta(0, buffer)\n",
|
|
|
|
"endRange = dateTime + timedelta(0, buffer)\n",
|
|
|
|
"timerange = TimeRange(beginRange, endRange)\n",
|
|
|
|
"\n",
|
|
|
|
"print \"using time\",dateTimeStr\n",
|
|
|
|
"print \"buffer by\",buffer\n",
|
|
|
|
"print \"using range\",timerange\n",
|
|
|
|
"\n",
|
|
|
|
"client = ThriftClient.ThriftClient(edex)\n",
|
|
|
|
"request = GetRadarDataRecordRequest()\n",
|
|
|
|
"request.setRadarId(site)\n",
|
|
|
|
"request.setPrimaryElevationAngle(\"0.5\")\n",
|
|
|
|
"request.setTimeRange(timerange)\n",
|
|
|
|
"\n",
|
|
|
|
"fig, axes = plt.subplots(1, 2, figsize=(15, 8))\n",
|
|
|
|
"for v, ctable, ax in zip((94, 99), ('NWSReflectivity', 'NWSVelocity'), axes):\n",
|
|
|
|
" request.setProductCode(v)\n",
|
|
|
|
" response = client.sendRequest(request)\n",
|
|
|
|
" if response.getData():\n",
|
|
|
|
" for record in response.getData():\n",
|
|
|
|
" idra = record.getHdf5Data()\n",
|
|
|
|
" rdat,azdat,depVals,threshVals = RadarCommon.get_hdf5_data(idra)\n",
|
|
|
|
" dim = rdat.getDimension()\n",
|
|
|
|
" yLen,xLen = rdat.getSizes()\n",
|
|
|
|
" array = rdat.getByteData()\n",
|
|
|
|
" \n",
|
|
|
|
" # get data for azimuth angles if we have them.\n",
|
|
|
|
" if azdat :\n",
|
|
|
|
" azVals = azdat.getFloatData()\n",
|
|
|
|
" az = np.array(RadarCommon.encode_radial(azVals))\n",
|
|
|
|
" dattyp = RadarCommon.get_data_type(azdat)\n",
|
|
|
|
" az = np.append(az,az[-1])\n",
|
|
|
|
" \n",
|
|
|
|
" print \"found\",v,record.getDataTime()\n",
|
|
|
|
"\n",
|
|
|
|
" header = RadarCommon.get_header(record, format, xLen, yLen, azdat, \"description\")\n",
|
|
|
|
" rng = np.linspace(0, xLen, xLen + 1)\n",
|
|
|
|
" xlocs = rng * np.sin(np.deg2rad(az[:, np.newaxis]))\n",
|
|
|
|
" ylocs = rng * np.cos(np.deg2rad(az[:, np.newaxis]))\n",
|
|
|
|
" multiArray = np.reshape(array, (-1, xLen))\n",
|
|
|
|
" data = ma.array(multiArray)\n",
|
|
|
|
" data[data==0] = ma.masked\n",
|
|
|
|
"\n",
|
|
|
|
" # Plot the data\n",
|
|
|
|
" norm, cmap = ctables.registry.get_with_steps(ctable, 16, 16)\n",
|
|
|
|
" ax.pcolormesh(xlocs, ylocs, data, norm=norm, cmap=cmap)\n",
|
|
|
|
" ax.set_aspect('equal', 'datalim')\n",
|
|
|
|
" \n",
|
|
|
|
" multp = 100*(2*xLen/460)\n",
|
|
|
|
" ax.set_xlim(-multp,multp)\n",
|
|
|
|
" ax.set_ylim(-multp,multp)\n",
|
|
|
|
" # This is setting x/ylim on gate/pixel and not km\n",
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"plt.show()"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"metadata": {
|
|
|
|
"collapsed": true
|
|
|
|
},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"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": 0
|
|
|
|
}
|