Chapter 8 of The Nature of Code, Fractals, is about recursion and self-similar branching: a form whose parts repeat the structure of the whole at every scale. River networks are one of the clearest natural cases, the same fork-into-smaller-forks pattern from trunk to twig.

Rather than invent the fractal with recursive drawing code, I pull waterway=river and waterway=stream reaches from OpenStreetMap (Overpass API) for a bounding box around the Colorado-Green confluence near Canyonlands, Utah, and draw those polylines directly. Channel class is an ordered stand-in for trunk vs twig, encoded as a single blue ramp: rivers dark and thick, streams light and thin. The fractal is in the mapped drainage basin, the geometry Chapter 8 usually builds by hand.

Drainage networks are statistically self-similar: a sub-basin tends to reproduce the branching statistics of the whole. In the hydrology literature that is often summarized with Strahler stream order and Horton’s ratios \(R_B = N_i / N_{i+1}\) and \(R_L = \bar{L}_{i+1} / \bar{L}_i\), plus a box-counting dimension near 2 for a filled basin. This sketch does not compute Strahler numbers; it draws OSM’s waterway classes directly (river vs stream) as a two-level stand-in for trunk and twig. The self-similarity is in the mapped geometry Chapter 8 would otherwise invent with recursion.

Data source: OpenStreetMap (Overpass API)
Endpoint: https://overpass-api.de/api/interpreter (waterways in bbox 38.08,-110.02,38.42,-109.58)
Access: Public, no key. Loaded from an hourly server-side refresh when possible, with a bundled snapshot fallback, and a live browser fetch only when the API allows CORS. Data window: Colorado-Green confluence, Canyonlands UT (OSM waterways; pulled Aug 6, 2026 UTC)

