=== versions === python 3.12.0 | numpy 2.5.4 | rasterio 1.5.2 | shapely 2.2.0 | manifold3d 3.5.5 | pyvista 0.49.2 === Step 1: the route as GPX === OSM relation 4080403: 'Pennine Way (Edale to Crowden)', 86 ways -> LineString read pennine_way_edale_crowden.gpx: 1,733 track points start 412,283 E 385,971 N | end 406,851 E 399,068 N | length 26.43 km inside the model area: True === Step 2: Environment Agency LIDAR DTM, fetched at 5 m and averaged to 25 m === 12 WCS tiles -> 2400 x 3200 cells of 5 m | no-data: 0 block mean 5 x 5 -> 480 x 640 cells of 25 m | empty cells filled: 0 elevation 137.7 - 635.8 m === Step 3: drape the route on the DEM === sampled every 25 m: 1,058 points lowest 197 m | highest 633 m at 5.9 km (407,902 E 387,059 N) total ascent 817 m | total descent 830 m === Step 4: model scale === horizontal scale 1:93,971 | cell on the print 0.266 mm model 127.4 x 170.0 x 14.6 mm | route 1.2 mm wide = 113 m on the ground route line: 1,733 -> 808 vertices after a 0.02 mm simplify route outline: Polygon with 2,391 vertices, 0 holes, area 332.7 mm2 === Step 5: raised, engraved and inlay solids === terrain 1,228,796 triangles | watertight True | oriented True | volume 213.00 cm3 raised 1,259,666 triangles | watertight True | oriented True | volume 213.20 cm3 engraved 1,258,028 triangles | watertight True | oriented True | volume 212.74 cm3 route inlay 46,084 triangles | watertight True | oriented True | volume 0.47 cm3 [booleans and checks: 2.7 s] engraved + inlay = 213.204 cm3 | raised = 213.204 cm3 | overlap between the two parts 0.0000 mm3 raised - terrain = 199.6 mm3 (route area 332.7 mm2 x 0.6 mm = 199.6 mm3) route inlay: 1 piece(s) === Step 6: write STL and 3MF === pennine_way_raised.stl 63.0 MB | 1,259,666 facets | 84 + 50 x facets = file size: True pennine_way_engraved.stl 62.9 MB | 1,258,028 facets | 84 + 50 x facets = file size: True pennine_way_route_inlay.stl 2.3 MB | 46,084 facets | 84 + 50 x facets = file size: True pennine_way_inlay.3mf 11.5 MB | parts: terrain, route === figures === sections at y = 84.0 mm, route centre x = 51.3 mm, terrain z = 12.1 mm wrote 01-route-map, 02-elevation-profile, 03-route-sections, 04-stl-preview-inlay, 05-stl-preview-raised-closeup