TIN with breaklines: Difference between revisions
No edit summary |
(→<v.triangle> module: not gpl compatible) |
||
Line 12: | Line 12: | ||
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". | ||
* ''Legal Note: '''Triangle''' is not free for commercial use and therefore must not be distributed with GRASS.'' | |||
The 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. | |||
Line 20: | Line 22: | ||
<u>'''Parameters:'''</u><br> '''''points''''' Input vector map containing points<br> '''''lines''''' Input vector map containing breaklines<br> '''''tin''''' Name of output vector map (TIN)<br> '''''max_area''''' Maximum triangle area (use with "-a" flag)<br> '''''min_angle''''' Minimum mesh angle (use with "-q" flag)<br> '''''steiner_points''''' Specifies the maximum number of Steiner points that may be inserted into the mesh (use with "-s" flag)<br> '''''save''''' Path to save <Triangle> working files (*.node,*.poly,*.edge,*.ele,*.off). By default uses current location directory | <u>'''Parameters:'''</u><br> '''''points''''' Input vector map containing points<br> '''''lines''''' Input vector map containing breaklines<br> '''''tin''''' Name of output vector map (TIN)<br> '''''max_area''''' Maximum triangle area (use with "-a" flag)<br> '''''min_angle''''' Minimum mesh angle (use with "-q" flag)<br> '''''steiner_points''''' Specifies the maximum number of Steiner points that may be inserted into the mesh (use with "-s" flag)<br> '''''save''''' Path to save <Triangle> working files (*.node,*.poly,*.edge,*.ele,*.off). By default uses current location directory | ||
== Example == | == Example == |
Revision as of 09:58, 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".
- Legal Note: Triangle is not free for commercial use and therefore must not be distributed with GRASS.
The 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