Created
March 19, 2024 08:54
-
-
Save breinbaas/6efd0dcdfd14b45d0e5d3b5b71655da0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from leveelogic.helpers import case_insensitive_glob | |
from leveelogic.deltares.dstability import DStability | |
# Dit script leest alle grondsoorten uit een directory met stix bestanden | |
# en maakt een csv bestand van de grondsoorten en de helling. Dit is nodig | |
# voor de leggerprofielen omdat we moeten weten welke grondsoort naam | |
# bij welke helling hoort | |
# Locatie van de stix bestanden | |
STIX_PATH = "Z:\\Python\\leveelogic\\tests\\testdata\\stix" | |
# Haal alle stix bestanden op (recursief) | |
stix_files = case_insensitive_glob(STIX_PATH, ".stix") | |
# Maak een lijst voor alle unieke grondsoorten (geen dubbelingen in deze lijst) | |
unique_soils = [] | |
# Itereer over de stix bestanden | |
for stix_file in stix_files: | |
# Lees het bestand in | |
ds = DStability.from_stix(stix_file) | |
# ds.soils is een dictionary met alle belangrijke eigenschappen | |
for d in ds.soils: | |
if ( | |
not d in unique_soils | |
): # Voeg enkel toe als de grondsoort nog niet in de lijst staat | |
unique_soils.append(d) | |
# Sorteer op code (makkelijker hanteerbare uitvoer) | |
unique_soils = sorted(unique_soils, key=lambda d: d["code"]) | |
# Schrijf naar csv bestand | |
with open("grondsoorten.csv", "w") as f: | |
# Header | |
f.write("code,yd,yd,c,phi,helling\n") | |
# Itereer over de grondsoorten en bepaal de helling | |
for soil in unique_soils: | |
if ( | |
soil["ys"] < 12 | |
): # onder de 12kNm3 is aanname veen of venige klei dus helling 6 | |
helling = 6 | |
elif soil["ys"] > 18: # boven de 18kNm3 is aanname zand dus helling 4 | |
helling = 4 | |
elif ( | |
soil["cohesion"] > 3.0 | |
): # tussen de 12 en 18 met cohesie > 3 is stevige klei dus helling 2 | |
helling = 2 | |
else: # in alle andere gevallen is het of slappere klei of zand dus helling 4 | |
helling = 4 | |
# Schrijf de regel en voeg ook alle informatie over de grond toe om controles te kunnen uitvoeren | |
f.write( | |
f"{soil['code']},{soil['yd']:.2f},{soil['ys']:.2f},{soil['cohesion']:.1f},{soil['friction_angle']:.1f},{helling}\n" | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment