Programm zum Anzeigen von bestimmten Werten auf Karte
Verfasst: Mittwoch 22. Dezember 2021, 15:05
Liebe Community,
ich versuche gerade ein Programm zu schreiben, welches auf einer Deutschlandkarte die Brücken geordnet nach Zustandsnote anzeigen soll. Ich habe dafür eine .csv Datei bekommen, in welcher die einzelnen Zustandsnoten (1.0 - 4.0) gelistet sind, wobei daneben dann in einer anderen Spalte die jeweiligen Koordinaten gelistet sind. Eine andere Datei enthält die Werte für die Umrisse der Deutschlandkarte.
Ich habe es schon geschafft alle Brücken auf der Karte anzeigen zu lassen, jedoch hab ich die Aufgabe den Benutzer im Programm eine Zustandsnote eingeben zu lassen. Je nachdem welche er angibt sollen genau nur die Brücken angezeigt werden, welche auch diese Zustandsnote haben. Ich kenne mich leider echt nicht aus, trotzdem schicke ich mal den Code rein den ich bis jetzt habe. Die farbliche Unterteilung ist jetzt noch nicht wichtig. Wäre über jede Hilfe dankbar, vielen Dank im Voraus!
# Module importieren
import matplotlib.pyplot as plt
import csv
# Listen erstellen:
ZN_komplett = []
ZN_sehrgut = []
ZN_gut = []
ZN_befriedigend = []
ZN_ausreichend = []
ZN_nichtausreichend = []
ZN_schlecht = []
NB_komplett = []
OL_komplett = []
ZN = []
NB = []
OL = []
# Kartenumriss erstellen
with open("Deutschlandkarte.txt", "r") as datei:
X = []
Y = []
for zeiletxt in datei:
x, y = zeiletxt.split()
X.append(float(x))
Y.append(float(y))
# CSV-Datei importieren
with open("Zustandsnoten.csv") as csvdatei:
reader = csv.reader(csvdatei, delimiter='\t')
kopfzeile = next(reader)
# Gruppen zuordnen
for row in reader:
ZN_komplett.append(float(row[6].replace(',', '.')))
NB_komplett.append(float(row[10].replace(',', '.')))
OL_komplett.append(float(row[11].replace(',', '.')))
# Nullwerte aus Koordinaten rausnehmen
for value in NB_komplett:
if value > 3:
NB.append(value)
for value in OL_komplett:
if value > 3:
OL.append(value)
# Einzelne Gruppen für farbliche Unterteilung erstellen
for value in ZN_komplett:
if value <= 1.4:
ZN_sehrgut.append(value)
for value in ZN_komplett:
if 1.4 < value <= 1.9:
ZN_gut.append(value)
for value in ZN_komplett:
if 1.9 < value <= 2.4:
ZN_befriedigend.append(value)
for value in ZN_komplett:
if 2.4 < value <= 2.9:
ZN_ausreichend.append(value)
for value in ZN_komplett:
if 2.9 < value <= 3.4:
ZN_nichtausreichend.append(value)
for value in ZN_komplett:
if 3.4 < value <= 4.0:
ZN_schlecht.append(value)
def safeint(s):
try:
return int(s)
except ValueError:
return 0
Wunsch = safeint(input("Zustandsnote: "))
# if 1 <= Wunsch <= 1.4:
# if 1.4 < Wunsch <= 1.9:
# Grafikgröße anpassen
mm = 1 / 25.4 # Zoll
A4 = (210 * mm, 297 * mm)
plt.figure(figsize=A4)
# diagramm erzeugen
plt.plot(X, Y, color="black", linewidth=4, )
# Gitter erzeugen
plt.grid(True)
# Achsen beschriften
plt.xlabel("Östliche Länge")
plt.ylabel("Nördliche Breite")
# Überschrift
plt.title("""Karte der "Anzahl" deutschen Fernstraßenbrücken
mit der Zustandsnote "ZN" ("Zustand")""")
# Markierung der Orte
H = NB
F = OL
plt.scatter(F, H, color="red", marker="o")
ich versuche gerade ein Programm zu schreiben, welches auf einer Deutschlandkarte die Brücken geordnet nach Zustandsnote anzeigen soll. Ich habe dafür eine .csv Datei bekommen, in welcher die einzelnen Zustandsnoten (1.0 - 4.0) gelistet sind, wobei daneben dann in einer anderen Spalte die jeweiligen Koordinaten gelistet sind. Eine andere Datei enthält die Werte für die Umrisse der Deutschlandkarte.
Ich habe es schon geschafft alle Brücken auf der Karte anzeigen zu lassen, jedoch hab ich die Aufgabe den Benutzer im Programm eine Zustandsnote eingeben zu lassen. Je nachdem welche er angibt sollen genau nur die Brücken angezeigt werden, welche auch diese Zustandsnote haben. Ich kenne mich leider echt nicht aus, trotzdem schicke ich mal den Code rein den ich bis jetzt habe. Die farbliche Unterteilung ist jetzt noch nicht wichtig. Wäre über jede Hilfe dankbar, vielen Dank im Voraus!
# Module importieren
import matplotlib.pyplot as plt
import csv
# Listen erstellen:
ZN_komplett = []
ZN_sehrgut = []
ZN_gut = []
ZN_befriedigend = []
ZN_ausreichend = []
ZN_nichtausreichend = []
ZN_schlecht = []
NB_komplett = []
OL_komplett = []
ZN = []
NB = []
OL = []
# Kartenumriss erstellen
with open("Deutschlandkarte.txt", "r") as datei:
X = []
Y = []
for zeiletxt in datei:
x, y = zeiletxt.split()
X.append(float(x))
Y.append(float(y))
# CSV-Datei importieren
with open("Zustandsnoten.csv") as csvdatei:
reader = csv.reader(csvdatei, delimiter='\t')
kopfzeile = next(reader)
# Gruppen zuordnen
for row in reader:
ZN_komplett.append(float(row[6].replace(',', '.')))
NB_komplett.append(float(row[10].replace(',', '.')))
OL_komplett.append(float(row[11].replace(',', '.')))
# Nullwerte aus Koordinaten rausnehmen
for value in NB_komplett:
if value > 3:
NB.append(value)
for value in OL_komplett:
if value > 3:
OL.append(value)
# Einzelne Gruppen für farbliche Unterteilung erstellen
for value in ZN_komplett:
if value <= 1.4:
ZN_sehrgut.append(value)
for value in ZN_komplett:
if 1.4 < value <= 1.9:
ZN_gut.append(value)
for value in ZN_komplett:
if 1.9 < value <= 2.4:
ZN_befriedigend.append(value)
for value in ZN_komplett:
if 2.4 < value <= 2.9:
ZN_ausreichend.append(value)
for value in ZN_komplett:
if 2.9 < value <= 3.4:
ZN_nichtausreichend.append(value)
for value in ZN_komplett:
if 3.4 < value <= 4.0:
ZN_schlecht.append(value)
def safeint(s):
try:
return int(s)
except ValueError:
return 0
Wunsch = safeint(input("Zustandsnote: "))
# if 1 <= Wunsch <= 1.4:
# if 1.4 < Wunsch <= 1.9:
# Grafikgröße anpassen
mm = 1 / 25.4 # Zoll
A4 = (210 * mm, 297 * mm)
plt.figure(figsize=A4)
# diagramm erzeugen
plt.plot(X, Y, color="black", linewidth=4, )
# Gitter erzeugen
plt.grid(True)
# Achsen beschriften
plt.xlabel("Östliche Länge")
plt.ylabel("Nördliche Breite")
# Überschrift
plt.title("""Karte der "Anzahl" deutschen Fernstraßenbrücken
mit der Zustandsnote "ZN" ("Zustand")""")
# Markierung der Orte
H = NB
F = OL
plt.scatter(F, H, color="red", marker="o")