mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-23 22:57:56 -05:00
312 lines
9.3 KiB
Text
312 lines
9.3 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Populating the interactive namespace from numpy and matplotlib\n",
|
|
"GFSLAMP5\n",
|
|
"GFSGuide\n",
|
|
"ECMF6\n",
|
|
"ECMF3\n",
|
|
"ECMF4\n",
|
|
"HPCqpfNDFD\n",
|
|
"ECMF-Global\n",
|
|
"RAP13\n",
|
|
"ECMF5\n",
|
|
"RTMA5\n",
|
|
"AVN211\n",
|
|
"NamDNG\n",
|
|
"ECMF9\n",
|
|
"QPE-MSR\n",
|
|
"estofsUS\n",
|
|
"ECMF12\n",
|
|
"ECMF10\n",
|
|
"ECMF8\n",
|
|
"MRMS_1000\n",
|
|
"ETA\n",
|
|
"LAMP2p5\n",
|
|
"HRRR\n",
|
|
"URMA25\n",
|
|
"GFS40\n",
|
|
"GFS\n",
|
|
"RAP40\n",
|
|
"RTMA\n",
|
|
"AVN225\n",
|
|
"NAM12\n",
|
|
"ECMF1\n",
|
|
"ECMF2\n",
|
|
"ECMF11\n",
|
|
"DGEX\n",
|
|
"NamDNG5\n",
|
|
"estofsPR\n",
|
|
"NCWF\n",
|
|
"ECMF7\n",
|
|
"NOHRSC-SNOW\n",
|
|
"HPCGuide\n",
|
|
"NAM40\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from awips.dataaccess import DataAccessLayer\n",
|
|
"\n",
|
|
"# Set host\n",
|
|
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
|
|
"\n",
|
|
"# Init data request\n",
|
|
"request = DataAccessLayer.newDataRequest()\n",
|
|
"\n",
|
|
"# Set datatype\n",
|
|
"request.setDatatype(\"grid\")\n",
|
|
"\n",
|
|
"# getAvailableLocationNames method will return a list of all available models\n",
|
|
"available_grids = DataAccessLayer.getAvailableLocationNames(request)\n",
|
|
"for grid in available_grids:\n",
|
|
" print grid\n",
|
|
" "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"source": [
|
|
"LocationNames is different for different plugins\n",
|
|
"- radar is icao\n",
|
|
"- satellite is sector\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {
|
|
"collapsed": false,
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"RAP40\n",
|
|
"2016-02-23 15:00:00 (12)\n",
|
|
"Unit is K\n",
|
|
"Parameter is T\n",
|
|
"[[ 273.89916992 273.64916992 272.89916992 ..., 250.77416992\n",
|
|
" 250.77416992 250.64916992]\n",
|
|
" [ 250.52416992 250.52416992 250.77416992 ..., 258.89916992\n",
|
|
" 258.64916992 258.39916992]\n",
|
|
" [ 258.27416992 257.89916992 257.39916992 ..., 269.77416992\n",
|
|
" 269.64916992 269.52416992]\n",
|
|
" ..., \n",
|
|
" [ 290.89916992 290.02416992 289.89916992 ..., 294.64916992\n",
|
|
" 294.14916992 293.77416992]\n",
|
|
" [ 294.39916992 295.02416992 295.77416992 ..., 293.39916992\n",
|
|
" 293.14916992 293.02416992]\n",
|
|
" [ 292.77416992 292.64916992 292.52416992 ..., 289.02416992\n",
|
|
" 289.39916992 289.39916992]]\n",
|
|
"lat array = [[ 54.24940109 54.35071945 54.45080566 ..., 57.9545517 57.91926193\n",
|
|
" 57.88272858]\n",
|
|
" [ 57.84495163 57.80593109 57.76566696 ..., 58.07667542 58.08861542\n",
|
|
" 58.09931183]\n",
|
|
" [ 58.10876846 58.11697769 58.12394714 ..., 56.40270996 56.46187973\n",
|
|
" 56.51980972]\n",
|
|
" ..., \n",
|
|
" [ 19.93209648 19.89832115 19.86351395 ..., 20.054636 20.06362152\n",
|
|
" 20.07156372]\n",
|
|
" [ 20.0784626 20.08431816 20.08912849 ..., 18.58354759 18.63155174\n",
|
|
" 18.67854691]\n",
|
|
" [ 18.72453308 18.76950836 18.81346893 ..., 17.49624634 17.42861557\n",
|
|
" 17.36001205]]\n",
|
|
"lon array = [[-139.83120728 -139.32348633 -138.81448364 ..., -79.26060486\n",
|
|
" -78.70166016 -78.14326477]\n",
|
|
" [ -77.58544922 -77.02822876 -76.47161865 ..., -100.70157623\n",
|
|
" -100.13801575 -99.57427216]\n",
|
|
" [ -99.01037598 -98.44634247 -97.88218689 ..., -121.69165039\n",
|
|
" -121.15060425 -120.60871887]\n",
|
|
" ..., \n",
|
|
" [ -82.65139008 -82.26644897 -81.88170624 ..., -98.52494049\n",
|
|
" -98.13802338 -97.75105286]\n",
|
|
" [ -97.36403656 -96.97698212 -96.58989716 ..., -113.07767487\n",
|
|
" -112.69831085 -112.31866455]\n",
|
|
" [-111.93874359 -111.5585556 -111.17810822 ..., -69.85433197\n",
|
|
" -69.48160553 -69.10926819]]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"from awips.dataaccess import DataAccessLayer\n",
|
|
"\n",
|
|
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
|
|
"request = DataAccessLayer.newDataRequest()\n",
|
|
"request.setDatatype(\"grid\")\n",
|
|
"\n",
|
|
"# Grid request\n",
|
|
"request.setLocationNames('RAP40')\n",
|
|
"request.setParameters(\"T\")\n",
|
|
"request.setLevels(\"500MB\")\n",
|
|
"\n",
|
|
"# Get available times\n",
|
|
"t = DataAccessLayer.getAvailableTimes(request)\n",
|
|
"\n",
|
|
"# Select last available time [-1]\n",
|
|
"response = DataAccessLayer.getGridData(request, [t[-1]])\n",
|
|
"data = response[0]\n",
|
|
"\n",
|
|
"# Print info\n",
|
|
"print data.getLocationName()\n",
|
|
"print t[-1]\n",
|
|
"print 'Unit is', data.getUnit()\n",
|
|
"print 'Parameter is', data.getParameter()\n",
|
|
"\n",
|
|
"# Print data array\n",
|
|
"print data.getRawData()\n",
|
|
"\n",
|
|
"# Print lat/lon array\n",
|
|
"lon,lat = data.getLatLonCoords()\n",
|
|
"print \"lat array =\", lat\n",
|
|
"print \"lon array =\", lon"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Plotting a Grid\n",
|
|
"\n",
|
|
"With **matplotlib** and **basemap**, we can plot an a re-projected grid image:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"%matplotlib inline\n",
|
|
"import sys, cStringIO, os, os.path, datetime\n",
|
|
"import random\n",
|
|
"import string\n",
|
|
"import matplotlib.tri as mtri\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from matplotlib.transforms import offset_copy\n",
|
|
"from mpl_toolkits.basemap import Basemap, cm\n",
|
|
"import numpy as np\n",
|
|
"from numpy import linspace, transpose\n",
|
|
"from numpy import meshgrid\n",
|
|
"from awips.dataaccess import DataAccessLayer\n",
|
|
"\n",
|
|
"#from pint import UnitRegistry\n",
|
|
"\n",
|
|
"# If we don't specify an EDEX host, default is \"edex-cloud.unidata.ucar.edu\"\n",
|
|
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
|
|
"request = DataAccessLayer.newDataRequest()\n",
|
|
"request.setDatatype(\"grid\")\n",
|
|
"\n",
|
|
"gridTimeIndex = -1\n",
|
|
"\n",
|
|
"# EDEX Data Access Framework\n",
|
|
"request = DataAccessLayer.newDataRequest()\n",
|
|
"request.setDatatype(\"maps\")\n",
|
|
"request.setParameters(\"state\")\n",
|
|
"request.addIdentifier(\"locationField\",\"name\")\n",
|
|
"request.addIdentifier(\"geomField\",\"the_geom\")\n",
|
|
"request.addIdentifier(\"table\",\"mapdata.states\")\n",
|
|
"request.setLocationNames(\"Colorado\")\n",
|
|
"response = DataAccessLayer.getGeometryData(request, None)\n",
|
|
"# Now set area\n",
|
|
"request = DataAccessLayer.newDataRequest()\n",
|
|
"request.setEnvelope(response[0].getGeometry().buffer(3))\n",
|
|
"# Now query grid\n",
|
|
"request.setDatatype(\"grid\")\n",
|
|
"request.setLocationNames('RAP40')\n",
|
|
"request.setParameters(\"T\")\n",
|
|
"request.setLevels(\"500MB\")\n",
|
|
"t = DataAccessLayer.getAvailableTimes(request)\n",
|
|
"\n",
|
|
"response = DataAccessLayer.getGridData(request, [t[gridTimeIndex]])\n",
|
|
"data = response[0]\n",
|
|
"lons,lats = data.getLatLonCoords()\n",
|
|
"\n",
|
|
"map = Basemap(projection='cyl',\n",
|
|
" resolution = 'c',\n",
|
|
" llcrnrlon = lons.min(), llcrnrlat = lats.min(),\n",
|
|
" urcrnrlon =lons.max(), urcrnrlat = lats.max()\n",
|
|
")\n",
|
|
"map.drawcoastlines()\n",
|
|
"map.drawstates()\n",
|
|
"map.drawcountries()\n",
|
|
"x = linspace(0, map.urcrnrx, data.getRawData().shape[1])\n",
|
|
"y = linspace(0, map.urcrnry, data.getRawData().shape[0])\n",
|
|
"xx, yy = meshgrid(x, y)\n",
|
|
"\n",
|
|
"ngrid = len(x)\n",
|
|
"rlons = np.repeat(np.linspace(np.min(lons), np.max(lons), ngrid),\n",
|
|
" ngrid).reshape(ngrid, ngrid)\n",
|
|
"rlats = np.repeat(np.linspace(np.min(lats), np.max(lats), ngrid),\n",
|
|
" ngrid).reshape(ngrid, ngrid).T\n",
|
|
"tli = mtri.LinearTriInterpolator(mtri.Triangulation(lons.flatten(),\n",
|
|
" lats.flatten()), data.getRawData().flatten())\n",
|
|
"rdata = tli(rlons, rlats)\n",
|
|
"clevs = [40,45,50,55,60,65,70,75,80,85,90,95]\n",
|
|
"cs = map.pcolormesh(rlons, rlats, rdata-272.15, latlon=True, vmin=-10, vmax=-2)\n",
|
|
"\n",
|
|
"# add colorbar.\n",
|
|
"cbar = map.colorbar(cs,location='bottom',pad=\"5%\")\n",
|
|
"cbar.set_label(data.getParameter() + \"(F)\")\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"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
|
|
}
|