PageSourceSearch

https://docs-vrgeo-version3.netlify.app/assets/js/18dfb3f0.f1fdfcd5.js

js docs-vrgeo-version3.netlify.app collected 2026-10-03 10:40:09 UTC 15,794 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[3725],{71918(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"tutorial/tutorial-fractures/tf020-mapping-traces","title":"Mapping fracture traces","description":"Digitising fracture traces on a virtual outcrop by hand \u2014 arming the tool, keeping it armed, tracing across relief, and classifying what you collect.","source":"@site/docs/tutorial/tutorial-fractures/tf020-mapping-traces.md","sourceDirName":"tutorial/tutorial-fractures","slug":"/tutorial/tutorial-fractures/tf020-mapping-traces","permalink":"/docs/next/tutorial/tutorial-fractures/tf020-mapping-traces","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/docs/tutorial/tutorial-fractures/tf020-mapping-traces.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2,"description":"Digitising fracture traces on a virtual outcrop by hand \u2014 arming the tool, keeping it armed, tracing across relief, and classifying what you collect.","keywords":["fracture traces","digitise","polyline","geodesic","sticky interp","scan line"]},"sidebar":"docs","previous":{"title":"Fracture mapping and analysis","permalink":"/docs/next/tutorial/tutorial-fractures/tf010-overview"},"next":{"title":"Fractures from photographs","permalink":"/docs/next/tutorial/tutorial-fractures/tf030-fractures-from-photographs"}}');var s=n(74848),i=n(28453);const a={sidebar_position:2,description:"Digitising fracture traces on a virtual outcrop by hand \u2014 arming the tool, keeping it armed, tracing across relief, and classifying what you collect.",keywords:["fracture traces","digitise","polyline","geodesic","sticky interp","scan line"]},o="Mapping fracture traces",c={},l=[{value:"Before you start: set the descriptor",id:"before-you-start-set-the-descriptor",level:2},{value:"Digitising a trace",id:"digitising-a-trace",level:2},{value:"Keeping the tool armed",id:"keeping-the-tool-armed",level:2},{value:"Tidying up as you go",id:"tidying-up-as-you-go",level:2},{value:"Classifying what you collect",id:"classifying-what-you-collect",level:2},{value:"Scan lines: the other way to record fractures",id:"scan-lines-the-other-way-to-record-fractures",level:2},{value:"See also",id:"see-also",level:2}];function h(e){const t={a:"a",admonition:"admonition",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"mapping-fracture-traces",children:"Mapping fracture traces"})}),"\n",(0,s.jsxs)(t.p,{children:["A ",(0,s.jsx)(t.strong,{children:"trace"})," is where a fracture meets the outcrop surface \u2014 the line you would\ndraw on the rock face with a marker pen. Traces are the raw observation almost\neverything else in this tutorial is built from: orientations are fitted to them,\nP21 intensity is trace length per unit area, and the DFN is validated by\ncomparing its synthetic traces against yours."]}),"\n",(0,s.jsxs)(t.p,{children:["This page covers digitising them by hand. The\n",(0,s.jsx)(t.a,{href:"/docs/next/tutorial/tutorial-fractures/tf030-fractures-from-photographs",children:"next page"})," covers extracting them\nautomatically from photographs \u2014 the two produce the same kind of object, and\nmost studies use both."]}),"\n",(0,s.jsx)(t.h2,{id:"before-you-start-set-the-descriptor",children:"Before you start: set the descriptor"}),"\n",(0,s.jsxs)(t.p,{children:["On the ",(0,s.jsx)(t.strong,{children:"Interpretations"})," ribbon tab, the ",(0,s.jsx)(t.strong,{children:"Active Descriptor"})," panel carries a\n",(0,s.jsx)(t.strong,{children:"Facies"})," and a ",(0,s.jsx)(t.strong,{children:"Horizon"})," dropdown. Whatever is set there is stamped on every\nobject you create next."]}),"\n",(0,s.jsx)(t.p,{children:"Set it now, before digitising. Changing it afterwards means selecting objects\nand re-applying, and the whole point of the descriptor is that it makes your\ninterpretation filterable and colour-coded later, when you have four hundred\ntraces and need to know which unit each one came from."}),"\n",(0,s.jsx)(t.h2,{id:"digitising-a-trace",children:"Digitising a trace"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["On the ",(0,s.jsx)(t.strong,{children:"Interpretations"})," tab, click ",(0,s.jsx)(t.strong,{children:"Digitise Polyline"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Click along the fracture trace on the model. ",(0,s.jsx)(t.strong,{children:"Double-click"})," to finish."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"That is the whole operation. The interesting part is which digitising mode you\npick, and the answer depends on the outcrop."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Mode"}),(0,s.jsx)(t.th,{children:"When it is the right one"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Digitise Points"})}),(0,s.jsx)(t.td,{children:"The default. One vertex per click. Right for a fracture with a few clear inflections, and the mode that gives you the fewest vertices to tidy up later."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Draw"})}),(0,s.jsxs)(t.td,{children:["Hold and drag to lay down vertices continuously. Fast for a sinuous trace, at the cost of a lot of vertices \u2014 run ",(0,s.jsx)(t.strong,{children:"Refine Spacing"})," afterwards to thin them."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Geodesic Distance"})}),(0,s.jsxs)(t.td,{children:["Click sparse points and the line follows the ",(0,s.jsx)(t.strong,{children:"shortest path across the surface"})," between them."]})]})]})]}),"\n",(0,s.jsx)(t.admonition,{title:"Geodesic is usually the right answer on real topography",type:"tip",children:(0,s.jsxs)(t.p,{children:["A straight segment between two clicks cuts ",(0,s.jsx)(t.em,{children:"through"}
1)," the rock wherever the face\nis not flat. A geodesic stays on it. That matters more than it sounds: P21\nintensity is trace length per unit area, so a trace that chords across a\nre-entrant is measurably too short, and every trace in the study is short by a\ndifferent amount."]})}),"\n",(0,s.jsx)(t.h2,{id:"keeping-the-tool-armed",children:"Keeping the tool armed"}),"\n",(0,s.jsx)(t.p,{children:"Digitising two hundred traces one ribbon click at a time is miserable. Two\ncommands fix it:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Sticky Interp"})," (Structure panel) keeps the tool armed after each object, so\nyou finish one trace and start the next without going back to the ribbon."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Pause Digitising"})," (Edit panel) suspends a part-finished line so you can\norbit the model, then resumes the same line. It does ",(0,s.jsx)(t.strong,{children:"not"})," end the trace \u2014\nwhich is the point, when a fracture runs round a corner you cannot see from\none viewpoint."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Turn Sticky Interp on before a mapping session and leave it on."}),"\n",(0,s.jsx)(t.h2,{id:"tidying-up-as-you-go",children:"Tidying up as you go"}),"\n",(0,s.jsxs)(t.p,{children:["All of these are on the ",(0,s.jsx)(t.strong,{children:"Edit"})," panel and apply to the trace you just made:"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Command"}),(0,s.jsx)(t.th,{children:"Use"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Undo"})}),(0,s.jsx)(t.td,{children:"Drops the last vertex while digitising."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Move Vertices"})}),(0,s.jsx)(t.td,{children:"Click a trace to show its vertices, then drag one onto where the fracture actually runs."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Erase Vertices"})}),(0,s.jsx)(t.td,{children:"Click vertices to delete them."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Snap Vertices"})}),(0,s.jsx)(t.td,{children:"Snap each new vertex onto an existing one \u2014 for making two traces meet exactly at an intersection."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Join Lines"})}),(0,s.jsx)(t.td,{children:"Ctrl-click two traces and merge them, when one fracture got mapped as two."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Split Line"})}),(0,s.jsx)(t.td,{children:"The reverse, at a chosen vertex."})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Refine by Spacing"})," (right-click the polyline \u2192 ",(0,s.jsx)(t.strong,{children:"Quality & Refinement"}),")\nthins a freehand-drawn trace to a chosen vertex spacing in metres. ",(0,s.jsx)(t.strong,{children:"Smooth"})," and\n",(0,s.jsx)(t.strong,{children:"Adaptive Refine"})," are on the same submenu. Worth running over a ",(0,s.jsx)(t.strong,{children:"Draw"}),"-mode\nsession before you move on."]}),"\n",(0,s.jsx)(t.h2,{id:"classifying-what-you-collect",children:"Classifying what you collect"}),"\n",(0,s.jsxs)(t.p,{children:["A trace on its own is just a line. Two things make it a ",(0,s.jsx)(t.em,{children:"fracture"})," trace as far\nas the rest of VRGS is concerned:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Traces digitised as ",(0,s.jsx)(t.strong,{children:"polylines"})," are accepted directly as trace input by the\nintensity and DFN tools \u2014 select the group when the command asks for traces."]}),"\n",(0,s.jsxs)(t.li,{children:["Orientation measurements can be typed, and this is where the distinction\nbetween joint, fault and cleavage is recorded. Select them in the\n",(0,s.jsx)(t.strong,{children:"Interpretations"})," tree, then ",(0,s.jsx)(t.em,{children:"right + click"})," \u2192 ",(0,s.jsx)(t.strong,{children:"Classification"})," \u2192\n",(0,s.jsx)(t.strong,{children:"Bed"}),", ",(0,s.jsx)(t.strong,{children:"Fracture"}),", ",(0,s.jsx)(t.strong,{children:"Cleavage"}),", ",(0,s.jsx)(t.strong,{children:"Foreset"})," or ",(0,s.jsx)(t.strong,{children:"Regional"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:'Classification is applied afterwards, in the tree \u2014 there is no "fracture mode"\nto arm before digitising. Do it in batches: select a whole group on the\nstereonet or in the tree and classify the lot in one go.'}),"\n",(0,s.jsx)(t.admonition,{title:"Group as you go",type:"note",children:(0,s.jsxs)(t.p,{children:["Right-click in the ",(0,s.jsx)(t.strong,{children:"Interpretations"})," tree \u2192 ",(0,s.jsx)(t.strong,{children:"Group"})," to put traces into named\nfolders \u2014 by set, by unit, by face. Every downstream command takes a ",(0,s.jsx)(t.em,{children:"group"})," as\nits input, so the folders you make here are the units of analysis later. A\nsingle flat list of four hundred traces will have to be split up eventually, and\nit is far easier now."]})}
1),"\n",(0,s.jsx)(t.h2,{id:"scan-lines-the-other-way-to-record-fractures",children:"Scan lines: the other way to record fractures"}),"\n",(0,s.jsxs)(t.p,{children:["A ",(0,s.jsx)(t.strong,{children:"scan line"})," is the virtual equivalent of stretching a tape across the\noutcrop and logging every fracture that crosses it. It produces something\ntraces do not: ",(0,s.jsx)(t.strong,{children:"P10"}),", the number of fractures per metre along a known line,\nwhich is the classic field measurement of fracture intensity."]}),"\n",(0,s.jsxs)(t.p,{children:["On the ",(0,s.jsx)(t.strong,{children:"Structure"})," panel, ",(0,s.jsx)(t.strong,{children:"Scan Line"})," has two modes:"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Mode"}),(0,s.jsx)(t.th,{children:"What it does"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"From intersections"})}),(0,s.jsx)(t.td,{children:"Digitise the line; VRGS intersects it with the orientation measurements already displayed and records where each one crosses."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"From Points"})}),(0,s.jsx)(t.td,{children:"Digitise the line, then mark each fracture position along it by hand."})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["Both need at least two points and finish on a ",(0,s.jsx)(t.strong,{children:"double-click"}),"."]}),"\n",(0,s.jsxs)(t.admonition,{title:"The two modes do not give you the same statistics",type:"warning",children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"From intersections"})," gives each logged fracture a measured orientation, so\nVRGS can report Fisher K, \u03b195, normal set spacing and the ",(0,s.jsx)(t.strong,{children:"Terzaghi"}),"\norientation-bias-corrected P10."]}),(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"From Points"})," records positions only. With no per-fracture orientation those\nstatistics are undefined, and VRGS reports them as zero rather than guessing.\nRaw P10 and direct spacing are still valid."]}),(0,s.jsxs)(t.p,{children:["If you want bias-corrected intensity \u2014 and on a fracture set oblique to your\nscan line you do \u2014 collect the orientations first and use ",(0,s.jsx)(t.strong,{children:"From intersections"}),"."]})]}),"\n",(0,s.jsxs)(t.p,{children:["Scan-line results appear in the scan line's own properties: ",(0,s.jsx)(t.strong,{children:"P10"}),", ",(0,s.jsx)(t.strong,{children:"Set\nSpacing"}),", ",(0,s.jsx)(t.strong,{children:"Normal Set Spacing"}),", ",(0,s.jsx)(t.strong,{children:"Fisher K"}),", ",(0,s.jsx)(t.strong,{children:"Mean Dip"})," and ",(0,s.jsx)(t.strong,{children:"Mean\nAzimuth"}),". ",(0,s.jsx)(t.a,{href:"/docs/next/tutorial/tutorial-fractures/tf050-intensity",children:"Measuring fracture intensity"})," picks this up."]}),"\n",(0,s.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/interpretation/basic-interpretation",children:"Basic Interpretation"})," \u2014 the complete reference for every digitising and editing tool."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/interpretation/measuring",children:"Measuring"})," \u2014 if what you want is a distance rather than an interpretation."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/fractures-structure/stratigraphy",children:"Stratigraphy"})," \u2014 recording which unit a fracture belongs to."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["Next: ",(0,s.jsx)(t.a,{href:"/docs/next/tutorial/tutorial-fractures/tf030-fractures-from-photographs",children:"fractures from photographs"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453(e,t,n){n.d(t,{R:()=>a,x:()=>o});var r=n(96540);const s={},i=r.createContext(s);function a(e){const t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.