Skip to content

Instantly share code, notes, and snippets.

@breinbaas
Created March 19, 2024 08:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save breinbaas/6efd0dcdfd14b45d0e5d3b5b71655da0 to your computer and use it in GitHub Desktop.
Save breinbaas/6efd0dcdfd14b45d0e5d3b5b71655da0 to your computer and use it in GitHub Desktop.
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