{ "metadata": { "name": "webinar_delft3d" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "cd C:\\Users\\boer_g\\Desktop\\Webinar\\OEM" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "C:\\Users\\boer_g\\Desktop\\Webinar\\OEM\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "import openearthtools.io.delft3d as d3d\n", "dir(d3d)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 5, "text": [ "['Grid',\n", " '__builtins__',\n", " '__doc__',\n", " '__file__',\n", " '__name__',\n", " '__package__',\n", " '__path__',\n", " 'grid',\n", " 'mdf',\n", " 'read',\n", " 'tekal',\n", " 'tekalblock',\n", " 'write']" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "help(d3d.Grid)\n", "# example from https://svn.oss.deltares.nl/repos/openearthmodels/trunk/deltares/brazil_patos_lagoon_52S_32E/\n", "G = d3d.Grid.fromfile('lake_and_sea_5_ll.grd')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Help on class Grid in module openearthtools.io.delft3d.grid:\n", "\n", "class Grid(__builtin__.object)\n", " | Create a Delft3D grid file\n", " | # Create an empty grid\n", " | grid = Grid()\n", " | # Load a grid from file\n", " | grid = Grid.read('filename.grd')\n", " | # Write grid to file\n", " | Grid.read(grid,'filename.grd')\n", " | \n", " | Methods defined here:\n", " | \n", " | __init__(self, *args, **kwargs)\n", " | \n", " | write(self, filename, **kwargs)\n", " | \n", " | ----------------------------------------------------------------------\n", " | Static methods defined here:\n", " | \n", " | fromfile(filename, **kwargs)\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors defined here:\n", " | \n", " | __dict__\n", " | dictionary for instance variables (if defined)\n", " | \n", " | __weakref__\n", " | list of weak references to the object (if defined)\n", "\n" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "# curvilinear grids typically have many invalid matrix positions\n", "# to represent islands, thick dams or cul-de-sacs (estuaries/rivers) \n", "# therefore the matrices are stored as Masked array type\n", "G.X" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 7, "text": [ "masked_array(data =\n", " [[-- -- -- ..., -51.21892397029205 -51.25650464051964 -51.28911971484214]\n", " [-- -- -- ..., -51.25256180611927 -51.274277884869164 -51.29888408312184]\n", " [-- -- -- ..., -51.26523724097448 -51.288310621047295 -51.31035946306346]\n", " ..., \n", " [-51.92346119182868 -51.94226259182987 -51.96086078342037 ..., -- -- --]\n", " [-51.92608902265055 -51.94527933494353 -51.96403316815339 ..., -- -- --]\n", " [-51.928765963284064 -51.948398147668485 -51.967149196828366 ..., -- -- --]],\n", " mask =\n", " [[ True True True ..., False False False]\n", " [ True True True ..., False False False]\n", " [ True True True ..., False False False]\n", " ..., \n", " [False False False ..., True True True]\n", " [False False False ..., True True True]\n", " [False False False ..., True True True]],\n", " fill_value = 1e+20)\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "G.dep = G.z" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "matplotlib.pyplot.pcolor(G.X,G.Y,G.dep)\n", "gca().set_aspect(1./cos(mean(ylim())/180*pi),adjustable='box') # see Matlab axislat()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }