Jogi: PLZ Suche mit Umkreissuche ?

Hallo Leute,

ein Kunde möchte eine PLZ-Suche für Bezugsquellen auf seine
Homepage haben.
Sollte bei einer bestimmten PLZ KEINE Bezugsquelle hinterlegt
sein, so soll die nächste Bezugsquelle in der Nähe angezeigt
werden.
Einfach die PLZ hoch- oder runterzählen geht nicht, da der
Nachbarort ja nicht zwangsläufig eine PLZ-Nummer höher oder
niedriger ist, sondern u.U. auch um 5 oder 10 Nummern abweichen
kann.
Ich denke mal es muss mit Koordinaten oder GPS Daten gehen.

Hat da jemand einen Tipp?

Vielen Dank

Jogi

  1. Oder Du schreibst einen Array in dem zu jeder PLZ die Nachbar-PLZ's stehen.
    ...
    Soviele gibts doch nicht :-)

    Grüße, Matthias

  2. hi,

    ein Kunde möchte eine PLZ-Suche für Bezugsquellen auf seine
    Homepage haben.
    Sollte bei einer bestimmten PLZ KEINE Bezugsquelle hinterlegt
    sein, so soll die nächste Bezugsquelle in der Nähe angezeigt
    werden.
    Einfach die PLZ hoch- oder runterzählen geht nicht, da der
    Nachbarort ja nicht zwangsläufig eine PLZ-Nummer höher oder
    niedriger ist, sondern u.U. auch um 5 oder 10 Nummern abweichen
    kann.

    na ja, dann suchst du vielleicht die nächst-höhere und -niedrigere PLZ raus, und schaust welche von denen weniger "abstand" hat.

    Ich denke mal es muss mit Koordinaten oder GPS Daten gehen.

    wäre auch denkbar, macht die sache aber viel komplizierter. dazu musst du ja erstmal PLZs und koordinaten zuordnen können.
    http://www.opengeodb.de/ könnte weiterhelfen bei der datenbeschaffung.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. 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

  3. yo,

    Hat da jemand einen Tipp?

    ich würde jeder postleitzahl einen geographischen mittelpunkt geben, sprich einen x und y wert. damit läßt sich dann zu jedem anderen geo mittelpunkt einer anderen postleitzahl eine gerade ermitteln und somit deren länge. davon dann den MIN() wert und schon hat man das ergebnis. ist zwar durch den mittelpunkt jedesmal nur eine schätzung, aber sollte dafür reichen.

    Ilja

  4. Hello,

    das habe ich am Jahresanfang schon mal für jemanden gebaut hier. Mit etwas Glück findest Du dazu einen Thread mit dem Link zur Datenbank mit den Gauß-Krüger-Koordinaten. Da reicht dann eine einfache SQL-Abfrage, der man den Radius übergibt und gut ists.

    Schade, ich finde nur den Link für die Liste mit den Breiten- und Längenangaben

    STOP!

    http://www.th-mack.de/download

    Da klicke ich eben drauf und nun ist es eine Guru-Seite.

    Wenn Du die Tabelle haben möchtest, dann maile ich Sie Dir gerne

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  5. Hallo,

    Ich denke mal es muss mit Koordinaten oder GPS Daten gehen.

    Genau so geht das, hab das neulich auch gemacht.
    Zu den Datenbeständen: Versuch's mal bei killetsoft.de.

    Grüße aus Barsinghausen,
    Fabian

    --
    "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>