GeoNeural

Can a small neural network store terrain in fewer bytes than the best standard codecs, and still tell water where to flow?

2026 – present

Methods

  • Digital elevation models
  • Airborne laser scanning (DGM1)
  • Error-bounded compression
  • Neural predictors (PyTorch)
  • Entropy coding (rANS)
  • Flow routing (D8)
  • Landscape evolution
  • Inverse problems
  • Super-resolution
  • Rust
  • WebAssembly
  • Three.js

Overview

Can a small neural network store terrain in fewer bytes than the best standard codecs?

And does the smaller file still send water the same way?

Loading the terrain map (about 0.5 MB)…

Terrain map.Drawn 5 times taller than it is.

A digital elevation model is a map of heights: one number for every point on a grid. Built from airborne laser scans and satellite data, these maps show where rivers run, where floods spread and how landscapes change. They are also very large: the 1 m terrain model of North Rhine-Westphalia alone holds about 34 billion heights.

GeoNeural asks whether a small neural network can store such maps in fewer bytes, with every height still within a fixed error, say 25 cm. It competes against standard codecs, the programs that pack scientific data into files and unpack them again. The map above shows one of the thirteen regions, Essen-Ruhr: southern Essen and the Ruhr valley.

The neural predictor made smaller files on seven new regions

On seven regions the coder had never seen, it was 17 to 26% smaller on average for errors from 5 to 50 cm, and 14 to 27% per region. At 1 m the gain shrinks to 6%, and not every region is smaller.

7 new regions

0.7×0.8×0.9×1.0×1.1×1.2×1.3×1.4×1 cm5 cm25 cm1 m2 mlargest error1 cm: 0.891 of the best standard codec's file size2.5 cm: 0.856 of the best standard codec's file size5 cm: 0.826 of the best standard codec's file size10 cm: 0.795 of the best standard codec's file size25 cm: 0.744 of the best standard codec's file size50 cm: 0.771 of the best standard codec's file size1 m: 0.940 of the best standard codec's file size2 m: 1.408 of the best standard codec's file sizesame size26% smaller2.7× ↑
0.7×0.8×0.9×1.0×1.1×1.2×1.3×1.4×1 cm5 cm25 cm1 mlargest error1 cm: 0.891 of the best standard codec's file size2.5 cm: 0.856 of the best standard codec's file size5 cm: 0.826 of the best standard codec's file size10 cm: 0.795 of the best standard codec's file size25 cm: 0.744 of the best standard codec's file size50 cm: 0.771 of the best standard codec's file size1 m: 0.940 of the best standard codec's file size2 m: 1.408 of the best standard codec's file sizesame size26% smaller2 m: 2.7× ↑
↑ file size vs best standard codec

6 development regions

0.7×0.8×0.9×1.0×1.1×1.2×1.3×1.4×1 cm5 cm25 cm1 m2 mlargest error1 cm: 0.901 of the best standard codec's file size2.5 cm: 0.876 of the best standard codec's file size5 cm: 0.854 of the best standard codec's file size10 cm: 0.827 of the best standard codec's file size25 cm: 0.770 of the best standard codec's file size50 cm: 0.753 of the best standard codec's file size1 m: 0.819 of the best standard codec's file size2 m: 1.049 of the best standard codec's file sizesame size25% smaller1.6× ↑
0.7×0.8×0.9×1.0×1.1×1.2×1.3×1.4×1 cm5 cm25 cm1 mlargest error1 cm: 0.901 of the best standard codec's file size2.5 cm: 0.876 of the best standard codec's file size5 cm: 0.854 of the best standard codec's file size10 cm: 0.827 of the best standard codec's file size25 cm: 0.770 of the best standard codec's file size50 cm: 0.753 of the best standard codec's file size1 m: 0.819 of the best standard codec's file size2 m: 1.049 of the best standard codec's file sizesame size25% smaller2 m: 1.6× ↑
↑ file size vs best standard codec
  • each region
  • fixed predictor, average
  • neural predictor, average
Below 1 means a smaller file than the best standard codec. Thin lines are single regions, the bold line their average.

Is a smaller file automatically a better file?

The smaller files kept fewer streams in some regions

No. Trace where water would flow on the decoded map: in some regions the neural file kept fewer of the original streams than the best standard codec, and at 50 cm and 1 m in all seven. By the rule written down before the test, the answer to the main question is no. The Drainage part explains why.

Six questions, and where they stand

Four questions are about storing terrain, two about the physics that shapes it. Each had a yes-or-no rule set in advance, and a no counts as an answer. A side study asks whether a network can sharpen coarse maps.

To be continued

This project is actively worked on. The compression test is complete. Next: a coder that also keeps the streams, then the full geology, physics and reconstruction studies.

References

  1. Liang et al. (2023): SZ3: a modular framework for composing prediction-based error-bounded lossy compressors
  2. Lindstrom (2014): Fixed-rate compressed floating-point arrays (zfp)
  3. Li, Lindstrom & Clyne (2023): Lossy scientific data compression with SPERR · IPDPS 2023
  4. Duda (2013): Asymmetric numeral systems: entropy coding combining speed of Huffman coding with compression rate of arithmetic coding
  5. Ballé, Laparra & Simoncelli (2017): End-to-end optimized image compression
  6. Dupont et al. (2022): COIN++: neural compression across modalities

Novelty scope: The codecs, the entropy coder, flow routing and the landscape model are established tools. What is new is the test: every byte a decoder needs is counted, the bar is the best of five standard codecs, keeping the streams counts as much as saving bytes, and the rules were written down before the new regions were picked.

Part 01 of 06Compression

How can a file get smaller, if every height must stay within a fixed error?

  1. 1Keep a coarse grid

    A few heights are stored as they are.

  2. 2Predict the points in between

    Each new height is guessed from its neighbors. This is where the neural predictor works.

  3. 3Store only the prediction error

    Only how far each guess is off goes into the file. Then halve the spacing and repeat.

How the coder works, level by level.

The coder works like SZ3, a standard tool for scientific data, in the three steps above. Unlike photo compression, it promises a largest error for every single height. The better the guess, the smaller the file.

The neural predictor is a network of just 3.7 kB. It sharpens each guess and says how sure it is, which lets the coder pack the prediction errors tighter. It travels inside every file, so no byte is left uncounted.

Every region got smaller

At a largest error of 25 cm, the neural predictor beat SZ3 and SPERR, the two strongest standard codecs, in every region: the six development regions, each coded by a model that never saw it, and the seven new ones.

new 6, flatnew 3, moderatenew 4, flatnew 7, roughnew 5, moderatenew 2, moderatenew 1, roughMünsterlandLower RhineTeutoburg ForestRothaarBergisches LandEssen-Ruhr50100200file size at 25 cm error (kB)new 6, SPERR: 76.6 kBnew 3, SPERR: 80.5 kBnew 4, SPERR: 91.0 kBnew 7, SPERR: 102.8 kBnew 5, SPERR: 116.6 kBnew 2, SPERR: 115.4 kBnew 1, SPERR: 121.1 kBMünsterland, SPERR: 89.7 kBLower Rhine, SPERR: 94.9 kBTeutoburg Forest, SPERR: 142.1 kBRothaar, SPERR: 173.8 kBBergisches Land, SPERR: 185.4 kBEssen-Ruhr, SPERR: 208.8 kBnew 6, SZ3, best setting: 67.5 kBnew 3, SZ3, best setting: 73.3 kBnew 4, SZ3, best setting: 84.7 kBnew 7, SZ3, best setting: 99.7 kBnew 5, SZ3, best setting: 111.7 kBnew 2, SZ3, best setting: 112.1 kBnew 1, SZ3, best setting: 115.5 kBMünsterland, SZ3, best setting: 81.9 kBLower Rhine, SZ3, best setting: 89.8 kBTeutoburg Forest, SZ3, best setting: 131.5 kBRothaar, SZ3, best setting: 167.8 kBBergisches Land, SZ3, best setting: 176.0 kBEssen-Ruhr, SZ3, best setting: 191.8 kBnew 6, Fixed predictor: 59.6 kBnew 3, Fixed predictor: 65.7 kBnew 4, Fixed predictor: 71.8 kBnew 7, Fixed predictor: 88.3 kBnew 5, Fixed predictor: 95.3 kBnew 2, Fixed predictor: 97.6 kBnew 1, Fixed predictor: 99.9 kBMünsterland, Fixed predictor: 74.8 kBLower Rhine, Fixed predictor: 75.9 kBTeutoburg Forest, Fixed predictor: 116.0 kBRothaar, Fixed predictor: 148.7 kBBergisches Land, Fixed predictor: 152.8 kBEssen-Ruhr, Fixed predictor: 170.2 kBnew 6, Neural predictor: 50.6 kBnew 3, Neural predictor: 55.4 kBnew 4, Neural predictor: 62.1 kBnew 7, Neural predictor: 75.0 kBnew 5, Neural predictor: 82.0 kBnew 2, Neural predictor: 83.0 kBnew 1, Neural predictor: 85.9 kBMünsterland, Neural predictor: 62.8 kBLower Rhine, Neural predictor: 65.4 kBTeutoburg Forest, Neural predictor: 99.3 kBRothaar, Neural predictor: 133.6 kBBergisches Land, Neural predictor: 136.5 kBEssen-Ruhr, Neural predictor: 153.4 kB−25%−24%−27%−25%−27%−26%−26%−23%−27%−25%−20%−22%−20%New regions (relief)Development regions
new 6, flatnew 3, moderatenew 4, flatnew 7, roughnew 5, moderatenew 2, moderatenew 1, roughMünsterlandLower RhineTeutoburg ForestRothaarBergisches LandEssen-Ruhr50100200file size at 25 cm (kB)new 6, SPERR: 76.6 kBnew 3, SPERR: 80.5 kBnew 4, SPERR: 91.0 kBnew 7, SPERR: 102.8 kBnew 5, SPERR: 116.6 kBnew 2, SPERR: 115.4 kBnew 1, SPERR: 121.1 kBMünsterland, SPERR: 89.7 kBLower Rhine, SPERR: 94.9 kBTeutoburg Forest, SPERR: 142.1 kBRothaar, SPERR: 173.8 kBBergisches Land, SPERR: 185.4 kBEssen-Ruhr, SPERR: 208.8 kBnew 6, SZ3, best setting: 67.5 kBnew 3, SZ3, best setting: 73.3 kBnew 4, SZ3, best setting: 84.7 kBnew 7, SZ3, best setting: 99.7 kBnew 5, SZ3, best setting: 111.7 kBnew 2, SZ3, best setting: 112.1 kBnew 1, SZ3, best setting: 115.5 kBMünsterland, SZ3, best setting: 81.9 kBLower Rhine, SZ3, best setting: 89.8 kBTeutoburg Forest, SZ3, best setting: 131.5 kBRothaar, SZ3, best setting: 167.8 kBBergisches Land, SZ3, best setting: 176.0 kBEssen-Ruhr, SZ3, best setting: 191.8 kBnew 6, Fixed predictor: 59.6 kBnew 3, Fixed predictor: 65.7 kBnew 4, Fixed predictor: 71.8 kBnew 7, Fixed predictor: 88.3 kBnew 5, Fixed predictor: 95.3 kBnew 2, Fixed predictor: 97.6 kBnew 1, Fixed predictor: 99.9 kBMünsterland, Fixed predictor: 74.8 kBLower Rhine, Fixed predictor: 75.9 kBTeutoburg Forest, Fixed predictor: 116.0 kBRothaar, Fixed predictor: 148.7 kBBergisches Land, Fixed predictor: 152.8 kBEssen-Ruhr, Fixed predictor: 170.2 kBnew 6, Neural predictor: 50.6 kBnew 3, Neural predictor: 55.4 kBnew 4, Neural predictor: 62.1 kBnew 7, Neural predictor: 75.0 kBnew 5, Neural predictor: 82.0 kBnew 2, Neural predictor: 83.0 kBnew 1, Neural predictor: 85.9 kBMünsterland, Neural predictor: 62.8 kBLower Rhine, Neural predictor: 65.4 kBTeutoburg Forest, Neural predictor: 99.3 kBRothaar, Neural predictor: 133.6 kBBergisches Land, Neural predictor: 136.5 kBEssen-Ruhr, Neural predictor: 153.4 kB−25%−24%−27%−25%−27%−26%−26%−23%−27%−25%−20%−22%−20%New regions (relief)Development regions
  • SPERR
  • SZ3, best setting
  • Fixed predictor
  • Neural predictor, model inside
At 25 cm the neural predictor (filled dot) makes the smallest file in every region. The number is its saving over the best standard codec.

Is the saving really the neural network, or the coder around it?

About half the gain is the coder, half the network

Both. With the fixed predictor, a fixed formula in place of the network, the same coder is already 7 to 13% smaller than the best standard codec. The network takes off another 11 to 15%.

Why not train a network for each map, so that it fits perfectly?

A network for every map does not pay off

That is how a neural field works: one network learns one map by heart. With every byte counted, it costs far more than it saves: on one region at 50 cm, it took 29 kB to store and saved 4.4 kB. One small network, trained once and shared, is the version that pays.

standard filestandard file, coded terrain: 124.3 kBstandard file, learned grid: 0.0 kBstandard file, network weights: 0.0 kB124.3 kBwith a networkwith a network, coded terrain: 119.9 kBwith a network, learned grid: 27.0 kBwith a network, network weights: 2.1 kB149.0 kBwithout the network050100150file size (kB)
standard filestandard file, coded terrain: 124.3 kBstandard file, learned grid: 0.0 kBstandard file, network weights: 0.0 kB124.3 kBwith a networkwith a network, coded terrain: 119.9 kBwith a network, learned grid: 27.0 kBwith a network, network weights: 2.1 kB149.0 kBwithout the network050100150file size (kB)
  • coded terrain
  • learned grid
  • network weights
First test: a network fitted to one terrain saves 4.4 kB and costs 29 kB to store.

Almost every byte is a coded prediction error

A file is mostly coded prediction errors. The network is about 2% of a 25 cm file. At coarse errors of 1 m and more, the files get so small that the network becomes a large share, and the gain fades.

SZ3, best settingSZ3, best setting, coded prediction errors: 0.0 kBSZ3, best setting, bits stored as is: 0.0 kBSZ3, best setting, coarse grid and header: 0.0 kBSZ3, best setting, model: 0.0 kBSZ3, best setting, whole file: 191.8 kB191.8 kBFixed predictorFixed predictor, coded prediction errors: 0.0 kBFixed predictor, bits stored as is: 0.0 kBFixed predictor, coarse grid and header: 0.0 kBFixed predictor, model: 0.0 kBFixed predictor, whole file: 170.2 kB170.2 kBNeural, model insideNeural, model inside, coded prediction errors: 137.2 kBNeural, model inside, bits stored as is: 11.4 kBNeural, model inside, coarse grid and header: 0.8 kBNeural, model inside, model: 3.7 kBNeural, model inside, whole file: 0.0 kB153.2 kBNeural, model sharedNeural, model shared, coded prediction errors: 137.2 kBNeural, model shared, bits stored as is: 11.4 kBNeural, model shared, coarse grid and header: 0.8 kBNeural, model shared, model: 0.0 kBNeural, model shared, whole file: 0.0 kB149.5 kB050100150200file size (kB)
SZ3, best settingSZ3, best setting, coded prediction errors: 0.0 kBSZ3, best setting, bits stored as is: 0.0 kBSZ3, best setting, coarse grid and header: 0.0 kBSZ3, best setting, model: 0.0 kBSZ3, best setting, whole file: 191.8 kB191.8 kBFixed predictorFixed predictor, coded prediction errors: 0.0 kBFixed predictor, bits stored as is: 0.0 kBFixed predictor, coarse grid and header: 0.0 kBFixed predictor, model: 0.0 kBFixed predictor, whole file: 170.2 kB170.2 kBNeural, model insideNeural, model inside, coded prediction errors: 137.2 kBNeural, model inside, bits stored as is: 11.4 kBNeural, model inside, coarse grid and header: 0.8 kBNeural, model inside, model: 3.7 kBNeural, model inside, whole file: 0.0 kB153.2 kBNeural, model sharedNeural, model shared, coded prediction errors: 137.2 kBNeural, model shared, bits stored as is: 11.4 kBNeural, model shared, coarse grid and header: 0.8 kBNeural, model shared, model: 0.0 kBNeural, model shared, whole file: 0.0 kB149.5 kB0100200file size (kB)
  • coded prediction errors
  • bits stored as is
  • coarse grid and header
  • model
  • whole file
Development region Essen-Ruhr at 25 cm: almost every byte is a coded prediction error. The model itself is a thin slice.

Compared against the best of five standard codecs

The first version of this project measured neural models against q32, a simple baseline, and did not count every byte. SZ3 needs only a quarter to two thirds of q32's bytes for the same largest error, so those early comparisons were too easy. This version takes the smallest file of five standard codecs, with SZ3 also tuned over 14 settings.

20501002005001,0005 cm10 cm25 cm50 cm1 m2 mlargest errorq32, 5 cm: 574.5 kBq32, 10 cm: 434.1 kBq32, 25 cm: 285.4 kBq32, 50 cm: 203.1 kBq32, 1 m: 144.9 kBq32, 2 m: 95.1 kBSPERR, 5 cm: 393.5 kBSPERR, 10 cm: 274.7 kBSPERR, 25 cm: 148.1 kBSPERR, 50 cm: 84.5 kBSPERR, 1 m: 46.0 kBSPERR, 2 m: 24.4 kBSZ3, 5 cm: 366.1 kBSZ3, 10 cm: 250.2 kBSZ3, 25 cm: 138.0 kBSZ3, 50 cm: 80.6 kBSZ3, 1 m: 43.0 kBSZ3, 2 m: 21.5 kBAt 1 m (ring), SZ3 needs 70%fewer bytes than q32
20501002005001,0005 cm10 cm25 cm50 cm1 m2 mlargest errorq32, 5 cm: 574.5 kBq32, 10 cm: 434.1 kBq32, 25 cm: 285.4 kBq32, 50 cm: 203.1 kBq32, 1 m: 144.9 kBq32, 2 m: 95.1 kBSPERR, 5 cm: 393.5 kBSPERR, 10 cm: 274.7 kBSPERR, 25 cm: 148.1 kBSPERR, 50 cm: 84.5 kBSPERR, 1 m: 46.0 kBSPERR, 2 m: 24.4 kBSZ3, 5 cm: 366.1 kBSZ3, 10 cm: 250.2 kBSZ3, 25 cm: 138.0 kBSZ3, 50 cm: 80.6 kBSZ3, 1 m: 43.0 kBSZ3, 2 m: 21.5 kBAt 1 m (ring), SZ3 needs 70%fewer bytes than q32
↑ file size (kB)
  • zfp
  • LERC
  • q32 (first comparison)
  • SPERR
  • SZ3
First test: SZ3 and SPERR need far fewer bytes than q32, the simple baseline of the first version.

What does the smaller file cost?

Smaller files take longer to open

The neural decoder runs its small network once for every height. In a browser it opens a 10 by 10 km region in about 0.7 s, where SZ3 needs about 0.01 s. The bytes are paid for with time.

SZ3neural, in a browserneural, Python0.010.11seconds to decode one regionSZ3: 0.01 to 0.01 sneural, in a browser: 0.66 to 0.74 sneural, Python: 1.2 to 1.3 s0.01 s0.66 to 0.74 s1.2 to 1.3 s
SZ3neural, browserneural, Python0.010.11seconds per regionSZ3: 0.01 to 0.01 sneural, in a browser: 0.66 to 0.74 sneural, Python: 1.2 to 1.3 s0.01 s0.66 to 0.74 s1.2 to 1.3 s
The neural file decodes in under a second in a browser, much slower than SZ3. Rough timings from a shared machine.

Try it in your browser

Compare the three files on two regions: their size, where their errors fall, and which streams they keep. The neural file is decoded right here by a Rust decoder compiled to WebAssembly, and checked bit for bit.

Loading the compression microscope (about 1.5 MB)…

Compression microscope.Development regions at 25 cm, where all three files keep about as many streams; the loss shows on the new regions.

Part 02 of 06Drainage

At the same error, does the smaller file keep the streams?

Water flows downhill, so a terrain map decides where streams form, which land drains into which river, and where a flood would spread. Flood maps, erosion and soil models, and hydrological forecasts all start from these flow paths. On flat ground, a few centimeters can send water the other way.

To test this, the same routing runs on the original map and on every decoded one: small pits are filled, water flows to whichever of the eight neighbors is steepest downhill, and a stream starts where water from at least 5 hectares collects. Then the two stream maps are compared, allowing a shift of one cell: missing streams and new, false ones both lower the share of streams found again.

The streams check failed at every error

At the same largest error, the best standard codec kept a few more streams, in some regions at every error and in all seven at 50 cm and 1 m. The rule allowed the neural file to find at most 1 percentage point fewer streams; in the worst region it found 2 to 8 points fewer, depending on the error. So the answer is no.

Streams found again, 7 new regions

30%40%50%60%70%80%90%100%1 cm5 cm10 cm25 cm1 m2 mlargest error
30%40%50%60%70%80%90%100%1 cm5 cm25 cm1 m2 mlargest error
↑ streams found again
  • SPERR
  • Fixed predictor
  • Best standard codec
  • Neural predictor

Neural minus best standard codec, per region

-10-8-6-4-20245 cm10 cm25 cm50 cm1 mlargest errornew 4 (flat), 5 cm: +0.3 pointsnew 4 (flat), 10 cm: +1.7 pointsnew 4 (flat), 25 cm: -5.2 pointsnew 4 (flat), 50 cm: -5.2 pointsnew 4 (flat), 1 m: -6.6 pointsnew 6 (flat), 5 cm: -1.2 pointsnew 6 (flat), 10 cm: +1.4 pointsnew 6 (flat), 25 cm: +1.5 pointsnew 6 (flat), 50 cm: -8.4 pointsnew 6 (flat), 1 m: -7.2 pointsfails: more than 1 point lower↑ neural keeps more
-10-8-6-4-20245 cm10 cm25 cm50 cm1 mlargest errornew 4 (flat), 5 cm: +0.3 pointsnew 4 (flat), 10 cm: +1.7 pointsnew 4 (flat), 25 cm: -5.2 pointsnew 4 (flat), 50 cm: -5.2 pointsnew 4 (flat), 1 m: -6.6 pointsnew 6 (flat), 5 cm: -1.2 pointsnew 6 (flat), 10 cm: +1.4 pointsnew 6 (flat), 25 cm: +1.5 pointsnew 6 (flat), 50 cm: -8.4 pointsnew 6 (flat), 1 m: -7.2 pointsfails: more than 1 point lower↑ neural keeps more
↑ difference in streams found (points)
  • rough regions
  • moderate regions
  • flat regions
New regions: streams fade as the error grows. From 50 cm, the neural predictor keeps fewer than the best standard codec (the smallest file) in every region; SPERR keeps more, usually in a larger file.

Why would a smaller file lose streams, if every height stays within the limit?

The largest error is not the typical error

The limit only caps the largest error; most heights are much closer. At coarse errors this coder spreads its errors more evenly over the allowed room, so its typical error (the root-mean-square error) is larger: at 50 cm it is 20 to 32% higher than the best standard codec's.

Streams follow the typical error, not the largest one. The first version of the project already found that at a fixed largest error, the codec with the lowest typical error keeps the most streams. The same coder with the fixed predictor keeps about as many streams as with the network, so the cause is the coder, not the network.

Could the coder spend more precision where water runs?

Extra precision near streams did not help

The decoder can find likely streams on the coarse levels it already has, so no extra map is needed. On the development regions, no rule (tighter near streams or on gentle slopes) raised the share of streams found again by the required 5 points at the same file size. The answer is no.

fixedneuralfixedneuralfixedneuralfixedneural-8-4048change in streams found, same file size (points)half the limit near streams, fixed, Bergisches Land, 20 cm: +0.3 pointshalf the limit near streams, fixed, Bergisches Land, 35 cm: +0.5 pointshalf the limit near streams, fixed, Bergisches Land, 50 cm: +0.5 pointshalf the limit near streams, fixed, Bergisches Land, 75 cm: +1.1 pointshalf the limit near streams, fixed, Bergisches Land, 1 m: +0.3 pointshalf the limit near streams, fixed, Bergisches Land, 1.5 m: +0.9 pointshalf the limit near streams, fixed, Bergisches Land, 2 m: +0.0 pointshalf the limit near streams, fixed, Essen-Ruhr, 20 cm: +1.1 pointshalf the limit near streams, fixed, Essen-Ruhr, 35 cm: +2.1 pointshalf the limit near streams, fixed, Essen-Ruhr, 50 cm: +0.2 pointshalf the limit near streams, fixed, Essen-Ruhr, 75 cm: +1.3 pointshalf the limit near streams, fixed, Essen-Ruhr, 1 m: +1.0 pointshalf the limit near streams, fixed, Essen-Ruhr, 1.5 m: +1.7 pointshalf the limit near streams, fixed, Essen-Ruhr, 2 m: +0.3 pointshalf the limit near streams, fixed, Lower Rhine, 20 cm: +1.6 pointshalf the limit near streams, fixed, Lower Rhine, 35 cm: +1.6 pointshalf the limit near streams, fixed, Lower Rhine, 50 cm: +0.8 pointshalf the limit near streams, fixed, Lower Rhine, 75 cm: -1.0 pointshalf the limit near streams, fixed, Lower Rhine, 1 m: -1.8 pointshalf the limit near streams, fixed, Lower Rhine, 1.5 m: -2.6 pointshalf the limit near streams, fixed, Lower Rhine, 2 m: -1.0 pointshalf the limit near streams, fixed, Münsterland, 20 cm: +4.1 pointshalf the limit near streams, fixed, Münsterland, 35 cm: +7.2 pointshalf the limit near streams, fixed, Münsterland, 50 cm: +5.6 pointshalf the limit near streams, fixed, Münsterland, 75 cm: -0.5 pointshalf the limit near streams, fixed, Münsterland, 1 m: -1.9 pointshalf the limit near streams, fixed, Münsterland, 1.5 m: -2.7 pointshalf the limit near streams, fixed, Münsterland, 2 m: -0.9 pointshalf the limit near streams, fixed, Rothaar, 20 cm: +0.3 pointshalf the limit near streams, fixed, Rothaar, 35 cm: +0.0 pointshalf the limit near streams, fixed, Rothaar, 50 cm: +0.4 pointshalf the limit near streams, fixed, Rothaar, 75 cm: +0.6 pointshalf the limit near streams, fixed, Rothaar, 1 m: +0.9 pointshalf the limit near streams, fixed, Rothaar, 1.5 m: +1.3 pointshalf the limit near streams, fixed, Rothaar, 2 m: -0.0 pointshalf the limit near streams, fixed, Teutoburg Forest, 20 cm: +1.5 pointshalf the limit near streams, fixed, Teutoburg Forest, 35 cm: +1.8 pointshalf the limit near streams, fixed, Teutoburg Forest, 50 cm: +1.6 pointshalf the limit near streams, fixed, Teutoburg Forest, 75 cm: +1.6 pointshalf the limit near streams, fixed, Teutoburg Forest, 1 m: +1.8 pointshalf the limit near streams, fixed, Teutoburg Forest, 1.5 m: +0.3 pointshalf the limit near streams, fixed, Teutoburg Forest, 2 m: -1.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 20 cm: +0.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 35 cm: +0.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 50 cm: +0.9 pointsa quarter of the limit near streams, fixed, Bergisches Land, 75 cm: +1.0 pointsa quarter of the limit near streams, fixed, Bergisches Land, 1 m: +1.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 1.5 m: +1.0 pointsa quarter of the limit near streams, fixed, Bergisches Land, 2 m: +0.4 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 20 cm: +2.3 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 35 cm: +1.7 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 50 cm: +0.8 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 75 cm: +2.1 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 1 m: +1.5 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 1.5 m: +1.9 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 2 m: -0.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 20 cm: -0.8 pointsa quarter of the limit near streams, fixed, Lower Rhine, 35 cm: +2.6 pointsa quarter of the limit near streams, fixed, Lower Rhine, 50 cm: +1.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 75 cm: +0.6 pointsa quarter of the limit near streams, fixed, Lower Rhine, 1 m: -2.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 1.5 m: -5.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 2 m: -5.3 pointsa quarter of the limit near streams, fixed, Münsterland, 20 cm: +2.3 pointsa quarter of the limit near streams, fixed, Münsterland, 35 cm: +5.3 pointsa quarter of the limit near streams, fixed, Münsterland, 50 cm: +2.9 pointsa quarter of the limit near streams, fixed, Münsterland, 75 cm: -1.7 pointsa quarter of the limit near streams, fixed, Münsterland, 1 m: -3.0 pointsa quarter of the limit near streams, fixed, Münsterland, 1.5 m: -7.0 pointsa quarter of the limit near streams, fixed, Münsterland, 2 m: -4.6 pointsa quarter of the limit near streams, fixed, Rothaar, 20 cm: +0.3 pointsa quarter of the limit near streams, fixed, Rothaar, 35 cm: +0.0 pointsa quarter of the limit near streams, fixed, Rothaar, 50 cm: +0.4 pointsa quarter of the limit near streams, fixed, Rothaar, 75 cm: +0.8 pointsa quarter of the limit near streams, fixed, Rothaar, 1 m: +0.7 pointsa quarter of the limit near streams, fixed, Rothaar, 1.5 m: +0.8 pointsa quarter of the limit near streams, fixed, Rothaar, 2 m: +1.0 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 20 cm: +1.6 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 35 cm: +2.8 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 50 cm: +1.6 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 75 cm: +3.0 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 1 m: +3.2 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 1.5 m: +1.3 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 2 m: +0.1 pointsdown to half on gentle slopes, fixed, Bergisches Land, 20 cm: +0.1 pointsdown to half on gentle slopes, fixed, Bergisches Land, 35 cm: +0.1 pointsdown to half on gentle slopes, fixed, Bergisches Land, 50 cm: +0.5 pointsdown to half on gentle slopes, fixed, Bergisches Land, 75 cm: +0.2 pointsdown to half on gentle slopes, fixed, Bergisches Land, 1 m: +0.5 pointsdown to half on gentle slopes, fixed, Bergisches Land, 1.5 m: +0.3 pointsdown to half on gentle slopes, fixed, Bergisches Land, 2 m: +0.1 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 20 cm: +2.0 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 35 cm: +0.7 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 50 cm: -0.3 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 75 cm: +0.1 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 1 m: +0.2 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 1.5 m: -0.3 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 2 m: -0.5 pointsdown to half on gentle slopes, fixed, Lower Rhine, 20 cm: +1.1 pointsdown to half on gentle slopes, fixed, Lower Rhine, 35 cm: +1.2 pointsdown to half on gentle slopes, fixed, Lower Rhine, 50 cm: -0.8 pointsdown to half on gentle slopes, fixed, Lower Rhine, 75 cm: -3.0 pointsdown to half on gentle slopes, fixed, Lower Rhine, 1 m: -1.8 pointsdown to half on gentle slopes, fixed, Lower Rhine, 1.5 m: -3.3 pointsdown to half on gentle slopes, fixed, Lower Rhine, 2 m: -1.7 pointsdown to half on gentle slopes, fixed, Münsterland, 20 cm: +0.4 pointsdown to half on gentle slopes, fixed, Münsterland, 35 cm: +3.7 pointsdown to half on gentle slopes, fixed, Münsterland, 50 cm: +1.6 pointsdown to half on gentle slopes, fixed, Münsterland, 75 cm: -0.5 pointsdown to half on gentle slopes, fixed, Münsterland, 1 m: -1.8 pointsdown to half on gentle slopes, fixed, Münsterland, 1.5 m: -3.6 pointsdown to half on gentle slopes, fixed, Münsterland, 2 m: -2.0 pointsdown to half on gentle slopes, fixed, Rothaar, 20 cm: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 35 cm: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 50 cm: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 75 cm: +0.1 pointsdown to half on gentle slopes, fixed, Rothaar, 1 m: +0.3 pointsdown to half on gentle slopes, fixed, Rothaar, 1.5 m: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 2 m: -0.1 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 20 cm: +1.9 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 35 cm: -0.1 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 50 cm: +1.6 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 75 cm: +0.0 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 1 m: -0.2 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 1.5 m: -1.1 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 2 m: -2.1 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 20 cm: +0.1 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 35 cm: +0.6 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 50 cm: +0.3 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 75 cm: +0.3 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 1 m: +0.6 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 1.5 m: +0.5 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 2 m: +0.1 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 20 cm: +1.6 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 35 cm: +0.6 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 50 cm: +0.2 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 75 cm: -0.5 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 1 m: +0.6 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 1.5 m: -1.3 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 2 m: -2.2 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 35 cm: -0.8 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 50 cm: +0.9 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 75 cm: -2.9 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 1 m: -5.1 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 1.5 m: -7.6 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 2 m: -4.7 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 35 cm: -0.4 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 50 cm: -0.5 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 75 cm: -1.0 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 1 m: -2.1 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 1.5 m: -4.1 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 2 m: -4.8 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 20 cm: -0.0 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 35 cm: -0.0 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 50 cm: +0.1 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 75 cm: +0.2 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 1 m: +0.3 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 1.5 m: +0.1 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 2 m: -0.2 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 20 cm: +2.6 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 35 cm: +2.0 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 50 cm: +1.2 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 75 cm: -0.8 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 1 m: -0.3 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 1.5 m: -3.2 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 2 m: -5.9 pointshalf the limit near streams, neural, Bergisches Land, 20 cm: +0.3 pointshalf the limit near streams, neural, Bergisches Land, 35 cm: +0.5 pointshalf the limit near streams, neural, Bergisches Land, 50 cm: +0.5 pointshalf the limit near streams, neural, Bergisches Land, 75 cm: +0.5 pointshalf the limit near streams, neural, Bergisches Land, 1 m: -0.1 pointshalf the limit near streams, neural, Bergisches Land, 1.5 m: +0.2 pointshalf the limit near streams, neural, Bergisches Land, 2 m: +0.2 pointshalf the limit near streams, neural, Essen-Ruhr, 20 cm: -0.1 pointshalf the limit near streams, neural, Essen-Ruhr, 35 cm: +0.8 pointshalf the limit near streams, neural, Essen-Ruhr, 50 cm: +1.3 pointshalf the limit near streams, neural, Essen-Ruhr, 75 cm: +1.3 pointshalf the limit near streams, neural, Essen-Ruhr, 1 m: +1.2 pointshalf the limit near streams, neural, Essen-Ruhr, 1.5 m: +1.6 pointshalf the limit near streams, neural, Essen-Ruhr, 2 m: +0.7 pointshalf the limit near streams, neural, Lower Rhine, 20 cm: +4.9 pointshalf the limit near streams, neural, Lower Rhine, 35 cm: +4.2 pointshalf the limit near streams, neural, Lower Rhine, 50 cm: +2.1 pointshalf the limit near streams, neural, Lower Rhine, 75 cm: -1.0 pointshalf the limit near streams, neural, Lower Rhine, 1 m: +0.3 pointshalf the limit near streams, neural, Lower Rhine, 1.5 m: +0.1 pointshalf the limit near streams, neural, Lower Rhine, 2 m: -1.1 pointshalf the limit near streams, neural, Münsterland, 20 cm: +3.6 pointshalf the limit near streams, neural, Münsterland, 35 cm: +3.9 pointshalf the limit near streams, neural, Münsterland, 50 cm: -2.7 pointshalf the limit near streams, neural, Münsterland, 75 cm: -0.6 pointshalf the limit near streams, neural, Münsterland, 1 m: -3.5 pointshalf the limit near streams, neural, Münsterland, 1.5 m: -0.8 pointshalf the limit near streams, neural, Münsterland, 2 m: -1.3 pointshalf the limit near streams, neural, Rothaar, 20 cm: -0.0 pointshalf the limit near streams, neural, Rothaar, 35 cm: +0.4 pointshalf the limit near streams, neural, Rothaar, 50 cm: +0.5 pointshalf the limit near streams, neural, Rothaar, 75 cm: +0.8 pointshalf the limit near streams, neural, Rothaar, 1 m: +1.0 pointshalf the limit near streams, neural, Rothaar, 1.5 m: +0.3 pointshalf the limit near streams, neural, Rothaar, 2 m: -0.4 pointshalf the limit near streams, neural, Teutoburg Forest, 20 cm: +0.9 pointshalf the limit near streams, neural, Teutoburg Forest, 35 cm: +1.6 pointshalf the limit near streams, neural, Teutoburg Forest, 50 cm: +1.6 pointshalf the limit near streams, neural, Teutoburg Forest, 75 cm: +1.6 pointshalf the limit near streams, neural, Teutoburg Forest, 1 m: +2.8 pointshalf the limit near streams, neural, Teutoburg Forest, 1.5 m: -1.0 pointshalf the limit near streams, neural, Teutoburg Forest, 2 m: -0.4 pointsa quarter of the limit near streams, neural, Bergisches Land, 20 cm: +0.3 pointsa quarter of the limit near streams, neural, Bergisches Land, 35 cm: +1.0 pointsa quarter of the limit near streams, neural, Bergisches Land, 50 cm: +1.1 pointsa quarter of the limit near streams, neural, Bergisches Land, 75 cm: +1.1 pointsa quarter of the limit near streams, neural, Bergisches Land, 1 m: +1.1 pointsa quarter of the limit near streams, neural, Bergisches Land, 1.5 m: +1.0 pointsa quarter of the limit near streams, neural, Bergisches Land, 2 m: +0.8 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 20 cm: +0.7 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 35 cm: +0.8 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 50 cm: +1.5 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 75 cm: +1.6 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 1 m: +1.5 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 1.5 m: -0.0 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 2 m: +0.4 pointsa quarter of the limit near streams, neural, Lower Rhine, 20 cm: -2.6 pointsa quarter of the limit near streams, neural, Lower Rhine, 35 cm: +0.7 pointsa quarter of the limit near streams, neural, Lower Rhine, 50 cm: +3.1 pointsa quarter of the limit near streams, neural, Lower Rhine, 75 cm: +0.2 pointsa quarter of the limit near streams, neural, Lower Rhine, 1 m: -0.3 pointsa quarter of the limit near streams, neural, Lower Rhine, 1.5 m: -1.9 pointsa quarter of the limit near streams, neural, Lower Rhine, 2 m: -6.1 pointsa quarter of the limit near streams, neural, Münsterland, 20 cm: +3.7 pointsa quarter of the limit near streams, neural, Münsterland, 35 cm: +0.3 pointsa quarter of the limit near streams, neural, Münsterland, 50 cm: +1.0 pointsa quarter of the limit near streams, neural, Münsterland, 75 cm: -2.6 pointsa quarter of the limit near streams, neural, Münsterland, 1 m: -6.0 pointsa quarter of the limit near streams, neural, Münsterland, 1.5 m: -5.0 pointsa quarter of the limit near streams, neural, Münsterland, 2 m: -7.2 pointsa quarter of the limit near streams, neural, Rothaar, 20 cm: +0.5 pointsa quarter of the limit near streams, neural, Rothaar, 35 cm: +0.6 pointsa quarter of the limit near streams, neural, Rothaar, 50 cm: +0.7 pointsa quarter of the limit near streams, neural, Rothaar, 75 cm: +0.7 pointsa quarter of the limit near streams, neural, Rothaar, 1 m: +1.0 pointsa quarter of the limit near streams, neural, Rothaar, 1.5 m: +0.6 pointsa quarter of the limit near streams, neural, Rothaar, 2 m: +1.0 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 20 cm: +1.7 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 35 cm: +1.0 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 50 cm: +3.1 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 75 cm: +2.5 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 1 m: +2.3 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 1.5 m: +1.3 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 2 m: -0.9 pointsdown to half on gentle slopes, neural, Bergisches Land, 20 cm: +0.1 pointsdown to half on gentle slopes, neural, Bergisches Land, 35 cm: +0.2 pointsdown to half on gentle slopes, neural, Bergisches Land, 50 cm: -0.0 pointsdown to half on gentle slopes, neural, Bergisches Land, 75 cm: +0.3 pointsdown to half on gentle slopes, neural, Bergisches Land, 1 m: +0.1 pointsdown to half on gentle slopes, neural, Bergisches Land, 1.5 m: -0.1 pointsdown to half on gentle slopes, neural, Bergisches Land, 2 m: +0.0 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 20 cm: +0.3 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 35 cm: +0.2 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 50 cm: +0.6 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 75 cm: +0.8 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 1 m: +0.9 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 1.5 m: +1.2 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 2 m: +0.7 pointsdown to half on gentle slopes, neural, Lower Rhine, 20 cm: +2.3 pointsdown to half on gentle slopes, neural, Lower Rhine, 35 cm: +3.7 pointsdown to half on gentle slopes, neural, Lower Rhine, 50 cm: +2.4 pointsdown to half on gentle slopes, neural, Lower Rhine, 75 cm: -1.3 pointsdown to half on gentle slopes, neural, Lower Rhine, 1 m: +1.7 pointsdown to half on gentle slopes, neural, Lower Rhine, 1.5 m: +0.4 pointsdown to half on gentle slopes, neural, Lower Rhine, 2 m: -0.6 pointsdown to half on gentle slopes, neural, Münsterland, 20 cm: -0.1 pointsdown to half on gentle slopes, neural, Münsterland, 35 cm: +1.3 pointsdown to half on gentle slopes, neural, Münsterland, 50 cm: -0.4 pointsdown to half on gentle slopes, neural, Münsterland, 75 cm: +0.2 pointsdown to half on gentle slopes, neural, Münsterland, 1 m: -0.7 pointsdown to half on gentle slopes, neural, Münsterland, 1.5 m: -2.5 pointsdown to half on gentle slopes, neural, Münsterland, 2 m: -1.4 pointsdown to half on gentle slopes, neural, Rothaar, 20 cm: -0.1 pointsdown to half on gentle slopes, neural, Rothaar, 35 cm: +0.1 pointsdown to half on gentle slopes, neural, Rothaar, 50 cm: -0.0 pointsdown to half on gentle slopes, neural, Rothaar, 75 cm: +0.0 pointsdown to half on gentle slopes, neural, Rothaar, 1 m: -0.0 pointsdown to half on gentle slopes, neural, Rothaar, 1.5 m: -0.1 pointsdown to half on gentle slopes, neural, Rothaar, 2 m: +0.1 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 20 cm: +1.9 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 35 cm: +2.2 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 50 cm: +2.4 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 75 cm: +1.3 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 1 m: +0.9 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 1.5 m: +1.2 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 2 m: +1.7 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 20 cm: +0.5 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 35 cm: +0.4 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 50 cm: +0.2 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 75 cm: +0.4 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 1 m: +0.2 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 1.5 m: +0.1 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 2 m: -0.2 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 20 cm: +2.0 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 35 cm: +0.7 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 50 cm: +1.5 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 75 cm: +0.8 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 1 m: +0.1 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 1.5 m: +0.7 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 2 m: -0.8 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 35 cm: +2.6 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 50 cm: +4.0 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 75 cm: +0.6 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 1 m: -1.0 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 1.5 m: -4.3 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 2 m: -4.3 pointsdown to a quarter on gentle slopes, neural, Münsterland, 35 cm: -1.7 pointsdown to a quarter on gentle slopes, neural, Münsterland, 50 cm: -3.1 pointsdown to a quarter on gentle slopes, neural, Münsterland, 75 cm: -5.6 pointsdown to a quarter on gentle slopes, neural, Münsterland, 1 m: -6.2 pointsdown to a quarter on gentle slopes, neural, Münsterland, 1.5 m: -6.5 pointsdown to a quarter on gentle slopes, neural, Münsterland, 2 m: -6.8 pointsdown to a quarter on gentle slopes, neural, Rothaar, 20 cm: -0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 35 cm: +0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 50 cm: +0.0 pointsdown to a quarter on gentle slopes, neural, Rothaar, 75 cm: -0.0 pointsdown to a quarter on gentle slopes, neural, Rothaar, 1 m: -0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 1.5 m: -0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 2 m: +0.1 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 20 cm: +1.9 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 35 cm: +1.9 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 50 cm: +2.2 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 75 cm: +2.2 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 1 m: -0.1 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 1.5 m: -1.7 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 2 m: -2.0 pointsneeded: +5 points →+0.7+0.6+0.4+0.2−0.2+0.5−0.9−0.5half the limit near streamsa quarter of the limit near streamsdown to half on gentle slopesdown to a quarter on gentle slopes
fixedneuralfixedneuralfixedneuralfixedneural-8-4048change, same file size (points)half the limit near streams, fixed, Bergisches Land, 20 cm: +0.3 pointshalf the limit near streams, fixed, Bergisches Land, 35 cm: +0.5 pointshalf the limit near streams, fixed, Bergisches Land, 50 cm: +0.5 pointshalf the limit near streams, fixed, Bergisches Land, 75 cm: +1.1 pointshalf the limit near streams, fixed, Bergisches Land, 1 m: +0.3 pointshalf the limit near streams, fixed, Bergisches Land, 1.5 m: +0.9 pointshalf the limit near streams, fixed, Bergisches Land, 2 m: +0.0 pointshalf the limit near streams, fixed, Essen-Ruhr, 20 cm: +1.1 pointshalf the limit near streams, fixed, Essen-Ruhr, 35 cm: +2.1 pointshalf the limit near streams, fixed, Essen-Ruhr, 50 cm: +0.2 pointshalf the limit near streams, fixed, Essen-Ruhr, 75 cm: +1.3 pointshalf the limit near streams, fixed, Essen-Ruhr, 1 m: +1.0 pointshalf the limit near streams, fixed, Essen-Ruhr, 1.5 m: +1.7 pointshalf the limit near streams, fixed, Essen-Ruhr, 2 m: +0.3 pointshalf the limit near streams, fixed, Lower Rhine, 20 cm: +1.6 pointshalf the limit near streams, fixed, Lower Rhine, 35 cm: +1.6 pointshalf the limit near streams, fixed, Lower Rhine, 50 cm: +0.8 pointshalf the limit near streams, fixed, Lower Rhine, 75 cm: -1.0 pointshalf the limit near streams, fixed, Lower Rhine, 1 m: -1.8 pointshalf the limit near streams, fixed, Lower Rhine, 1.5 m: -2.6 pointshalf the limit near streams, fixed, Lower Rhine, 2 m: -1.0 pointshalf the limit near streams, fixed, Münsterland, 20 cm: +4.1 pointshalf the limit near streams, fixed, Münsterland, 35 cm: +7.2 pointshalf the limit near streams, fixed, Münsterland, 50 cm: +5.6 pointshalf the limit near streams, fixed, Münsterland, 75 cm: -0.5 pointshalf the limit near streams, fixed, Münsterland, 1 m: -1.9 pointshalf the limit near streams, fixed, Münsterland, 1.5 m: -2.7 pointshalf the limit near streams, fixed, Münsterland, 2 m: -0.9 pointshalf the limit near streams, fixed, Rothaar, 20 cm: +0.3 pointshalf the limit near streams, fixed, Rothaar, 35 cm: +0.0 pointshalf the limit near streams, fixed, Rothaar, 50 cm: +0.4 pointshalf the limit near streams, fixed, Rothaar, 75 cm: +0.6 pointshalf the limit near streams, fixed, Rothaar, 1 m: +0.9 pointshalf the limit near streams, fixed, Rothaar, 1.5 m: +1.3 pointshalf the limit near streams, fixed, Rothaar, 2 m: -0.0 pointshalf the limit near streams, fixed, Teutoburg Forest, 20 cm: +1.5 pointshalf the limit near streams, fixed, Teutoburg Forest, 35 cm: +1.8 pointshalf the limit near streams, fixed, Teutoburg Forest, 50 cm: +1.6 pointshalf the limit near streams, fixed, Teutoburg Forest, 75 cm: +1.6 pointshalf the limit near streams, fixed, Teutoburg Forest, 1 m: +1.8 pointshalf the limit near streams, fixed, Teutoburg Forest, 1.5 m: +0.3 pointshalf the limit near streams, fixed, Teutoburg Forest, 2 m: -1.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 20 cm: +0.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 35 cm: +0.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 50 cm: +0.9 pointsa quarter of the limit near streams, fixed, Bergisches Land, 75 cm: +1.0 pointsa quarter of the limit near streams, fixed, Bergisches Land, 1 m: +1.5 pointsa quarter of the limit near streams, fixed, Bergisches Land, 1.5 m: +1.0 pointsa quarter of the limit near streams, fixed, Bergisches Land, 2 m: +0.4 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 20 cm: +2.3 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 35 cm: +1.7 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 50 cm: +0.8 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 75 cm: +2.1 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 1 m: +1.5 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 1.5 m: +1.9 pointsa quarter of the limit near streams, fixed, Essen-Ruhr, 2 m: -0.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 20 cm: -0.8 pointsa quarter of the limit near streams, fixed, Lower Rhine, 35 cm: +2.6 pointsa quarter of the limit near streams, fixed, Lower Rhine, 50 cm: +1.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 75 cm: +0.6 pointsa quarter of the limit near streams, fixed, Lower Rhine, 1 m: -2.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 1.5 m: -5.2 pointsa quarter of the limit near streams, fixed, Lower Rhine, 2 m: -5.3 pointsa quarter of the limit near streams, fixed, Münsterland, 20 cm: +2.3 pointsa quarter of the limit near streams, fixed, Münsterland, 35 cm: +5.3 pointsa quarter of the limit near streams, fixed, Münsterland, 50 cm: +2.9 pointsa quarter of the limit near streams, fixed, Münsterland, 75 cm: -1.7 pointsa quarter of the limit near streams, fixed, Münsterland, 1 m: -3.0 pointsa quarter of the limit near streams, fixed, Münsterland, 1.5 m: -7.0 pointsa quarter of the limit near streams, fixed, Münsterland, 2 m: -4.6 pointsa quarter of the limit near streams, fixed, Rothaar, 20 cm: +0.3 pointsa quarter of the limit near streams, fixed, Rothaar, 35 cm: +0.0 pointsa quarter of the limit near streams, fixed, Rothaar, 50 cm: +0.4 pointsa quarter of the limit near streams, fixed, Rothaar, 75 cm: +0.8 pointsa quarter of the limit near streams, fixed, Rothaar, 1 m: +0.7 pointsa quarter of the limit near streams, fixed, Rothaar, 1.5 m: +0.8 pointsa quarter of the limit near streams, fixed, Rothaar, 2 m: +1.0 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 20 cm: +1.6 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 35 cm: +2.8 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 50 cm: +1.6 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 75 cm: +3.0 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 1 m: +3.2 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 1.5 m: +1.3 pointsa quarter of the limit near streams, fixed, Teutoburg Forest, 2 m: +0.1 pointsdown to half on gentle slopes, fixed, Bergisches Land, 20 cm: +0.1 pointsdown to half on gentle slopes, fixed, Bergisches Land, 35 cm: +0.1 pointsdown to half on gentle slopes, fixed, Bergisches Land, 50 cm: +0.5 pointsdown to half on gentle slopes, fixed, Bergisches Land, 75 cm: +0.2 pointsdown to half on gentle slopes, fixed, Bergisches Land, 1 m: +0.5 pointsdown to half on gentle slopes, fixed, Bergisches Land, 1.5 m: +0.3 pointsdown to half on gentle slopes, fixed, Bergisches Land, 2 m: +0.1 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 20 cm: +2.0 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 35 cm: +0.7 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 50 cm: -0.3 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 75 cm: +0.1 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 1 m: +0.2 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 1.5 m: -0.3 pointsdown to half on gentle slopes, fixed, Essen-Ruhr, 2 m: -0.5 pointsdown to half on gentle slopes, fixed, Lower Rhine, 20 cm: +1.1 pointsdown to half on gentle slopes, fixed, Lower Rhine, 35 cm: +1.2 pointsdown to half on gentle slopes, fixed, Lower Rhine, 50 cm: -0.8 pointsdown to half on gentle slopes, fixed, Lower Rhine, 75 cm: -3.0 pointsdown to half on gentle slopes, fixed, Lower Rhine, 1 m: -1.8 pointsdown to half on gentle slopes, fixed, Lower Rhine, 1.5 m: -3.3 pointsdown to half on gentle slopes, fixed, Lower Rhine, 2 m: -1.7 pointsdown to half on gentle slopes, fixed, Münsterland, 20 cm: +0.4 pointsdown to half on gentle slopes, fixed, Münsterland, 35 cm: +3.7 pointsdown to half on gentle slopes, fixed, Münsterland, 50 cm: +1.6 pointsdown to half on gentle slopes, fixed, Münsterland, 75 cm: -0.5 pointsdown to half on gentle slopes, fixed, Münsterland, 1 m: -1.8 pointsdown to half on gentle slopes, fixed, Münsterland, 1.5 m: -3.6 pointsdown to half on gentle slopes, fixed, Münsterland, 2 m: -2.0 pointsdown to half on gentle slopes, fixed, Rothaar, 20 cm: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 35 cm: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 50 cm: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 75 cm: +0.1 pointsdown to half on gentle slopes, fixed, Rothaar, 1 m: +0.3 pointsdown to half on gentle slopes, fixed, Rothaar, 1.5 m: -0.0 pointsdown to half on gentle slopes, fixed, Rothaar, 2 m: -0.1 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 20 cm: +1.9 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 35 cm: -0.1 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 50 cm: +1.6 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 75 cm: +0.0 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 1 m: -0.2 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 1.5 m: -1.1 pointsdown to half on gentle slopes, fixed, Teutoburg Forest, 2 m: -2.1 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 20 cm: +0.1 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 35 cm: +0.6 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 50 cm: +0.3 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 75 cm: +0.3 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 1 m: +0.6 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 1.5 m: +0.5 pointsdown to a quarter on gentle slopes, fixed, Bergisches Land, 2 m: +0.1 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 20 cm: +1.6 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 35 cm: +0.6 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 50 cm: +0.2 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 75 cm: -0.5 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 1 m: +0.6 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 1.5 m: -1.3 pointsdown to a quarter on gentle slopes, fixed, Essen-Ruhr, 2 m: -2.2 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 35 cm: -0.8 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 50 cm: +0.9 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 75 cm: -2.9 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 1 m: -5.1 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 1.5 m: -7.6 pointsdown to a quarter on gentle slopes, fixed, Lower Rhine, 2 m: -4.7 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 35 cm: -0.4 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 50 cm: -0.5 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 75 cm: -1.0 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 1 m: -2.1 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 1.5 m: -4.1 pointsdown to a quarter on gentle slopes, fixed, Münsterland, 2 m: -4.8 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 20 cm: -0.0 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 35 cm: -0.0 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 50 cm: +0.1 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 75 cm: +0.2 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 1 m: +0.3 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 1.5 m: +0.1 pointsdown to a quarter on gentle slopes, fixed, Rothaar, 2 m: -0.2 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 20 cm: +2.6 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 35 cm: +2.0 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 50 cm: +1.2 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 75 cm: -0.8 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 1 m: -0.3 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 1.5 m: -3.2 pointsdown to a quarter on gentle slopes, fixed, Teutoburg Forest, 2 m: -5.9 pointshalf the limit near streams, neural, Bergisches Land, 20 cm: +0.3 pointshalf the limit near streams, neural, Bergisches Land, 35 cm: +0.5 pointshalf the limit near streams, neural, Bergisches Land, 50 cm: +0.5 pointshalf the limit near streams, neural, Bergisches Land, 75 cm: +0.5 pointshalf the limit near streams, neural, Bergisches Land, 1 m: -0.1 pointshalf the limit near streams, neural, Bergisches Land, 1.5 m: +0.2 pointshalf the limit near streams, neural, Bergisches Land, 2 m: +0.2 pointshalf the limit near streams, neural, Essen-Ruhr, 20 cm: -0.1 pointshalf the limit near streams, neural, Essen-Ruhr, 35 cm: +0.8 pointshalf the limit near streams, neural, Essen-Ruhr, 50 cm: +1.3 pointshalf the limit near streams, neural, Essen-Ruhr, 75 cm: +1.3 pointshalf the limit near streams, neural, Essen-Ruhr, 1 m: +1.2 pointshalf the limit near streams, neural, Essen-Ruhr, 1.5 m: +1.6 pointshalf the limit near streams, neural, Essen-Ruhr, 2 m: +0.7 pointshalf the limit near streams, neural, Lower Rhine, 20 cm: +4.9 pointshalf the limit near streams, neural, Lower Rhine, 35 cm: +4.2 pointshalf the limit near streams, neural, Lower Rhine, 50 cm: +2.1 pointshalf the limit near streams, neural, Lower Rhine, 75 cm: -1.0 pointshalf the limit near streams, neural, Lower Rhine, 1 m: +0.3 pointshalf the limit near streams, neural, Lower Rhine, 1.5 m: +0.1 pointshalf the limit near streams, neural, Lower Rhine, 2 m: -1.1 pointshalf the limit near streams, neural, Münsterland, 20 cm: +3.6 pointshalf the limit near streams, neural, Münsterland, 35 cm: +3.9 pointshalf the limit near streams, neural, Münsterland, 50 cm: -2.7 pointshalf the limit near streams, neural, Münsterland, 75 cm: -0.6 pointshalf the limit near streams, neural, Münsterland, 1 m: -3.5 pointshalf the limit near streams, neural, Münsterland, 1.5 m: -0.8 pointshalf the limit near streams, neural, Münsterland, 2 m: -1.3 pointshalf the limit near streams, neural, Rothaar, 20 cm: -0.0 pointshalf the limit near streams, neural, Rothaar, 35 cm: +0.4 pointshalf the limit near streams, neural, Rothaar, 50 cm: +0.5 pointshalf the limit near streams, neural, Rothaar, 75 cm: +0.8 pointshalf the limit near streams, neural, Rothaar, 1 m: +1.0 pointshalf the limit near streams, neural, Rothaar, 1.5 m: +0.3 pointshalf the limit near streams, neural, Rothaar, 2 m: -0.4 pointshalf the limit near streams, neural, Teutoburg Forest, 20 cm: +0.9 pointshalf the limit near streams, neural, Teutoburg Forest, 35 cm: +1.6 pointshalf the limit near streams, neural, Teutoburg Forest, 50 cm: +1.6 pointshalf the limit near streams, neural, Teutoburg Forest, 75 cm: +1.6 pointshalf the limit near streams, neural, Teutoburg Forest, 1 m: +2.8 pointshalf the limit near streams, neural, Teutoburg Forest, 1.5 m: -1.0 pointshalf the limit near streams, neural, Teutoburg Forest, 2 m: -0.4 pointsa quarter of the limit near streams, neural, Bergisches Land, 20 cm: +0.3 pointsa quarter of the limit near streams, neural, Bergisches Land, 35 cm: +1.0 pointsa quarter of the limit near streams, neural, Bergisches Land, 50 cm: +1.1 pointsa quarter of the limit near streams, neural, Bergisches Land, 75 cm: +1.1 pointsa quarter of the limit near streams, neural, Bergisches Land, 1 m: +1.1 pointsa quarter of the limit near streams, neural, Bergisches Land, 1.5 m: +1.0 pointsa quarter of the limit near streams, neural, Bergisches Land, 2 m: +0.8 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 20 cm: +0.7 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 35 cm: +0.8 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 50 cm: +1.5 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 75 cm: +1.6 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 1 m: +1.5 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 1.5 m: -0.0 pointsa quarter of the limit near streams, neural, Essen-Ruhr, 2 m: +0.4 pointsa quarter of the limit near streams, neural, Lower Rhine, 20 cm: -2.6 pointsa quarter of the limit near streams, neural, Lower Rhine, 35 cm: +0.7 pointsa quarter of the limit near streams, neural, Lower Rhine, 50 cm: +3.1 pointsa quarter of the limit near streams, neural, Lower Rhine, 75 cm: +0.2 pointsa quarter of the limit near streams, neural, Lower Rhine, 1 m: -0.3 pointsa quarter of the limit near streams, neural, Lower Rhine, 1.5 m: -1.9 pointsa quarter of the limit near streams, neural, Lower Rhine, 2 m: -6.1 pointsa quarter of the limit near streams, neural, Münsterland, 20 cm: +3.7 pointsa quarter of the limit near streams, neural, Münsterland, 35 cm: +0.3 pointsa quarter of the limit near streams, neural, Münsterland, 50 cm: +1.0 pointsa quarter of the limit near streams, neural, Münsterland, 75 cm: -2.6 pointsa quarter of the limit near streams, neural, Münsterland, 1 m: -6.0 pointsa quarter of the limit near streams, neural, Münsterland, 1.5 m: -5.0 pointsa quarter of the limit near streams, neural, Münsterland, 2 m: -7.2 pointsa quarter of the limit near streams, neural, Rothaar, 20 cm: +0.5 pointsa quarter of the limit near streams, neural, Rothaar, 35 cm: +0.6 pointsa quarter of the limit near streams, neural, Rothaar, 50 cm: +0.7 pointsa quarter of the limit near streams, neural, Rothaar, 75 cm: +0.7 pointsa quarter of the limit near streams, neural, Rothaar, 1 m: +1.0 pointsa quarter of the limit near streams, neural, Rothaar, 1.5 m: +0.6 pointsa quarter of the limit near streams, neural, Rothaar, 2 m: +1.0 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 20 cm: +1.7 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 35 cm: +1.0 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 50 cm: +3.1 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 75 cm: +2.5 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 1 m: +2.3 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 1.5 m: +1.3 pointsa quarter of the limit near streams, neural, Teutoburg Forest, 2 m: -0.9 pointsdown to half on gentle slopes, neural, Bergisches Land, 20 cm: +0.1 pointsdown to half on gentle slopes, neural, Bergisches Land, 35 cm: +0.2 pointsdown to half on gentle slopes, neural, Bergisches Land, 50 cm: -0.0 pointsdown to half on gentle slopes, neural, Bergisches Land, 75 cm: +0.3 pointsdown to half on gentle slopes, neural, Bergisches Land, 1 m: +0.1 pointsdown to half on gentle slopes, neural, Bergisches Land, 1.5 m: -0.1 pointsdown to half on gentle slopes, neural, Bergisches Land, 2 m: +0.0 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 20 cm: +0.3 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 35 cm: +0.2 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 50 cm: +0.6 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 75 cm: +0.8 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 1 m: +0.9 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 1.5 m: +1.2 pointsdown to half on gentle slopes, neural, Essen-Ruhr, 2 m: +0.7 pointsdown to half on gentle slopes, neural, Lower Rhine, 20 cm: +2.3 pointsdown to half on gentle slopes, neural, Lower Rhine, 35 cm: +3.7 pointsdown to half on gentle slopes, neural, Lower Rhine, 50 cm: +2.4 pointsdown to half on gentle slopes, neural, Lower Rhine, 75 cm: -1.3 pointsdown to half on gentle slopes, neural, Lower Rhine, 1 m: +1.7 pointsdown to half on gentle slopes, neural, Lower Rhine, 1.5 m: +0.4 pointsdown to half on gentle slopes, neural, Lower Rhine, 2 m: -0.6 pointsdown to half on gentle slopes, neural, Münsterland, 20 cm: -0.1 pointsdown to half on gentle slopes, neural, Münsterland, 35 cm: +1.3 pointsdown to half on gentle slopes, neural, Münsterland, 50 cm: -0.4 pointsdown to half on gentle slopes, neural, Münsterland, 75 cm: +0.2 pointsdown to half on gentle slopes, neural, Münsterland, 1 m: -0.7 pointsdown to half on gentle slopes, neural, Münsterland, 1.5 m: -2.5 pointsdown to half on gentle slopes, neural, Münsterland, 2 m: -1.4 pointsdown to half on gentle slopes, neural, Rothaar, 20 cm: -0.1 pointsdown to half on gentle slopes, neural, Rothaar, 35 cm: +0.1 pointsdown to half on gentle slopes, neural, Rothaar, 50 cm: -0.0 pointsdown to half on gentle slopes, neural, Rothaar, 75 cm: +0.0 pointsdown to half on gentle slopes, neural, Rothaar, 1 m: -0.0 pointsdown to half on gentle slopes, neural, Rothaar, 1.5 m: -0.1 pointsdown to half on gentle slopes, neural, Rothaar, 2 m: +0.1 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 20 cm: +1.9 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 35 cm: +2.2 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 50 cm: +2.4 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 75 cm: +1.3 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 1 m: +0.9 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 1.5 m: +1.2 pointsdown to half on gentle slopes, neural, Teutoburg Forest, 2 m: +1.7 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 20 cm: +0.5 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 35 cm: +0.4 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 50 cm: +0.2 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 75 cm: +0.4 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 1 m: +0.2 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 1.5 m: +0.1 pointsdown to a quarter on gentle slopes, neural, Bergisches Land, 2 m: -0.2 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 20 cm: +2.0 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 35 cm: +0.7 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 50 cm: +1.5 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 75 cm: +0.8 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 1 m: +0.1 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 1.5 m: +0.7 pointsdown to a quarter on gentle slopes, neural, Essen-Ruhr, 2 m: -0.8 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 35 cm: +2.6 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 50 cm: +4.0 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 75 cm: +0.6 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 1 m: -1.0 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 1.5 m: -4.3 pointsdown to a quarter on gentle slopes, neural, Lower Rhine, 2 m: -4.3 pointsdown to a quarter on gentle slopes, neural, Münsterland, 35 cm: -1.7 pointsdown to a quarter on gentle slopes, neural, Münsterland, 50 cm: -3.1 pointsdown to a quarter on gentle slopes, neural, Münsterland, 75 cm: -5.6 pointsdown to a quarter on gentle slopes, neural, Münsterland, 1 m: -6.2 pointsdown to a quarter on gentle slopes, neural, Münsterland, 1.5 m: -6.5 pointsdown to a quarter on gentle slopes, neural, Münsterland, 2 m: -6.8 pointsdown to a quarter on gentle slopes, neural, Rothaar, 20 cm: -0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 35 cm: +0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 50 cm: +0.0 pointsdown to a quarter on gentle slopes, neural, Rothaar, 75 cm: -0.0 pointsdown to a quarter on gentle slopes, neural, Rothaar, 1 m: -0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 1.5 m: -0.1 pointsdown to a quarter on gentle slopes, neural, Rothaar, 2 m: +0.1 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 20 cm: +1.9 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 35 cm: +1.9 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 50 cm: +2.2 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 75 cm: +2.2 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 1 m: -0.1 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 1.5 m: -1.7 pointsdown to a quarter on gentle slopes, neural, Teutoburg Forest, 2 m: -2.0 pointsneeded: +5 points →+0.7+0.6+0.4+0.2−0.2+0.5−0.9−0.5half the limit near streamsa quarter of the limit near streamsdown to half on gentle slopesdown to a quarter on gentle slopes
  • Fixed predictor, one region and error
  • Neural predictor, one region and error
  • average
Development regions: a tighter limit near streams or on gentle slopes did not keep more streams at the same file size.

To be continued

This part is actively worked on. Next: a coder that keeps the typical error low at the same limit, tested on the development regions and then on a fresh set of new regions, since the seven are used up.

Part 03 of 06Geology

Rock shapes the land. Does a geological map help store the terrain?

Essen-Ruhr, 10 cmEssen-Ruhr, 50 cmMünsterland, 10 cmMünsterland, 50 cm-8%-6%-4%-2%0%2%bytes saved vs no mapEssen-Ruhr, 10 cm, seed 0, shifted: -0.11% savedEssen-Ruhr, 10 cm, seed 1, shifted: -0.10% savedEssen-Ruhr, 50 cm, seed 0, shifted: 0.07% savedEssen-Ruhr, 50 cm, seed 1, shifted: 0.18% savedMünsterland, 10 cm, seed 0, shifted: -0.59% savedMünsterland, 10 cm, seed 1, shifted: -0.09% savedMünsterland, 50 cm, seed 0, shifted: -1.69% savedMünsterland, 50 cm, seed 1, shifted: -2.07% savedEssen-Ruhr, 10 cm, seed 0, constant: 0.06% savedEssen-Ruhr, 10 cm, seed 1, constant: -0.20% savedEssen-Ruhr, 50 cm, seed 0, constant: 0.36% savedEssen-Ruhr, 50 cm, seed 1, constant: 0.14% savedMünsterland, 10 cm, seed 0, constant: 0.20% savedMünsterland, 10 cm, seed 1, constant: 0.17% savedMünsterland, 50 cm, seed 0, constant: -0.59% savedMünsterland, 50 cm, seed 1, constant: -1.20% savedEssen-Ruhr, 10 cm, seed 0, real with the map stored: -0.64% savedEssen-Ruhr, 10 cm, seed 1, real with the map stored: -0.54% savedEssen-Ruhr, 50 cm, seed 0, real with the map stored: -2.73% savedEssen-Ruhr, 50 cm, seed 1, real with the map stored: -2.85% savedMünsterland, 10 cm, seed 0, real with the map stored: -0.78% savedMünsterland, 10 cm, seed 1, real with the map stored: -0.44% savedMünsterland, 50 cm, seed 0, real with the map stored: -5.60% savedMünsterland, 50 cm, seed 1, real with the map stored: -7.13% savedEssen-Ruhr, 10 cm, seed 0, real: 0.80% savedEssen-Ruhr, 10 cm, seed 1, real: 0.89% savedEssen-Ruhr, 50 cm, seed 0, real: 1.53% savedEssen-Ruhr, 50 cm, seed 1, real: 1.39% savedMünsterland, 10 cm, seed 0, real: 0.52% savedMünsterland, 10 cm, seed 1, real: 0.86% savedMünsterland, 50 cm, seed 0, real: 0.62% savedMünsterland, 50 cm, seed 1, real: -0.95% savedsmaller →← larger
Essen-Ruhr, 10 cmEssen-Ruhr, 50 cmMünsterland, 10 cmMünsterland, 50 cm-8%-4%0%bytes saved vs no mapEssen-Ruhr, 10 cm, seed 0, shifted: -0.11% savedEssen-Ruhr, 10 cm, seed 1, shifted: -0.10% savedEssen-Ruhr, 50 cm, seed 0, shifted: 0.07% savedEssen-Ruhr, 50 cm, seed 1, shifted: 0.18% savedMünsterland, 10 cm, seed 0, shifted: -0.59% savedMünsterland, 10 cm, seed 1, shifted: -0.09% savedMünsterland, 50 cm, seed 0, shifted: -1.69% savedMünsterland, 50 cm, seed 1, shifted: -2.07% savedEssen-Ruhr, 10 cm, seed 0, constant: 0.06% savedEssen-Ruhr, 10 cm, seed 1, constant: -0.20% savedEssen-Ruhr, 50 cm, seed 0, constant: 0.36% savedEssen-Ruhr, 50 cm, seed 1, constant: 0.14% savedMünsterland, 10 cm, seed 0, constant: 0.20% savedMünsterland, 10 cm, seed 1, constant: 0.17% savedMünsterland, 50 cm, seed 0, constant: -0.59% savedMünsterland, 50 cm, seed 1, constant: -1.20% savedEssen-Ruhr, 10 cm, seed 0, real with the map stored: -0.64% savedEssen-Ruhr, 10 cm, seed 1, real with the map stored: -0.54% savedEssen-Ruhr, 50 cm, seed 0, real with the map stored: -2.73% savedEssen-Ruhr, 50 cm, seed 1, real with the map stored: -2.85% savedMünsterland, 10 cm, seed 0, real with the map stored: -0.78% savedMünsterland, 10 cm, seed 1, real with the map stored: -0.44% savedMünsterland, 50 cm, seed 0, real with the map stored: -5.60% savedMünsterland, 50 cm, seed 1, real with the map stored: -7.13% savedEssen-Ruhr, 10 cm, seed 0, real: 0.80% savedEssen-Ruhr, 10 cm, seed 1, real: 0.89% savedEssen-Ruhr, 50 cm, seed 0, real: 1.53% savedEssen-Ruhr, 50 cm, seed 1, real: 1.39% savedMünsterland, 10 cm, seed 0, real: 0.52% savedMünsterland, 10 cm, seed 1, real: 0.86% savedMünsterland, 50 cm, seed 0, real: 0.62% savedMünsterland, 50 cm, seed 1, real: -0.95% savedsmaller →← larger
  • map shifted (control)
  • blank map (control)
  • real map, plus storing it
  • real map
First test, each case trained twice: a geological map makes the file a little smaller, but storing the map costs more than it saves.

Hard rock tends to form steep ridges, soft rock wide valleys. So the geological map of North Rhine-Westphalia (scale 1:100,000) went into the network as an extra input, one rock unit per 40 m cell. As controls, the network also got a blank map and the real map shifted by 2.56 km. If these help as much, the gain is not geology.

In a first test on two regions, the real map saved up to 1.5% of the coded terrain, more than either control, though in one of eight runs it saved nothing. That hints at real information, but storing the map (1.8 to 3.9 kB) costs more than it saves.

Can simulated landscapes teach the network what terrain looks like?

Training on simulated landscapes has started

A second idea: train the network first on landscapes made by the physics simulation, and compare it with look-alike terrain made without physics. The 48 simulated and 48 look-alike maps are ready, and training has started.

To be continued

This part is actively worked on. The full geology study (six regions, four controls) and the test of training on simulated landscapes are running and have no result yet. Next: finish both.

Part 04 of 06Physics

Can a neural network take over part of a landscape simulation and stay accurate for thousands of years?

Can a landscape's shape alone tell how fast it formed, and for how long?

edge rate, with floorcell rateedge rate, no floorflux networkedge rate, other formcell rate + penalty0246810average height error over the run (m)edge rate, with floor, seed 1729: 1.34 medge rate, with floor, seed 2: 1.33 medge rate, with floor, seed 3: 1.23 medge rate, with floor, seed 4: 1.43 medge rate, with floor, seed 5: 1.34 medge rate, no floor, seed 1729: 3.34 medge rate, no floor, seed 2: 3.47 medge rate, no floor, seed 3: 3.71 medge rate, no floor, seed 4: 3.45 medge rate, no floor, seed 5: 3.31 medge rate, other form, seed 1729: 4.19 medge rate, other form, seed 2: 4.11 medge rate, other form, seed 3: 4.02 medge rate, other form, seed 4: 4.08 medge rate, other form, seed 5: 4.19 mcell rate, seed 1729: 2.57 mcell rate, seed 2: 2.59 mcell rate, seed 3: 2.68 mcell rate, seed 4: 2.58 mcell rate, seed 5: 2.59 mflux network, seed 1729: 3.82 mflux network, seed 2: 3.48 mflux network, seed 3: 3.88 mflux network, seed 4: 4.41 mflux network, seed 5: 3.26 mcell rate + penalty, seed 1729: 8.38 mcell rate + penalty, seed 2: 8.10 mcell rate + penalty, seed 3: 8.10 mcell rate + penalty, seed 4: 8.65 mcell rate + penalty, seed 5: 7.42 mstraight-line law 3.91 mperfect copy 1.11 m1.34 m2.59 m · leaks soil3.45 m3.82 m · moves flat ground4.11 m8.10 m · leaks soil
edge rate, with floorcell rateedge rate, no floorflux networkedge rate, other formcell rate + penalty048average height error (m)edge rate, with floor, seed 1729: 1.34 medge rate, with floor, seed 2: 1.33 medge rate, with floor, seed 3: 1.23 medge rate, with floor, seed 4: 1.43 medge rate, with floor, seed 5: 1.34 medge rate, no floor, seed 1729: 3.34 medge rate, no floor, seed 2: 3.47 medge rate, no floor, seed 3: 3.71 medge rate, no floor, seed 4: 3.45 medge rate, no floor, seed 5: 3.31 medge rate, other form, seed 1729: 4.19 medge rate, other form, seed 2: 4.11 medge rate, other form, seed 3: 4.02 medge rate, other form, seed 4: 4.08 medge rate, other form, seed 5: 4.19 mcell rate, seed 1729: 2.57 mcell rate, seed 2: 2.59 mcell rate, seed 3: 2.68 mcell rate, seed 4: 2.58 mcell rate, seed 5: 2.59 mflux network, seed 1729: 3.82 mflux network, seed 2: 3.48 mflux network, seed 3: 3.88 mflux network, seed 4: 4.41 mflux network, seed 5: 3.26 mcell rate + penalty, seed 1729: 8.38 mcell rate + penalty, seed 2: 8.10 mcell rate + penalty, seed 3: 8.10 mcell rate + penalty, seed 4: 8.65 mcell rate + penalty, seed 5: 7.42 mstraight line 3.91 mperfect copy 1.11 m1.34 m2.59 m3.45 m3.82 m4.11 m8.10 m
  • selected
  • passes the physics checks
  • breaks a physics rule, excluded
