Fracture data almost never arrive as a single population. What you have is usually several joint sets laid on top of each other, formed at different times and often in different stress fields, and nearly everything you might go on to compute assumes somebody has already pulled them apart. Block size, fracture permeability, a kinematic test for slope failure: all of them are evaluated set by set, and all of them are meaningless if two unrelated populations have been averaged into one.
Most of us do the pulling apart by eye. You look at a rose diagram, you see where the petals bunch, you draw the groups, you report the means. It works more often than not. What it does not do is leave a record of the judgement you made, and as this dataset shows, that judgement can change the answer.
What the map gives us
The joints here come from the National Park Service Geologic Resources Inventory geodatabase for Canyonlands, which digitises the Huntoon, Billingsley and Breed geologic map of 1982 at 1:62,500. It is public, and the extract used below is attached at the end of this piece. There are 725 joints, each with a strike, a position, and the geologic unit and period it was mapped in.
That unevenness is the first thing to be honest about. These are symbols a mapper chose to draw, not measurements from a designed traverse, so counts in this dataset tell you where joints were portrayed rather than where they are abundant. Every dip is also recorded as 90, which on a published map means “vertical or near enough” rather than a compass reading of exactly ninety degrees. Neither fact affects the arithmetic below. Both limit how far the conclusions travel.
Why the stereonet has nothing to say here
The reflex is to plot poles and contour them. Do that and you get a ring of points sitting on the primitive circle with nothing inside it, because the pole to a vertical plane is horizontal and every plane here is vertical. Run the orientation tensor and the third eigenvalue comes out at exactly zero, which is the arithmetic saying the same thing: the data occupy a plane and carry no information in the third dimension. The distribution formally classifies as a girdle, but that is a consequence of how the map coded dip, not a property of the fracture network.
With dip fixed there is one variable left, and the rose diagram is the plot for it.
Three joint sets
Taken as one population the strikes average out to roughly 093°, with a mean resultant length of 0.29. That number is worth quoting once and then ignoring. A resultant that low across a spread that wide is not a preferred orientation; it is the average of several preferred orientations, and it describes none of them.
Set detection is more useful. The distribution is smoothed with a circular kernel, the peaks are found, and any peak that is too short or that sits too close to a taller neighbour is discarded. Measurements are then assigned to the nearest surviving peak. Nothing here is exotic; the only thing worth watching is what counts as “too short”.
Reject peaks shorter than a quarter of the tallest, and three sets come back. They are tight, and together they account for 88 per cent of the joints.
| Set | Window | N | Mean strike | R̄ | α95 | 2σ |
|---|---|---|---|---|---|---|
| 1 | 024°–072° | 197 | 046° | 0.92 | ±1.5° | ±24° |
| 2 | 067°–115° | 217 | 089° | 0.96 | ±1.0° | ±17° |
| 3 | 100°–148° | 223 | 126° | 0.94 | ±1.2° | ±21° |
Two of those columns get confused constantly, so it is worth being explicit. The confidence cone α95 tells you how well the mean is pinned down, and it shrinks as you add measurements. The spread 2σ tells you how scattered the joints themselves are, and it does not. A set can have a mean known to a degree and still be twenty degrees wide, which is exactly what all three of these are.
Or four, depending on where you draw the line
The 88 joints left over are not noise. Drop the acceptance threshold from a quarter of the tallest peak to about a sixth and a fourth mode clears the bar, running north to south. Almost every leftover joint belongs to it, and the unassigned residue falls from 12 per cent of the dataset to 2 per cent.
| Threshold | Joint sets | Assigned | Unassigned |
|---|---|---|---|
| 25 % | 046°, 089°, 126° | 637 | 88 (12 %) |
| 17 % | 001°, 046°, 089°, 126° | 710 | 15 (2 %) |
The interesting part is that the fourth set is not marginal in any physical sense. Its internal scatter, near ±27°, is only a few degrees wider than set 1's, which nobody would think twice about. What makes it marginal is that there are only 73 joints in it, so its peak stands about a quarter as tall as the largest one and lands squarely on the wrong side of a round number somebody picked.
A test the orientations cannot fake
So is it a real joint set, or a lump in the tail? Orientation alone cannot settle that, because the set model was built from orientation in the first place. What can settle it is an attribute the detector never saw. This dataset carries one: the age of the unit each joint sits in.
Colour the same rose by geologic period and the sets stop looking interchangeable. Just over half the dataset is Permian, a quarter Triassic and a sixth Jurassic, and that is the mix you would expect inside every set if the sets were all the same age. They are not. The north–south set is 77 per cent Permian. The north-westerly set at 126° splits almost evenly three ways, which given the makeup of the dataset means it is strongly over-represented in the Jurassic.
Reading it the other way makes the trend clearer still. The 126° set accounts for a fifth of Permian joints, a little over a third of Triassic ones and well over half of Jurassic ones, climbing steadily up-section. The north–south set runs the other way, from a seventh of the Permian to almost nothing in the Jurassic. Run detection on the Permian joints alone and four modes come back with 2 per cent unassigned; do the same on the Triassic or the Jurassic and you get two, with roughly a quarter of the joints left over.
That is a genuine result and not a very comfortable one for the three-set model. A joint set that is well developed in the lower part of a section and largely missing from the upper part is behaving like a set of a different age. It is not proof, and there are two other explanations to keep in mind: the units are exposed and mapped differently, so the samples are not drawn under the same conditions, and they differ mechanically, so one stress history could in principle write different patterns into each without any difference in timing. Sorting that out needs cross-cutting relations in the field, which a map symbol cannot give you. But the pattern is there, and it came from a column the detector never looked at.
What to take away
The threshold is a decision, not a measurement. Nothing in the data says how large a minority has to be before it earns the name of a joint set, and moving that number by eight percentage points here changes both the set count and the story you can tell about fracture timing. There is no objective value to go looking for. What there is, and what costs nothing, is writing down the value you used along with the smoothing width, the minimum separation and the window half-width. A set of means quoted without those four numbers cannot be checked by anybody, including you in six months.
The second thing is to keep the sampling in view. These proportions describe a mapped population, not a rock mass, and no correction repairs that. Terzaghi weighting, which is the usual fix for orientation bias, applies to traverses and boreholes where the sampling geometry is a line. Here the geometry is editorial. That does not make the sets wrong, but it does mean the relative sizes of the sets are a statement about a map.
Lastly, a small convention worth stating whenever vertical joints are involved. Right-hand-rule strike is ambiguous for a vertical plane, so the 126° set is equally the 306° set. Everything above is in the axial 0° to 180° domain, and comparisons with other datasets have to be made in the same one.
Data and sources
The extract is a single CSV of 725 records with strike, dip, latitude, longitude, mapped unit and geologic period. It imports into Stereogram Pro without any manual column mapping, and every figure and table above can be reproduced from it.
canyonlands-joints.csv
725 records · 54 kB · derived from NPS DataStore reference 2308549.
Original dataset
Geologic Resources Inventory (GRI) program, 2025. Digital Geologic-GIS Map of Canyonlands National Park and Vicinity, Utah (NPS, GRD, GRI, CANY, CANY digital map), adapted from a Canyonlands Natural History Association map by Huntoon, Billingsley and Breed (1982). 3rd edition, data formats updated. National Park Service (NPS) Geologic Resources Inventory (GRI) program, Lakewood, Colorado.
- Available from
- NPS DataStore reference 2308549: irma.nps.gov/DataStore/Reference/Profile/2308549. Free, and no account is needed.
- Files to download
-
cany_geology_gpkg.zip(GeoPackage, 24 MB, opens in QGIS) orcany_geology_gdb_pro.zip(Esri file geodatabase, 15 MB). Both carry the same data. The reference also holdscany_geology_gis_readme.pdfandcany_geology_metadata_faq.pdf, which state the accuracy and intended use of the map and are worth reading before you reuse it. - Layer used here
-
The attitude observation points:
CANY_Geologic_Attitude_Observation_Localitiesin the GeoPackage,canyatdin the geodatabase. - Terms of use
- The DataStore record asserts no copyright and states no use constraints; as a work of the U.S. federal government the map data are in the public domain. Cite the GRI product as above if you republish it.
- Version used
- Issued 20 February 2025, retrieved 2 August 2026.
- How our CSV differs
- Joints only, sentinel values stripped, feature-type codes decoded to plain labels, coordinates reprojected to WGS 84 decimal degrees, and mapped unit and geologic period attached by point-in-polygon join against the map's unit layer. No orientation was altered.
Huntoon, P. W., Billingsley, G. H. and Breed, W. J., 1982. Geologic Map of Canyonlands National Park and Vicinity, Utah, scale 1:62,500. Canyonlands Natural History Association.
Krumbein, W. C., 1939. Preferred orientation of pebbles in sedimentary deposits. Journal of Geology, 47, 673–706. The doubled-angle treatment of axial data used for the rose statistics.
Mardia, K. V. and Jupp, P. E., 2000. Directional Statistics. Wiley, Chichester. On R̄, and on the difference between confidence in a mean and dispersion of a sample.
Priest, S. D., 1993. Discontinuity Analysis for Rock Engineering. Chapman & Hall, London. Joint set definition from the engineering side.
Terzaghi, R. D., 1965. Sources of error in joint surveys. Géotechnique, 15, 287–304.
Run this workflow yourself
Stereogram Pro opens in demo mode straight from the browser. No signup, no account, and nothing leaves your machine. Load the sample joint data, build the rose diagram, and try the class interval both ways to see how much the set count depends on it.
Workflows with open structural data
- 1 How many joint sets? Canyonlands · You are here
- 2 Fold axis three ways Voyageurs
- 3 Structural domains Grand Canyon
- 4 Fault-slip P and T axes Bavaria