From 7fda5b6b4a81085f1226cafc7b9ed657ab53cef9 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 18 Oct 2023 14:45:38 +0200 Subject: [PATCH] Mage: Fix #17 ST file export format. --- src/Solver/Mage.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 4836d39f..f6346b66 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -149,19 +149,25 @@ class Mage(AbstractSolver): c1 = f"{profile.code1:>6}" c2 = f"{profile.code2:>6}" t = f"{len(profile.points):>6}" - kp = f"{profile.kp:>13.4f}" + kp = f"{profile.kp:>12f}"[0:12] pname = profile.name if profile.name == "": - pname = f"p{profile.id:>3}".replace(" ", "p") - name = f"{pname}" + # Generate name from profile id prefixed with + # 'p' (and replace space char with '0' char) + pname = f"p{profile.id:>3}".replace(" ", "0") + name = f"{pname:<19}" + # Generate sediment additional data if available sediment = "" if profile.sl is not None: if not any(filter(lambda f: ".GRA" in f, files)): files.append(gra_file) + # Number of layers nl = len(profile.sl) sediment = f" {nl:>3}" + + # Layers data for layer in profile.sl.layers: sediment += ( f" {layer.height:>10} {layer.d50:>10} " + @@ -169,20 +175,26 @@ class Mage(AbstractSolver): f"{layer.critical_constraint:>10}" ) - f.write(f"{num}{c1}{c2}{t}{kp} {name} {sediment}\n") + # Profile header line + f.write(f"{num}{c1}{c2}{t} {kp} {name} {sediment}\n") cnt_num += 1 + # Points for point in profile.points: - x = f"{point.x:>13.4f}" - y = f"{point.y:>13.4f}" - z = f"{point.z:>13.4f}" + x = f"{point.x:<12f}"[0:12] + y = f"{point.y:<12f}"[0:12] + z = f"{point.z:<12f}"[0:12] n = f"{point.name:<3}" + # Generate sediment additional data if available sediment = "" prev = point.z if point.sl is not None: + # Number of layers nl = len(point.sl) sediment = f"{nl:>3}" + + # Layers data for layer in point.sl.layers: prev = round(prev - layer.height, 5) sediment += ( @@ -191,8 +203,10 @@ class Mage(AbstractSolver): f"{layer.critical_constraint:>10}" ) - f.write(f"{x}{y}{z} {n} {sediment}\n") + # Point line + f.write(f"{x} {y} {z}{n} {sediment}\n") + # Profile last line f.write(f" 999.9990 999.9990 999.9990\n") return files -- GitLab