Meßtischblätter – berechnet#
Für das Projekt »Gottesanberin gesucht« [1] stand die Frage, wie sich die Koordinaten aller Meldungen für Auswertungen nach Meßtischblattnummern aggregieren lassen. Nun wird auf Wikipedia das Meßtischblatt [2] als veraltet eingestuft, weil die Koordinaten der modernen Kartendienste sehr viel feiner auflösen können. Für die Publikation sensibler Daten, z.B. Standorte seltener Pflanzen und Tiere, ist eine gröbere Auflösung eventuell eine gute Lösung. Ein zweiter wichtiger Grund für die Verwendung der Meßtischblätter, sind alte Auswertungen, die sich so leichter vergleichen lassen, denn geforscht wurde auch schon vor der Erfindung des Internets.
Es war gar nicht so einfach eine Website zu finden, die man als Service hätte nutzen können. Es gibt solche Seiten, aber eine automatisierte Abfrage war generell schwierig.
Nun habe ich es noch einmal versucht, und ein kleines Python-Script löst nun die Aufgabe und berechnet aus den Koordinaten moderner Kartendienste die dazu passende Nummer des Meßtischblattes.
"""
x-------o o-------o o-------o o-------o o-------o o-------o
| | | | | | | | | | | |
| 0502 | | ... | | 0519 | | 0520 | | 0521 | | ... |
| | | | | | | | | | | |
o-------o o-------o o-------o o-------o o-------o o-------o
o-------o ^
| | |
| ... | |
| | o--- nördlichste
o-------o Meßtischblätter
o-------o x = Nullpunkt 55.49839, 6.0
| |
| 4101 | <-- Meßtischblatt am weitesten im Westen
| |
o-------o
o-------o
| |
| ... |
| |
o-------o
Ausgehend vom O-Punkt (virutelle Karte mit der Bezeichnung 0502
weil für Zeile 0519, 0520, 0521 die nördlichsten MTB existieren.
Für die Berechnung müssen die Opensteetmap-Koordinaten in Bogen-
maß umgerechent werden. Aus dem Kartenmaß für die Höhe (6 Grad)
und der Breite (10 Grad) kann dann die Kartennummer errechnet
werden.
Die Grenzen, ob eine Karte mit der errechneten Nummer existiert
oder es eine virtuelle MTB-Nummer ist, wird nicht geprüft.
Ob die errechnite Nummer korrekt ist, kann auf der folgenden
Websiten nachgeprüft werden:
- http://gk.historic.place/tools/selectbbox.htm
- https://moses-mendelssohn-institut.de/TK25
"""
def get_mtb(zielbreite, ziellaenge):
"Berechnung der Messtischblattnummer"
# Berechnung der Zeilennummer
zielbreite = float(str(zielbreite).replace(",", "."))
ziellaenge = float(str(ziellaenge).replace(",", "."))
startbreite = 55.49839 # Quadrat liegt im Meer Höhe Esbjerg (Dänemark)
startlaenge = 6.0 #5.99931 # und markiert den 0-Punkt für die Berechnungen
startnummer = 5 # Zeile im Kachelsystem
zielstunden, zielnach = (int(zielbreite // 1), zielbreite % 1)
zielminsec = zielnach * 60
zielminuten = int(zielminsec // 1)
zielsekunden = (zielminsec % 1) * 60
startvor, startnach = (int(startbreite // 1), startbreite % 1)
startminsec = startnach * 60
startminuten = int(startminsec // 1)
startsekunden = (startminsec % 1) * 60
diffstunden = startvor - zielstunden
diffminuten = startminuten - zielminuten
diffgesamt = diffstunden * 60 + diffminuten
part1 = int(startnummer + diffgesamt / 6)
# Berechnung der Spaltennummer
zielstunden, zielnach = (int(ziellaenge // 1), ziellaenge % 1)
zielminsec = zielnach * 60
zielminuten = int(zielminsec // 1)
zielsekunden = (zielminsec % 1) * 60
startnummer = 2 # Spalte im Kachelsystem
startvor, startnach = (int(startlaenge // 1), startlaenge % 1)
startminsec = startnach * 60
startminuten = int(startminsec // 1)
startsekunden = (startminsec % 1) * 60
diffstunden = abs(startvor - zielstunden)
diffminuten = abs(abs(startminuten) + abs(zielminuten))
diffgesamt = abs(diffstunden) * 60 + abs(diffminuten)
part2 = int(startnummer + diffgesamt / 10)
return f"{part1:02d}{part2:02d}"
if __name__ == '__main__':
koordinaten = [
(52.43257, 9.74487, 'Langenhagen'),
(49.20753, 6.84002, 'Regionalverband Saarbrücken | Großro'), # mtb: 6707
(51.3324, 12.07906, 'Leuna'), # mtb: 4638
(50.71869, 7.11366, 'Kessenich | Bonn'), # mtb: 5208
(52.05791, 13.18969, 'Kolzenburg'), # mtb: 3945
(52.04057, 13.49549, 'Baruth'), # mtb: 3946
(51.36304, 11.11348, 'Kyffhäuserkreis | Bad Frankenhausen'), # mtb: 4632
(51.57738, 13.99804, 'Großräschen'), # mtb: 4450
(52.95927, 9.9396, 'Visselhövede'), #
(52.37225, 12.96936, 'Werder'), # mtb: 3643
(52.3874, 13.40296, 'Lichtenrade'), # mtb: 3646
(52.83862, 13.81361, 'Eberswalde'), # mtb: 3149
]
for zeile in koordinaten:
zielbreite, ziellaenge, ort = zeile
print(get_mtb(zielbreite, ziellaenge), ort)