Simulation: six network designs, lower is more accurate. Hollow ones break a basic physics rule and are excluded.

Landscapes form slowly: tectonics lifts the land, rivers cut into it, and soil creeps down the slopes. Simulations step this forward in time. A plain creep law misses how creep speeds up on steep slopes; a network could learn that from data. Here a small network replaces the soil-creep step, learned first from a known simulation, and has to stay accurate over 64 steps of 200 years on surfaces it has never seen.

What keeps a learned step from drifting over thousands of years?

Built-in physics keeps the network on track

Six network designs were trained the same way. The best one cannot break two basic rules: flat ground stays flat, and no soil appears or vanishes. Averaged over the run, its height error is 1.34 m, close to the 1.11 m that even a perfect copy of the simulation's 200-year step would have. A plain straight-line creep law is off by 3.91 m. Without its floor, a lower limit on the creep rate, the network's error grows to 3.45 m. Three of the six designs break one of the two rules and were left out.

If every process ran twice as fast for half the time, would the landscape look different?

Checked whether one survey can tell rate from age

No, not in this model. Speed up every process and shorten the time to match, and the final landscape is exactly the same. Inferring causes from a result is an inverse problem, and here one survey can never settle it. In simulations, two surveys a fixed number of years apart can, as long as the landscape is still changing (not yet in steady state).