Latest data pull 280 rows
Colorado-Green confluence, Canyonlands UT (OSM waterways; pulled Aug 6, 2026 UTC)
Name
Kind
Vertices
Start lon
Start lat
Green River
river
64
-110.0328
38.3908
Lockhart Canyon
river
64
-109.6143
38.2826
Rustler Canyon
river
64
-109.716
38.2836
(unnamed)
river
64
-109.7219
38.2639
Harts Draw
river
64
-109.4388
38.0084
Butler Wash - Lower Red Lake Canyon
river
64
-109.8883
38.1579
Butler Wash
river
64
-109.8296
37.992
Salt Creek
river
64
-109.7663
37.9223
Cross Canyon
river
64
-109.9438
38.0211
Indian Creek
river
64
-109.7136
38.2268
Colorado River
river
64
-109.2483
38.9724
Indian Creek
river
64
-109.6131
38.1052
Indian Creek
river
64
-109.6681
38.2118
Indian Creek
river
64
-109.6296
38.1668
Colorado River
river
64
-109.8856
38.1891
Colorado River
river
64
-109.738
38.4169
Green River
river
56
-110.0247
38.4507
Horsethief Canyon
river
47
-109.724
38.3435
Nope Creek
stream
64
-109.9698
38.2849
(unnamed)
stream
64
-109.9138
38.3859
(unnamed)
stream
64
-109.8733
38.3557
(unnamed)
stream
64
-109.8947
38.3408
Water Canyon
stream
64
-109.9568
38.1812
Shot Canyon
stream
64
-109.964
38.1936
(unnamed)
stream
64
-109.9552
38.1712
(unnamed)
stream
64
-109.9524
38.1655
(unnamed)
stream
64
-109.9126
38.2626
(unnamed)
stream
64
-109.9536
38.2461
Jasper Canyon - Closed to the Public per NPS
stream
64
-109.9703
38.1879
(unnamed)
stream
64
-109.9528
38.1824
(unnamed)
stream
64
-110.0027
38.1737
(unnamed)
stream
64
-110.0335
38.2142
(unnamed)
stream
64
-110.0033
38.1681
(unnamed)
stream
64
-109.9867
38.1724
Range Canyon
stream
64
-110.1077
38.1205
Deadhorse Canyon
stream
64
-110.039
38.2742
Trough Springs Canyon
stream
64
-109.5839
38.3962
Murphy Wash
stream
64
-109.8731
38.3431
(unnamed)
stream
64
-109.8733
38.3842
(unnamed)
stream
64
-109.8967
38.4024
Buck Canyon
stream
64
-109.8428
38.3975
Dog Leg Canyon
stream
64
-109.7938
38.3203
Gooseberry Canyon
stream
64
-109.8284
38.3351
Lathrop Canyon
stream
64
-109.7946
38.4041
(unnamed)
stream
64
-109.8502
38.3272
(unnamed)
stream
64
-109.8249
38.409
Trail Canyon
stream
64
-109.8696
38.3953
Lavender Creek
stream
64
-109.7082
37.9698
(unnamed)
stream
64
-109.7081
38.4199
(unnamed)
stream
64
-109.669
38.3724
(unnamed)
stream
64
-109.719
38.3946
(unnamed)
stream
64
-109.7048
38.3062
(unnamed)
stream
64
-109.6168
38.3588
(unnamed)
stream
64
-109.6752
38.2725
(unnamed)
stream
64
-109.6082
38.3262
(unnamed)
stream
64
-109.6632
38.3995
(unnamed)
stream
64
-109.6733
38.3818
(unnamed)
stream
64
-109.7048
38.3206
(unnamed)
stream
64
-109.5942
38.2655
(unnamed)
stream
64
-109.708
38.408
(unnamed)
stream
64
-109.6822
38.4123
Horsethief Canyon
stream
64
-109.7117
38.31
(unnamed)
stream
64
-109.7133
38.3148
(unnamed)
stream
64
-109.6486
38.2364
(unnamed)
stream
64
-109.6291
38.2286
(unnamed)
stream
64
-109.7063
38.3029
(unnamed)
stream
64
-109.6921
38.2647
(unnamed)
stream
64
-109.6821
38.2577
(unnamed)
stream
64
-109.659
38.245
(unnamed)
stream
64
-109.7271
38.2412
(unnamed)
stream
64
-109.737
38.3107
Davis Canyon
stream
64
-109.7243
38.0306
Horse Canyon
stream
64
-109.7296
38.0433
Little Spring Canyon
stream
64
-109.7971
38.1659
Lost Canyon
stream
64
-109.8182
38.0836
Big Spring Canyon
stream
64
-109.8181
38.1124
Elephant Canyon
stream
64
-109.8332
38.0888
Aztec Canyon
stream
64
-109.9211
38.0865
Chesler Canyon
stream
64
-109.8346
38.0698
(unnamed)
stream
64
-109.8794
38.1361
(unnamed)
stream
64
-109.8501
38.1121
Y Canyon
stream
64
-109.9398
38.094
(unnamed)
stream
64
-109.9457
38.0736
(unnamed)
stream
64
-109.8842
38.0127
(unnamed)
stream
64
-109.6971
38.264
Rustler Canyon
stream
64
-109.6891
38.2833
(unnamed)
stream
64
-109.8269
38.1174
(unnamed)
stream
64
-109.6644
38.3426
(unnamed)
stream
64
-109.6704
38.3418
Indian Creek
stream
64
-109.558
38.053
Indian Creek
stream
64
-109.5814
38.0865
Buck Canyon
stream
64
-109.8379
38.3516
(unnamed)
stream
64
-109.8866
38.1659
(unnamed)
stream
64
-109.7582
38.2161
Rustler Canyon
stream
64
-109.6933
38.2884
(unnamed)
stream
64
-109.7363
38.3119
(unnamed)
stream
64
-109.7366
38.316
(unnamed)
stream
64
-109.7384
38.3251
(unnamed)
stream
64
-109.7453
38.3167
(unnamed)
stream
64
-109.6989
38.2776
(unnamed)
stream
64
-109.709
38.304
(unnamed)
stream
64
-109.7089
38.3078
(unnamed)
stream
64
-109.8517
38.1281
(unnamed)
stream
64
-109.8502
38.3003
Buck Canyon
stream
64
-109.8344
38.3791
(unnamed)
stream
64
-109.8584
38.3481
(unnamed)
stream
64
-109.8539
38.3608
(unnamed)
stream
64
-109.8602
38.3748
(unnamed)
stream
64
-109.8544
38.3662
(unnamed)
stream
64
-110.0048
38.0759
(unnamed)
stream
64
-110.0055
38.0879
(unnamed)
stream
64
-109.9769
38.0639
Horse Canyon
stream
64
-110.066
38.237
South Fork Horse Canyon
stream
64
-110.0307
38.168
(unnamed)
stream
64
-109.8102
38.061
(unnamed)
stream
64
-109.8243
38.0726
(unnamed)
stream
64
-109.7904
38.0614
(unnamed)
stream
64
-109.794
38.063
(unnamed)
stream
64
-109.8316
38.1541
(unnamed)
stream
64
-109.9038
38.0374
(unnamed)
stream
64
-109.8248
38.0958
(unnamed)
stream
64
-109.7888
38.0959
(unnamed)
stream
64
-109.7895
38.0907
(unnamed)
stream
64
-109.7488
38.0889
(unnamed)
stream
64
-109.827
38.1622
(unnamed)
stream
64
-109.5807
38.3862
(unnamed)
stream
64
-109.6579
38.3253
(unnamed)
stream
64
-109.7065
38.3083
(unnamed)
stream
64
-109.7038
38.3087
(unnamed)
stream
64
-109.7081
38.3011
(unnamed)
stream
64
-109.827
38.0998
(unnamed)
stream
64
-109.7806
38.3162
(unnamed)
stream
64
-109.7899
38.3147
(unnamed)
stream
64
-109.8089
38.4158
(unnamed)
stream
64
-110.0224
38.1576
(unnamed)
stream
64
-109.9798
38.1761
(unnamed)
stream
64
-109.9767
38.1681
(unnamed)
stream
64
-109.9742
38.161
(unnamed)
stream
64
-109.9717
38.1522
(unnamed)
stream
64
-109.9772
38.1418
(unnamed)
stream
64
-109.9954
38.1326
(unnamed)
stream
64
-109.9848
38.13
(unnamed)
stream
64
-109.9871
38.1218
(unnamed)
stream
64
-109.9858
38.1438
(unnamed)
stream
64
-109.9802
38.1322
(unnamed)
stream
64
-110.005
38.1469
(unnamed)
stream
64
-109.9814
38.1302
(unnamed)
stream
64
-109.8798
38.168
(unnamed)
stream
64
-109.879
38.154
(unnamed)
stream
64
-109.8517
38.1392
(unnamed)
stream
64
-109.8732
38.1707
(unnamed)
stream
64
-109.8672
38.0931
(unnamed)
stream
64
-109.8673
38.0966
(unnamed)
stream
64
-109.8598
38.0899
(unnamed)
stream
64
-109.8452
38.0767
(unnamed)
stream
64
-109.8432
38.0754
(unnamed)
stream
64
-109.8564
38.0889
(unnamed)
stream
64
-109.8532
38.0837
(unnamed)
stream
64
-110.0433
38.3311
(unnamed)
stream
64
-109.6953
38.2859
(unnamed)
stream
64
-109.6961
38.2843
(unnamed)
stream
64
-109.6388
38.2782
(unnamed)
stream
64
-109.6597
38.0709
(unnamed)
stream
64
-109.6618
38.0705
(unnamed)
stream
64
-109.7067
38.1277
(unnamed)
stream
64
-109.6978
38.1103
(unnamed)
stream
64
-109.7344
38.2024
(unnamed)
stream
64
-109.7585
38.2116
(unnamed)
stream
64
-109.7388
38.2028
(unnamed)
stream
64
-109.8598
38.235
(unnamed)
stream
64
-109.8561
38.2272
(unnamed)
stream
64
-109.9852
38.4088
(unnamed)
stream
64
-109.9908
38.4055
(unnamed)
stream
64
-109.933
38.4213
(unnamed)
stream
64
-109.9449
38.4098
(unnamed)
stream
64
-109.9836
38.4184
(unnamed)
stream
64
-109.977
38.4199
(unnamed)
stream
64
-110.0473
38.4132
(unnamed)
stream
64
-109.873
38.3018
(unnamed)
stream
64
-109.8636
38.3146
(unnamed)
stream
64
-109.8664
38.3335
(unnamed)
stream
64
-109.8386
38.0957
(unnamed)
stream
64
-109.9835
38.1913
(unnamed)
stream
63
-109.948
38.1833
(unnamed)
stream
63
-109.8726
38.3246
(unnamed)
stream
62
-109.943
38.2225
(unnamed)
stream
62
-109.9704
38.2409
(unnamed)
stream
62
-109.7065
38.3962
(unnamed)
stream
61
-109.6182
38.3092
(unnamed)
stream
59
-109.9204
38.1809
(unnamed)
stream
58
-109.7567
38.1535
(unnamed)
stream
54
-109.8769
38.171
(unnamed)
stream
52
-109.7382
38.3066
(unnamed)
stream
52
-109.8248
38.0907
(unnamed)
stream
50
-109.7295
38.3054
(unnamed)
stream
50
-109.8031
38.081
(unnamed)
stream
50
-109.9809
38.4197
(unnamed)
stream
49
-109.7448
38.2755
(unnamed)
stream
49
-109.7806
38.2289
(unnamed)
stream
48
-109.8497
38.124
(unnamed)
stream
48
-109.7928
38.0979
(unnamed)
stream
47
-109.8195
38.3974
(unnamed)
stream
46
-109.96
38.2479
(unnamed)
stream
46
-109.9815
38.1407
(unnamed)
stream
43
-109.9371
38.3215
(unnamed)
stream
43
-109.7847
38.2513
(unnamed)
stream
42
-109.7129
38.254
(unnamed)
stream
42
-109.7691
38.2171
(unnamed)
stream
42
-109.7957
38.2488
(unnamed)
stream
42
-109.7911
38.2293
(unnamed)
stream
41
-110.0072
38.1447
Little Bridge Canyon
stream
40
-109.7707
38.4055
(unnamed)
stream
40
-109.8541
38.1778
(unnamed)
stream
40
-110.004
38.104
Lens Canyon
stream
39
-109.8901
38.1701
(unnamed)
stream
38
-109.9519
38.0913
(unnamed)
stream
37
-109.8328
38.3743
(unnamed)
stream
37
-109.6986
38.3967
(unnamed)
stream
36
-109.9133
38.4015
(unnamed)
stream
36
-109.7709
38.2125
(unnamed)
stream
35
-109.8038
38.1542
(unnamed)
stream
35
-109.7724
38.2434
(unnamed)
stream
34
-109.9275
38.193
(unnamed)
stream
33
-109.9538
38.2493
(unnamed)
stream
33
-109.9215
38.1893
(unnamed)
stream
30
-109.8497
38.0806
(unnamed)
stream
30
-109.8544
38.0843
(unnamed)
stream
29
-109.7827
38.2168
(unnamed)
stream
29
-109.7051
38.3082
(unnamed)
stream
29
-109.7995
38.413
(unnamed)
stream
28
-109.9091
38.2642
(unnamed)
stream
28
-109.7903
38.2449
(unnamed)
stream
27
-109.9671
38.2448
Nope Creek
stream
27
-109.9723
38.2862
(unnamed)
stream
25
-109.8562
38.0884
(unnamed)
stream
24
-109.9089
38.261
(unnamed)
stream
23
-109.9423
38.1837
(unnamed)
stream
23
-109.7785
38.4095
(unnamed)
stream
22
-109.9693
38.1861
(unnamed)
stream
22
-109.9876
38.2286
(unnamed)
stream
21
-109.9336
38.2319
(unnamed)
stream
21
-109.7736
38.2258
(unnamed)
stream
20
-109.973
38.1977
(unnamed)
stream
19
-109.9101
38.2609
(unnamed)
stream
19
-109.9724
38.2061
(unnamed)
stream
19
-109.7888
38.2403
(unnamed)
stream
19
-109.7328
38.3042
(unnamed)
stream
18
-109.9424
38.2497
(unnamed)
stream
18
-109.954
38.2351
(unnamed)
stream
18
-109.963
38.2574
(unnamed)
stream
18
-109.7932
38.2392
(unnamed)
stream
17
-109.9384
38.2512
(unnamed)
stream
16
-109.9481
38.2452
(unnamed)
stream
16
-109.9629
38.2301
(unnamed)
stream
15
-109.9489
38.2453
(unnamed)
stream
15
-109.9329
38.2574
(unnamed)
stream
15
-109.9503
38.185
(unnamed)
stream
14
-109.9708
38.1946
(unnamed)
stream
14
-109.9322
38.1879
(unnamed)
stream
14
-109.7767
38.2396
(unnamed)
stream
13
-109.9343
38.257
(unnamed)
stream
13
-109.9377
38.2307
(unnamed)
stream
13
-109.9478
38.2189
(unnamed)
stream
13
-109.7656
38.2245
(unnamed)
stream
12
-109.9125
38.2609
(unnamed)
stream
12
-109.9448
38.248
(unnamed)
stream
11
-109.9371
38.2553
(unnamed)
stream
11
-109.9717
38.2054
(unnamed)
stream
11
-109.9347
38.2355
(unnamed)
stream
10
-109.9485
38.2526
(unnamed)
stream
10
-109.9688
38.1967
(unnamed)
stream
10
-109.9096
38.1985
(unnamed)
stream
10
-109.9227
38.195
(unnamed)
stream
10
-109.7742
38.2235
(unnamed)
stream
10
-109.7814
38.2458
(unnamed)
stream
9
-109.9086
38.2636
(unnamed)
stream
9
-109.9127
38.1955
(unnamed)
stream
8
-109.9473
38.254
(unnamed)
stream
8
-109.8686
38.1126
(unnamed)
stream
4
-109.7002
38.3893

Colorado-Green confluence, Canyonlands UT. All 280 waterway reaches are listed below.