Jump to content

zpt manipulations

Recommended Posts


A couple of things it'd be nice to have when building geometry;

1) Variable width z-lines; have a second attribute in the 2d_zln layer which specified the desired width of the z-line (optional, if omitted it act as it always has). Would be particularly helpful for application of gullies and ridges in some situations, and would mean that upon resizing of cells, z-line could have the same impact. Would probably need to act first in the old way and then assess whether any further zpts should be effected too (so if the width requested is narrower than the cell size it still has the normal effect for example).

2) This one may leave me with less of a desire to have 1) above! Have TUFLOW able to read in triangles with points snapped to corners and interpolate a varied surface over them. Useful for a development which involves a sloping car-park for example. Would probably need a whole new command! If a region with more than three sides is read in, or there is no point snapped to the corner of a triangle, TUFLOW produces an error (or possibly warning in the latter case, instead treating is as a flat triangle, much like the z-lines)... Similar would also be very useful for IWL, where using numerous flat regions to put a slope on something can be a bit of a bind!

3) When using "Read MI z line MIN", is there any chance you could make it change the H-zpt too? It'd be nice to be able to see where the flow route is, and indeed have depths in it when it's not up to bank full... I have a relatively neat (if not necessarily fast) work around for this, and it doesn't effect the actual simulation in anyway, but it'd be nice.

That's all for now! Number 2 above is definitely the one I'd appreciate most; chopping off trees on hills, or having car parks that slope would suddenly become that much easier to implement.


Share this post

Link to post
Share on other sites

I'm pleased to say that all of these (except the sloping IWL) and much more along these lines are completed and in the 2008 release.

There are several new .tgc commands which I'll briefly list and describe below:

Read TIN Zpts:

Reads TINs created by 3D surface modelling software to set the Zpt elevations. This command, which is not cell size dependent, can effectively replace the Read MID Zpts command (which is cell size dependent). The primary purpose however is more to use 3D software to create TINs of proposed works which TUFLOW can then read directly to modify the topography. At present, the 12D and SMS TIN formats are recognised. More than happy to consider incorporating other TIN formats.

Read MI Z HX Line:

Elevation points can now be snapped to HX lines, ie. the HX lines can be used for setting both the 1D/2D interface link and the height of the 2D HX cells using the thick Z line methodology. No need to have HX and Z lines in separate layers anymore.

Read MI Z Shape:

Can contain points (to set elevations), lines and polygons. Lines can be as already available (thin/thick; ridge/gully), and can now also be given a width in metres. Lines are individually labeled as thin or thick, gully or ridge so they can co-exist in the same layer should you choose.

The polygon feature is the really nice one. Polygons can be used to automatically interpolate across null areas, remove bad DTM data, remove a flood defence wall or road embankment, model a proposed development fill, excavate an area and so on. There is an option to merge the polygon perimeter with the existing Zpts (ie. the elevations around the perimeter are automatically based on the existing Zpt elevations so that a seamless transition across the polygon perimeter occurs). Points inside the polygon are used as part of the TUFLOW triangulation within the polygon. Points may also be snapped to vertices around the perimeter to set elevations. There's more, but I'll leave that to the manual.

Read MI Variable Z Shape:

