Moin!
http://www.opengeodb.de/ könnte weiterhelfen bei der datenbeschaffung.
Das hilft definitiv weiter bei der Datenbeschaffung. Dort sind zu eigentlich allen deutschen, österreichischen und schweizerischen Orten die Koordinaten und enthaltenen Postleitzahlen gespeichert.
Es gibt aber einen Nachteil: Ausgangsgrundlage ist der Ort bzw. die Stadt, nicht der PLZ-Bezirk. Man erhält also nicht zu einer PLZ exakt eine Koordinate, sondern die PLZ taucht mehrfach auf.
Außerdem ist die Abstufung noch nicht unbedingt so ideal. Für Hamburg und Stuttgart beispielsweise sind alle Stadtteile erfaßt, sowie auch die Stadt als Ganzes. Das bedeutet: Je Postleitzahl mindestens zwei Fundstellen: Einmal das Zentrum (sehr unspezifisch), und einmal der Stadtteil (schon spezifischer). Mit "Pech" auch mehr Fundstellen (wenn eine PLZ in mehreren Stadtteilen auftaucht).
Ich hab mir deswegen mal eine Positionsrundungsfunktion geschrieben, welche mir aus allen Fundstellen einer PLZ eine gerundete und gewichtete Position errechnet. Die Wichtigkeit einer Positionsangabe ist dabei umso höher, je weniger PLZ-Angaben es für diesen Ort gibt. Denn je weniger PLZ-Angaben es für eine Positionsangabe gibt, desto genauer ist diese wahrscheinlich am tatsächlichen Ort dran.
Mathematische Grundlage:
Wenn es zu einer PLZ 12345 in der OpenGeoDB diese drei Fundstellen gibt:
Ort1, Nord: n1, Ost: o1, PLZ-Liste: p1 = 2 (Elemente)
Ort2, Nord: n2, Ost: o2, PLZ-Liste: p2 = 4 (Elemente)
Ort3, Nord: n3, Ost: o3, PLZ-Liste: p3 = 134 (Elemente)
dann ist offenbar Ort 3 die übergeordnete Großstadt, und Ort 1 und 2 sind Stadtteile, welche teilweise die gesuchte PLZ auch umfassen.
Die Position der PLZ errechne ich jetzt als gewichteten Durchschnitt:
psumme = p1 + p2 + p3
n = ( n1 * (psumme - p1) / psumme
+ n2 * (psumme - p2) / psumme
+ n3 * (psumme - p3) / psumme )
/ (fundstellen - 1)
Dasselbe für die Ostposition.
- Sven Rautenberg