TIN with breaklines: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 1: Line 1:
== TIN<br>  ==
== TIN ==


<br>
Triangular irregular networks (TIN) are widely spread in GIS community (in ESRI software, other commercial GIS and CAD) to represent surface morphology. They have traditionally not been present in GRASS due to GRASS's strong raster support and more advanced interpolation techniques.


Triangular irregular networks (TIN) are widely spread in GIS community (in ESRI software, other commercial GIS and CAD) to represent surface morphology.  
See the [[TIN]] and [[Contour lines to DEM]] wiki pages for further discussion.


The most common way of TIN construction is Delaunay triangulation. GRASS has module &lt;v.delaunay&gt; to do this task, but it don't work with "breaklines", e.g. with constrained Delaunay triangulation.  
The most common way of TIN construction is Delaunay triangulation. GRASS has the {{Cmd|v.delaunay}} module to do this task, but it doesn't work with "breaklines", e.g. with constrained Delaunay triangulation.  


<br>


== &lt;v.triangle&gt; module<br>  ==
== &lt;v.triangle&gt; module ==


Add-on module [https://raw.github.com/amuriy/GRASS-scripts/master/v.triangle v.triangle] was written as attempt to close this gap. It's simply a "front-end" to the famous utility [http://www.cs.cmu.edu/~quake/triangle.html Triangle] of J.R. Shewchuk, which makes exact Delaunay triangulations, constrained Delaunay triangulations, conforming Delaunay triangulations and high-quality triangular meshes. On GIS terminology, it produces 2D TIN, optionally with "breaklines".  
Add-on module [https://raw.github.com/amuriy/GRASS-scripts/master/v.triangle v.triangle] was written as attempt to close this gap. It's simply a "front-end" to the famous utility [http://www.cs.cmu.edu/~quake/triangle.html Triangle] of J.R. Shewchuk, which makes exact Delaunay triangulations, constrained Delaunay triangulations, conforming Delaunay triangulations and high-quality triangular meshes. On GIS terminology, it produces 2D TIN, optionally with "breaklines".  


Module is a shell script that implements the main &lt;Triangle&gt; options and use it as "filter" to produce 2D TIN from the vector points/lines data. To use script you must to compile &lt;Triangle&gt; first and add it to system $PATH.<br>
Module is a shell script that implements the main &lt;Triangle&gt; options and use it as "filter" to produce 2D TIN from the vector points/lines data. To use script you must to compile &lt;Triangle&gt; first and add it to system $PATH.


<br>


<u>'''Usage:'''</u><br> '''v.triangle''' [-cdqalysif] ''points''=name [''lines''=name] ''tin''=name<br> [''max_area''=name] [''min_angle''=name] [''steiner_points''=name] [''save''=name]<br><br>
<u>'''Usage:'''</u><br> '''v.triangle''' [-cdqalysif] ''points''=name [''lines''=name] ''tin''=name<br> [''max_area''=name] [''min_angle''=name] [''steiner_points''=name] [''save''=name]


<u>'''Flags:'''</u><br> '''-c'''&nbsp; Conforming constrained Delaunay triangulation without angle or area constraints<br> '''-d'''&nbsp; Conforming Delaunay triangulation<br> '''-q'''&nbsp; Quality mesh generation (all angles are between 20 and 140 degrees)<br> '''-a'''&nbsp; Imposes a maximum triangle area constraint<br> '''-l'''&nbsp; Uses only vertical cuts in the divide-and-conquer algorithm<br> '''-y'''&nbsp; Prohibits the insertion of Steiner points on the mesh boundary<br> '''-s&nbsp;''' Specifies the maximum number of added Steiner points<br> '''-i&nbsp;''' Uses the incremental algorithm for Delaunay triangulation, rather than the divide-and-conquer algorithm<br> '''-f'''&nbsp; Uses Steven Fortune's sweepline algorithm for Delaunay triangulation, rather than the divide-and-conquer algorithm<br> '''--o'''&nbsp; Allow output files to overwrite existing files<br> '''--v'''&nbsp; Verbose module output<br> '''--q&nbsp;''' Quiet module output <br>
<u>'''Flags:'''</u><br> '''-c'''&nbsp; Conforming constrained Delaunay triangulation without angle or area constraints<br> '''-d'''&nbsp; Conforming Delaunay triangulation<br> '''-q'''&nbsp; Quality mesh generation (all angles are between 20 and 140 degrees)<br> '''-a'''&nbsp; Imposes a maximum triangle area constraint<br> '''-l'''&nbsp; Uses only vertical cuts in the divide-and-conquer algorithm<br> '''-y'''&nbsp; Prohibits the insertion of Steiner points on the mesh boundary<br> '''-s&nbsp;''' Specifies the maximum number of added Steiner points<br> '''-i&nbsp;''' Uses the incremental algorithm for Delaunay triangulation, rather than the divide-and-conquer algorithm<br> '''-f'''&nbsp; Uses Steven Fortune's sweepline algorithm for Delaunay triangulation, rather than the divide-and-conquer algorithm<br> '''--o'''&nbsp; Allow output files to overwrite existing files<br> '''--v'''&nbsp; Verbose module output<br> '''--q&nbsp;''' Quiet module output


<u>'''Parameters:'''</u><br> '''''points''''' &nbsp; Input vector map containing points<br> '''''lines'''''&nbsp; Input vector map containing breaklines<br> '''''tin'''''&nbsp; Name of output vector map (TIN)<br> '''''max_area''''' &nbsp; Maximum triangle area (use with "-a" flag)<br> '''''min_angle'''''&nbsp; Minimum mesh angle (use with "-q" flag)<br> '''''steiner_points'''''&nbsp; Specifies the maximum number of Steiner points that may be inserted into the mesh (use with "-s" flag)<br> '''''save''''' &nbsp; Path to save &lt;Triangle&gt; working files (*.node,*.poly,*.edge,*.ele,*.off). By default uses current location directory<br>
<u>'''Parameters:'''</u><br> '''''points''''' &nbsp; Input vector map containing points<br> '''''lines'''''&nbsp; Input vector map containing breaklines<br> '''''tin'''''&nbsp; Name of output vector map (TIN)<br> '''''max_area''''' &nbsp; Maximum triangle area (use with "-a" flag)<br> '''''min_angle'''''&nbsp; Minimum mesh angle (use with "-q" flag)<br> '''''steiner_points'''''&nbsp; Specifies the maximum number of Steiner points that may be inserted into the mesh (use with "-s" flag)<br> '''''save''''' &nbsp; Path to save &lt;Triangle&gt; working files (*.node,*.poly,*.edge,*.ele,*.off). By default uses current location directory


<br>


== Example<br>  ==
== Example ==


The following example was produced using ESRI sample data (masspoints and breaklines) to compare TIN's made in using ArcView 3D Analyst and Triangle.<br>
The following example was produced using ESRI sample data (masspoints and breaklines) to compare TIN's made in using ArcView 3D Analyst and Triangle.


The command used: '''''v.triangle -c points=pts lines=lines tin=tin'''''<br>
The command used:
v.triangle -c points=pts lines=lines tin=tin


[[File:ArcView_GRASS_TIN_breaklines.png]]
[[File:ArcView_GRASS_TIN_breaklines.png]]

Revision as of 09:54, 6 April 2013

TIN

Triangular irregular networks (TIN) are widely spread in GIS community (in ESRI software, other commercial GIS and CAD) to represent surface morphology. They have traditionally not been present in GRASS due to GRASS's strong raster support and more advanced interpolation techniques.

See the TIN and Contour lines to DEM wiki pages for further discussion.

The most common way of TIN construction is Delaunay triangulation. GRASS has the v.delaunay module to do this task, but it doesn't work with "breaklines", e.g. with constrained Delaunay triangulation.


<v.triangle> module

Add-on module v.triangle was written as attempt to close this gap. It's simply a "front-end" to the famous utility Triangle of J.R. Shewchuk, which makes exact Delaunay triangulations, constrained Delaunay triangulations, conforming Delaunay triangulations and high-quality triangular meshes. On GIS terminology, it produces 2D TIN, optionally with "breaklines".

Module is a shell script that implements the main <Triangle> options and use it as "filter" to produce 2D TIN from the vector points/lines data. To use script you must to compile <Triangle> first and add it to system $PATH.


Usage:
v.triangle [-cdqalysif] points=name [lines=name] tin=name
[max_area=name] [min_angle=name] [steiner_points=name] [save=name]

Flags:
-c  Conforming constrained Delaunay triangulation without angle or area constraints
-d  Conforming Delaunay triangulation
-q  Quality mesh generation (all angles are between 20 and 140 degrees)
-a  Imposes a maximum triangle area constraint
-l  Uses only vertical cuts in the divide-and-conquer algorithm
-y  Prohibits the insertion of Steiner points on the mesh boundary
-s  Specifies the maximum number of added Steiner points
-i  Uses the incremental algorithm for Delaunay triangulation, rather than the divide-and-conquer algorithm
-f  Uses Steven Fortune's sweepline algorithm for Delaunay triangulation, rather than the divide-and-conquer algorithm
--o  Allow output files to overwrite existing files
--v  Verbose module output
--q  Quiet module output

Parameters:
points   Input vector map containing points
lines  Input vector map containing breaklines
tin  Name of output vector map (TIN)
max_area   Maximum triangle area (use with "-a" flag)
min_angle  Minimum mesh angle (use with "-q" flag)
steiner_points  Specifies the maximum number of Steiner points that may be inserted into the mesh (use with "-s" flag)
save   Path to save <Triangle> working files (*.node,*.poly,*.edge,*.ele,*.off). By default uses current location directory


Example

The following example was produced using ESRI sample data (masspoints and breaklines) to compare TIN's made in using ArcView 3D Analyst and Triangle.

The command used:

v.triangle -c points=pts lines=lines tin=tin