This is an extension to the above command that is used to model failure of embankments, collapse of fences and any other change in topography over time. For example, to simulate the failure of a section of a flood defence wall is literally as simple as digitising a polygon and specifying a few attributes. Failure can be initiated at: a pre-defined time; when a water level at a location elsewhere in the model is reached; or when the difference in water level between two locations is exceeded. Thin Z lines (fences) have additional options based on failing individual cell sides when the depth next to the fence exceeds a specified amount, or the head drop across the fence exceeds an amount. You can also raise the topography should you wish (I'm sure someone can think of an example here - simulating the formation of quake lakes!?).

Read MI FC Shape:

Draws upon the tcf "Read MI FC" command to modify the cell widths, place a lid (obvert or soffit) on a cell, add additional energy losses below and above the obvert so as to model bridges, large box culverts and floating obstructions (eg. a pontoon). This new command is much more powerful in that the structure inverts and obverts can vary spatially (eg. a sloping bridge deck) using a single object with points snapped to it to set the invert/obvert levels. It is also not cell size dependent like the present tcf Read MI FC command.

Read MI Layered FC Shape:

This interesting one allows the modeller to specify the thickness, percent blockage and energy loss for three horizontal layers. An example would be to model a bridge with the layers being (1) below the bridge deck; (2) the bridge deck; and (3) the bridge rail. An unimpeded fourth layer is also simulated once the third layer is overtopped. TUFLOW works out an equivalent blockage and varies the energy losses with depth to approximate the structure. The attraction of this feature is that there is no need to place a 1D weir structure over the top which is needed with the normal FC approach. The FC approach is more elegant though in that it accounts for pressure flow should this occur.

Any more ideas on the above welcome!

Share this post

Link to post
Share on other sites

HI again,

I thought I'd read/heard/seen somewhere that a z-shape polygon, when merging with existing zpts, ignored any null/uninitialised elevations it finds. Unfortunately, now I come to rely on this in the model I'm building, it appears not to be the case! Could it please be made so, as this would make life much easier when drawing round gaps in LiDAR and using a coarse 2d grid? Otherwise if you draw the polygon too close to the gap in the data, it triangulates some very high surfaces, which weren't quite what I was looking for!

As a side query, when inspecting existing zpt data for merging, does TUFLOW take the closest zpt or a weighted average of the four nearest? (The latter would seem the better alternative to me, particularly if null values were ignored.)

Many thanks.

Share this post

Link to post
Share on other sites

Good point! The present arrangement (as of Build 2008-08-AE) assumes that the merge point on the polygon perimeter lies within four "good" Zpts. If one or more of the four surrounding Zpts has the 99999 initial value, or some other unrealistic value, the merge point elevation can be distorted. So, when digitising the polygon you have to be typically half a cell size away from these uninitialised or unrealistic Zpts to ensure that they don't distort the merging.

We will look into an option to ignore uninitialised Zpts and extrapolate a Zpt elevation for these points from surrounding Zpts. This will slow down the process but will allow digitising close to the edge of the "bad" data, for example around the edge of null areas in a DTM.

The process for interpolating the merge point elevation is as follows. Imagine the 2D cell divided into four quadrants (ie. four squares), and the quadrant that the merge point falls within is identified. The four Zpts at the corners of this quadrant are stored and the average elevation of the four Zpts is assigned to a temporary point located in the middle of the quadrant. The quadrant is then triangulated into four triangles using the middle temporary point as a vertex for all four triangles. The triangle which the merge point falls within is identified and the merge point's elevation is linearly interpolated from the triangle's three elevations. If one or more of these three elevations is uninitialised or unrealistic (note, this could also be because the temporary middle point is distorted due to one of the four Zpts being uninitialised), the merge point's elevation will be distorted.

FYI, if you set "Verbose == ON" in the tcf file, the _messages.mif layer will include a point at every merge point. The attribute for the points will provide info on the merge point's interpolated elevation.

Share this post

Link to post
Share on other sites

Hi again again,

With those wonderful Z-shapes, you can specify for each object whether they should act using MAX, MIN, or leave it blank and it will just set the elevations to whatever height is in the object (call this option SET for now). You can also globally set all the objects in a layer to be MAX or MIN, unless otherwise specified in the layer. There is then, no way to have all the objects MAX, except a couple using SET, except for going through every object to be MAX and telling it (i.e. you can't just tell the command to treat the file as MAX and then tell a couple of objects to be SET).

Could you add in an option flag so you can tell an individual object to be SET please? (Fell free to come up with a better name than SET!)

I hope that makes sense... Thanks!

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...