Young, 0.5 million years

-40-2000.50.7111.412speed-up, time cut to match
-40-2000.50.7111.412speed-up, time cut to match
↑ how well it fits

Older, 2 million years

-40-2000.50.7111.412speed-up, time cut to match
-40-2000.50.7111.412speed-up, time cut to match
↑ how well it fits

Near steady state, 5 million years

-40-2000.50.7111.412speed-up, time cut to matchall fourlines flat
-40-2000.50.7111.412speed-up, time cut to matchall fourlines flat
↑ how well it fits
  • one survey today
  • two surveys, gap grows with age
  • two surveys 20,000 years apart
  • two surveys 50,000 years apart
Simulation: one survey cannot tell a fast young landscape from a slow old one. Two surveys years apart can.

A fixed time-step cap made up information

A shortcut, a fixed cap on the simulation's time step, made fast and slow landscapes look different, as if the surface held real information about its age. It is an artifact of the numerics, and it disappears when the steps are scaled correctly.

youngoldernear steady state1001,00010,000made-up information (log-likelihood units)young, one survey, capped step: 123 log-unitsolder, one survey, capped step: 1583 log-unitsnear steady state, one survey, capped step: 3354 log-unitsyoung, two surveys, capped step: 124 log-unitsolder, two surveys, capped step: 1767 log-unitsnear steady state, two surveys, capped step: 4938 log-units123 to 1241,583 to 1,7673,354 to 4,938
youngoldernear steady state1001,00010,000made-up informationyoung, one survey, capped step: 123 log-unitsolder, one survey, capped step: 1583 log-unitsnear steady state, one survey, capped step: 3354 log-unitsyoung, two surveys, capped step: 124 log-unitsolder, two surveys, capped step: 1767 log-unitsnear steady state, two surveys, capped step: 4938 log-units123 to 1241,583 to 1,7673,354 to 4,938
  • one survey today
  • two surveys, gap grows with age
Simulation: a fixed cap on the time step makes up information that is not there. With correct steps it is exactly zero.

How sure can a speed estimate be?

Honest error bars need the right noise model

Survey errors are correlated in space: neighboring points tend to be off in the same direction. In a first test, error bars from a model that knows this caught the true speed in 95 to 97% of cases, as 95% error bars should. Treating every point as independent caught it in only 37 to 50%.

young, 20,000-year gapyoung, 50,000-year gapolder, 20,000-year gapolder, 50,000-year gap0%25%50%75%95%how often the 95% error bar holds the truthyoung, 20,000-year gap, independent: 43%young, 50,000-year gap, independent: 50%older, 20,000-year gap, independent: 41%older, 50,000-year gap, independent: 37%young, 20,000-year gap, correct: 95%young, 50,000-year gap, correct: 97%older, 20,000-year gap, correct: 96%older, 50,000-year gap, correct: 95%target 90 to 98%
young, 20,000-year gapyoung, 50,000-year gapolder, 20,000-year gapolder, 50,000-year gap0%25%50%75%95%error bar holds the truthyoung, 20,000-year gap, independent: 43%young, 50,000-year gap, independent: 50%older, 20,000-year gap, independent: 41%older, 50,000-year gap, independent: 37%young, 20,000-year gap, correct: 95%young, 50,000-year gap, correct: 97%older, 20,000-year gap, correct: 96%older, 50,000-year gap, correct: 95%target 90 to 98%
  • noise treated as independent
  • noise treated as correlated
First test: the error bars on the speed are honest only when the noise is treated as correlated.

Run the simulation yourself

The simulation core, written in Rust and compiled to WebAssembly, runs here in your browser. Compare the selected network with the simulation, and with an early design that lets flat ground drift.

Loading the lab…

Landscape lab.Simulation: three hillslope experiments, one with the selected network. Press Run to start one.

To be continued

This part is actively worked on. Next: repeat the error-bar test on about 100 simulated landscapes, compare it with networks that read the speed straight from the map, test what happens when the simulation does not match reality.

Part 05 of 06Reconstruction

Can a network turn a coarse 40 m map into a sharp 10 m map, better than standard methods?

bicubicbicubic, Essen-Ruhr (held out here): 39.0 cm39.0 cmbicubic, Rothaar (held out here): 34.4 cm34.4 cmbicubic, correctedbicubic, corrected, Essen-Ruhr (held out here): 34.2 cm34.2 cmbicubic, corrected, Rothaar (held out here): 25.6 cm25.6 cmlinear, correctedlinear, corrected, Essen-Ruhr (held out here): 34.1 cm34.1 cmlinear, corrected, Rothaar (held out here): 25.4 cm25.4 cmU-Net, correctedU-Net, corrected, Essen-Ruhr (held out here): 27.5 cm27.5 cmU-Net, corrected, Rothaar (held out here): 21.3 cm21.3 cmpoints in: bicubicpoints in: bicubic, Essen-Ruhr (held out here): 37.6 cm37.6 cmpoints in: bicubic, Rothaar (held out here): 28.1 cm28.1 cmpoints in: U-Netpoints in: U-Net, Essen-Ruhr (held out here): 52.9 cm52.9 cmpoints in: U-Net, Rothaar (held out here): 43.0 cm43.0 cm0204060average height error (cm)
bicubicbicubic, Essen-Ruhr (held out here): 39.0 cm39.0 cmbicubic, Rothaar (held out here): 34.4 cm34.4 cmbicubic, correctedbicubic, corrected, Essen-Ruhr (held out here): 34.2 cm34.2 cmbicubic, corrected, Rothaar (held out here): 25.6 cm25.6 cmlinear, correctedlinear, corrected, Essen-Ruhr (held out here): 34.1 cm34.1 cmlinear, corrected, Rothaar (held out here): 25.4 cm25.4 cmU-Net, correctedU-Net, corrected, Essen-Ruhr (held out here): 27.5 cm27.5 cmU-Net, corrected, Rothaar (held out here): 21.3 cm21.3 cmpoints in: bicubicpoints in: bicubic, Essen-Ruhr (held out here): 37.6 cm37.6 cmpoints in: bicubic, Rothaar (held out here): 28.1 cm28.1 cmpoints in: U-Netpoints in: U-Net, Essen-Ruhr (held out here): 52.9 cm52.9 cmpoints in: U-Net, Rothaar (held out here): 43.0 cm43.0 cm0204060average height error (cm)
  • Essen-Ruhr (held out here)
  • Rothaar (held out here)
First test: from 40 m averages to 10 m, the neural network beats simple methods. Given point samples, it loses.

