{ "metadata": { "name": "jarkus_plot_transect" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from netCDF4 import Dataset,date2index,num2date\n", "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import MaxNLocator\n", "import os\n", "import numpy as np\n", "import shapely.geometry\n", "from descartes import PolygonPatch\n", "import datetime" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "url = 'http://dtvirt5.deltares.nl:8080/thredds/dodsC/opendap/rijkswaterstaat/jarkus/profiles/jarkus135_12-Feb-2013.nc'\n", "ids = (9011825,) # specify as tuple\n", "year = 2008\n", "\n", "try:\n", " ds = Dataset(url)\n", " id = ds.variables['id'][:]\n", " aidx = np.nonzero(np.in1d(id, ids))[0]\n", " x = ds.variables['cross_shore'][:]\n", " altitude = ds.variables['altitude'][:,aidx,:]\n", " time = ds.variables['time']\n", " t = map(lambda t: t.year, num2date(time, units=time.units))\n", " mhw = ds.variables['mean_high_water'][:]\n", "finally:\n", " ds.close()\n", "print 'z',altitude.shape\n", "print 'x',x.shape\n", "print 'id',id.shape\n", "print 'aidx',aidx\n", "print 't', t" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "z (48, 1, 1925)\n", "x (1925,)\n", "id (2178,)\n", "aidx [1439]\n", "t [1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012]\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "def interpolate_nans(data, left=None, right=None):\n", " idx = ~np.isnan(data)\n", " x = np.arange(len(idx))\n", " if np.any(idx):\n", " data = np.interp(x, x[idx], data[idx], left=left, right=left)\n", " return data\n", "\n", "# interpolate in cross-shore direction\n", "z = np.apply_along_axis(lambda d: interpolate_nans(d, left=np.nan, right=np.nan), 2, altitude.filled(np.nan))\n", "# interpolate in time, extrapolate with the first resp. last available value\n", "z = np.apply_along_axis(interpolate_nans, 0, z)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "def xz2shapes(x, z, min_z=None):\n", " idx = ~np.isnan(z)\n", " # cross-shore profiles\n", " xz = np.c_[x[idx], z[idx]]\n", " # LineString of profile\n", " line = shapely.geometry.LineString(xz)\n", " # retreive bounds\n", " minx, miny, maxx, maxy = line.bounds\n", " if not min_z:\n", " min_z = miny\n", " # coords of polygon\n", " coords = np.r_[xz,[[maxx, min_z-.0001],[minx, min_z-.0001], xz[0,:]]]\n", " # create polygon\n", " poly = shapely.geometry.Polygon(coords.astype('float')).intersection(shapely.geometry.box(minx, min_z, maxx, maxy))\n", " \n", " return line,poly" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "tidx = np.nonzero(np.in1d(t,(2011,)))[0]\n", "l,p = zip(*map(lambda zi: xz2shapes(x,zi.squeeze()), z))\n", "\n", "minx, miny, maxx, maxy = l[tidx].bounds\n", "hlines = map(lambda level: shapely.geometry.LineString([(minx, level), (maxx, level)]), (-4,mhw[aidx],3,8,maxy))\n", "crossings = map(lambda c: c.intersection(l[tidx]).bounds[2:], hlines)\n", "vbox = shapely.geometry.box(crossings[0][0], -4, crossings[2][0], 3)\n", "volume = vbox.intersection(p[tidx])\n", "slope = shapely.geometry.LineString(crossings[:3:2])\n", "\n", "fig,ax = plt.subplots(1,1)\n", "fig.set_figwidth(5)\n", "fig.set_figheight(3)\n", "\n", "ax.set_title('transect %i'%ids[0], fontsize=11)\n", "ax.set_xlabel('cross-shore coordinate [m]', fontsize=9)\n", "ax.set_ylabel('altitude [m]', fontsize=9)\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "ax.set_xlim(minx,maxx)\n", "ax.set_ylim(miny,maxy+1)\n", "ax.spines['right'].set_color('none')\n", "ax.spines['top'].set_color('none')\n", "ax.xaxis.set_ticks_position('bottom')\n", "ax.yaxis.set_ticks_position('left')\n", "\n", "ax.plot(*l[tidx].xy)\n", "ax.add_patch(PolygonPatch(p[tidx], alpha=.4, fc='orange'))\n", "pv = ax.add_patch(PolygonPatch(volume, alpha=.4, fc='green'))\n", "ax.add_patch(PolygonPatch(vbox, alpha=.1, fc='green'))\n", "ax.plot(*slope.xy, ls=':', marker='o', alpha=.8,zorder=10)\n", "\n", "for c,color,txt in zip(hlines, ('orange','b','orange','k'), ('lower ref. level volume', 'mean high water', 'upper ref. level volume', 'dune height threshold')):\n", " ax.plot(*c.xy, ls='--', color=color)\n", " textxy = np.c_[c.xy][-1]\n", " ax.text(textxy[0], textxy[1]+.2, txt, ha='right')\n", "\n", "ax.vlines(crossings[-1][0], miny, maxy, linestyles='--')\n", " \n", "#ax.set_xlim(ax.get_xlim()[::-1])\n", "ax.annotate('4: max. dune height', xy=crossings[-1], xytext=(15, -2), textcoords='offset points',arrowprops=dict(color='black',arrowstyle=\"->\"))\n", "ax.annotate('shoreline', xy=crossings[1], xytext=(15, 7), textcoords='offset points',arrowprops=dict(color='black',arrowstyle=\"->\"))\n", "ax.annotate('2: slope', xy=array(slope.centroid.xy), xytext=(15, 7), textcoords='offset points',arrowprops=dict(color='black',arrowstyle=\"->\"))\n", "ax.annotate('', xy=crossings[1], xytext=(crossings[-1][0], mhw[aidx]), textcoords='data',arrowprops=dict(color='black',arrowstyle=\"<->\"))\n", "ax.hlines(crossings[-1][0], -4, crossings[-1][-1], linestyles = 'solid', color='k', zorder=15)\n", "ax.text(volume.centroid.xy[0][0], volume.centroid.xy[1][0], '1', ha='center', va='center')\n", "ax.text(np.mean((crossings[1][0]-50, crossings[-1][0])), crossings[1][1], 'beach\\nwidth', ha='center',fontsize=7)\n", "ax.text(np.mean((crossings[1][0], crossings[-1][0])), crossings[1][1]-.5, '3', ha='center', va='top')\n", "\n", "ax.xaxis.set_major_locator(MaxNLocator(4))\n", "fig.subplots_adjust(bottom=.15,right=.98)\n", "fig.savefig('jarkus_plot_transect.png', dpi=300)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nJBmZ/wO6ZIH32AfJgAAAAABJRU5ErkJggg==\n" } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "ints = c.intersection(l[tidx])\n", "swb = asarray(ints)\n", "swb\n", "crossings\n", "np.c_[c.xy][-1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "array([ 3180., 8.])" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "zip(*map(lambda c: c.intersection(l[tidx]).bounds[2:], hlines))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 7, "text": [ "[(1358.9655172413793, 991.8181818181819, 930.3846153846154, 792.0, 680.0),\n", " (-4.0, 1.05, 3.0, 8.0, 10.73)]" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "ax.spines['right']" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 14, "text": [ "" ] } ], "prompt_number": 14 } ], "metadata": {} } ] }