Many elevation models, especially those from satellites, are coarse. Here a U‑Net, a common image network, learned to turn 40 m averages into 10 m heights. It was trained on four regions and tested on two others, and every result is corrected so that it averages back to the coarse input.

In a first test its mean error was 16 to 19% lower than that of the best method without a network. Given single points instead of averages, it did worse than plain (bicubic) interpolation: much of what it learned was how the coarse map had been made.

To be continued

This part is actively worked on. Next: the full study with gaps, sparse points and 1 m data, run once on the seven new regions.

Part 06 of 06How it was tested

How do you make sure a result is not tuned to its own test?

300 E350 E400 E450 E500 E5600 N5650 N5700 N5750 N5800 NRank 1, skipped (missing data)Rank 3, skipped (missing data)Rank 4, skipped (missing data)Rank 6, skipped (missing data)Rank 9, skipped (missing data)Rank 11, skipped (missing data)Rank 12, skipped (missing data)Rank 13, skipped (missing data)Rank 14, skipped (missing data)Rank 16, skipped (missing data)Rank 17, skipped (missing data)Rank 18, skipped (missing data)Rank 19, skipped (missing data)Rank 20, skipped (missing data)Rank 21, skipped (missing data)Rank 22, skipped (missing data)Rank 25, skipped (missing data)Rank 26, skipped (missing data)Rank 27, skipped (missing data)Rank 28, skipped (missing data)Rank 29, skipped (missing data)Rank 23, moderate (height spread 17.5 m), skipped: enough of this relief typeRank 24, rough (height spread 50 m), skipped: enough of this relief typeEssen-Ruhr: development regionEssen-RuhrMünsterland: development regionMünsterlandLower Rhine: development regionLower RhineTeutoburg Forest: development regionTeutoburg ForestBergisches Land: development regionBergisches LandRothaar: development regionRothaarnew 3: rank 2, moderate (height spread 15.8 m), pickednew 3new 4: rank 5, flat (height spread 4.6 m), pickednew 4new 2: rank 7, moderate (height spread 16.7 m), pickednew 2new 1: rank 8, rough (height spread 32.5 m), pickednew 1new 5: rank 10, moderate (height spread 27.8 m), pickednew 5new 7: rank 15, rough (height spread 47.2 m), pickednew 7new 6: rank 30, flat (height spread 2.3 m), pickednew 6
  • new region, flat (height spread under 8 m)
  • moderate
  • rough (over 30 m)
  • development region, 15 km gap kept
  • skipped, enough of this relief type
  • ×skipped, missing data (state border)
  • grid every 50 km
The 7 new regions were picked by a fixed rule before any model saw them. Crosses are candidates with missing data.

By writing the rules down first. Before the final test, a protocol fixed the codecs, the error limits, the measures and the pass marks. Then a fixed rule picked seven new regions across the state, from flat to rough terrain, and the models were frozen. The final test ran once, and its result is reported as it came out.

Each result is an average over regions, with a range that shows how much it varies from region to region. One codec setting, the tuned SZ3, was added after the rules were set; it can only make the neural result harder to reach.

The rule, condition by condition

File size passed at every error from 5 to 50 cm and failed at 1 m. The streams condition failed at every error. One failed condition is enough for a no.

5 cm10 cm25 cm50 cm1 mlargest error7 new regionssize ≤ 0.90×0.83×7 new regions, 5 cm, size ≤ 0.90×: 0.83× (pass)0.79×7 new regions, 10 cm, size ≤ 0.90×: 0.79× (pass)0.74×7 new regions, 25 cm, size ≤ 0.90×: 0.74× (pass)0.77×7 new regions, 50 cm, size ≤ 0.90×: 0.77× (pass)0.94×7 new regions, 1 m, size ≤ 0.90×: 0.94× (fail)range top < 0.95×0.847 new regions, 5 cm, range top < 0.95×: 0.84 (pass)0.817 new regions, 10 cm, range top < 0.95×: 0.81 (pass)0.757 new regions, 25 cm, range top < 0.95×: 0.75 (pass)0.797 new regions, 50 cm, range top < 0.95×: 0.79 (pass)1.077 new regions, 1 m, range top < 0.95×: 1.07 (fail)all regions smaller7 of 77 new regions, 5 cm, all regions smaller: 7 of 7 (pass)7 of 77 new regions, 10 cm, all regions smaller: 7 of 7 (pass)7 of 77 new regions, 25 cm, all regions smaller: 7 of 7 (pass)7 of 77 new regions, 50 cm, all regions smaller: 7 of 7 (pass)5 of 77 new regions, 1 m, all regions smaller: 5 of 7 (fail)streams drop ≤ 1 point−3.07 new regions, 5 cm, streams drop ≤ 1 point: −3.0 (fail)−2.37 new regions, 10 cm, streams drop ≤ 1 point: −2.3 (fail)−5.27 new regions, 25 cm, streams drop ≤ 1 point: −5.2 (fail)−8.47 new regions, 50 cm, streams drop ≤ 1 point: −8.4 (fail)−7.27 new regions, 1 m, streams drop ≤ 1 point: −7.2 (fail)rule passesfail7 new regions, 5 cm, rule passes: fail (fail)fail7 new regions, 10 cm, rule passes: fail (fail)fail7 new regions, 25 cm, rule passes: fail (fail)fail7 new regions, 50 cm, rule passes: fail (fail)fail7 new regions, 1 m, rule passes: fail (fail)6 development regionssize ≤ 0.90×0.85×6 development regions, 5 cm, size ≤ 0.90×: 0.85× (pass)0.83×6 development regions, 10 cm, size ≤ 0.90×: 0.83× (pass)0.77×6 development regions, 25 cm, size ≤ 0.90×: 0.77× (pass)0.75×6 development regions, 50 cm, size ≤ 0.90×: 0.75× (pass)0.82×6 development regions, 1 m, size ≤ 0.90×: 0.82× (pass)range top < 0.95×0.866 development regions, 5 cm, range top < 0.95×: 0.86 (pass)0.856 development regions, 10 cm, range top < 0.95×: 0.85 (pass)0.796 development regions, 25 cm, range top < 0.95×: 0.79 (pass)0.776 development regions, 50 cm, range top < 0.95×: 0.77 (pass)0.906 development regions, 1 m, range top < 0.95×: 0.90 (pass)all regions smaller6 of 66 development regions, 5 cm, all regions smaller: 6 of 6 (pass)6 of 66 development regions, 10 cm, all regions smaller: 6 of 6 (pass)6 of 66 development regions, 25 cm, all regions smaller: 6 of 6 (pass)6 of 66 development regions, 50 cm, all regions smaller: 6 of 6 (pass)5 of 66 development regions, 1 m, all regions smaller: 5 of 6 (fail)streams drop ≤ 1 point−0.36 development regions, 5 cm, streams drop ≤ 1 point: −0.3 (pass)−2.06 development regions, 10 cm, streams drop ≤ 1 point: −2.0 (fail)−3.36 development regions, 25 cm, streams drop ≤ 1 point: −3.3 (fail)−8.46 development regions, 50 cm, streams drop ≤ 1 point: −8.4 (fail)−8.76 development regions, 1 m, streams drop ≤ 1 point: −8.7 (fail)rule passespass6 development regions, 5 cm, rule passes: pass (pass)fail6 development regions, 10 cm, rule passes: fail (fail)fail6 development regions, 25 cm, rule passes: fail (fail)fail6 development regions, 50 cm, rule passes: fail (fail)fail6 development regions, 1 m, rule passes: fail (fail)
5 cm10 cm25 cm50 cm1 m7 new regionssize ≤ 0.90×0.83×7 new regions, 5 cm, size ≤ 0.90×: 0.83× (pass)0.79×7 new regions, 10 cm, size ≤ 0.90×: 0.79× (pass)0.74×7 new regions, 25 cm, size ≤ 0.90×: 0.74× (pass)0.77×7 new regions, 50 cm, size ≤ 0.90×: 0.77× (pass)0.94×7 new regions, 1 m, size ≤ 0.90×: 0.94× (fail)range top < 0.95×0.847 new regions, 5 cm, range top < 0.95×: 0.84 (pass)0.817 new regions, 10 cm, range top < 0.95×: 0.81 (pass)0.757 new regions, 25 cm, range top < 0.95×: 0.75 (pass)0.797 new regions, 50 cm, range top < 0.95×: 0.79 (pass)1.077 new regions, 1 m, range top < 0.95×: 1.07 (fail)all regions smaller7 of 77 new regions, 5 cm, all regions smaller: 7 of 7 (pass)7 of 77 new regions, 10 cm, all regions smaller: 7 of 7 (pass)7 of 77 new regions, 25 cm, all regions smaller: 7 of 7 (pass)7 of 77 new regions, 50 cm, all regions smaller: 7 of 7 (pass)5 of 77 new regions, 1 m, all regions smaller: 5 of 7 (fail)streams drop ≤ 1 point−3.07 new regions, 5 cm, streams drop ≤ 1 point: −3.0 (fail)−2.37 new regions, 10 cm, streams drop ≤ 1 point: −2.3 (fail)−5.27 new regions, 25 cm, streams drop ≤ 1 point: −5.2 (fail)−8.47 new regions, 50 cm, streams drop ≤ 1 point: −8.4 (fail)−7.27 new regions, 1 m, streams drop ≤ 1 point: −7.2 (fail)rule passesfail7 new regions, 5 cm, rule passes: fail (fail)fail7 new regions, 10 cm, rule passes: fail (fail)fail7 new regions, 25 cm, rule passes: fail (fail)fail7 new regions, 50 cm, rule passes: fail (fail)fail7 new regions, 1 m, rule passes: fail (fail)6 development regionssize ≤ 0.90×0.85×6 development regions, 5 cm, size ≤ 0.90×: 0.85× (pass)0.83×6 development regions, 10 cm, size ≤ 0.90×: 0.83× (pass)0.77×6 development regions, 25 cm, size ≤ 0.90×: 0.77× (pass)0.75×6 development regions, 50 cm, size ≤ 0.90×: 0.75× (pass)0.82×6 development regions, 1 m, size ≤ 0.90×: 0.82× (pass)range top < 0.95×0.866 development regions, 5 cm, range top < 0.95×: 0.86 (pass)0.856 development regions, 10 cm, range top < 0.95×: 0.85 (pass)0.796 development regions, 25 cm, range top < 0.95×: 0.79 (pass)0.776 development regions, 50 cm, range top < 0.95×: 0.77 (pass)0.906 development regions, 1 m, range top < 0.95×: 0.90 (pass)all regions smaller6 of 66 development regions, 5 cm, all regions smaller: 6 of 6 (pass)6 of 66 development regions, 10 cm, all regions smaller: 6 of 6 (pass)6 of 66 development regions, 25 cm, all regions smaller: 6 of 6 (pass)6 of 66 development regions, 50 cm, all regions smaller: 6 of 6 (pass)5 of 66 development regions, 1 m, all regions smaller: 5 of 6 (fail)streams drop ≤ 1 point−0.36 development regions, 5 cm, streams drop ≤ 1 point: −0.3 (pass)−2.06 development regions, 10 cm, streams drop ≤ 1 point: −2.0 (fail)−3.36 development regions, 25 cm, streams drop ≤ 1 point: −3.3 (fail)−8.46 development regions, 50 cm, streams drop ≤ 1 point: −8.4 (fail)−8.76 development regions, 1 m, streams drop ≤ 1 point: −8.7 (fail)rule passespass6 development regions, 5 cm, rule passes: pass (pass)fail6 development regions, 10 cm, rule passes: fail (fail)fail6 development regions, 25 cm, rule passes: fail (fail)fail6 development regions, 50 cm, rule passes: fail (fail)fail6 development regions, 1 m, rule passes: fail (fail)
The rule fixed before the final run. New regions: size passes from 5 to 50 cm, the streams check fails everywhere.

Limits

Thirteen regions from one German state, all at 10 m; some new regions are neighbors, so they are not fully independent. The stream test compares maps; it does not simulate water. The physics runs on simulated landscapes, and at its default step the simulation's own error is larger than the rules allow for estimating rates. Timings come from a shared workstation.

Data

Terrain from the DGM1 of Geobasis NRW (DL-DE-Zero-2.0). Geology from the GK100 of the Geological Survey of North Rhine-Westphalia (DL-DE-BY-2.0).