AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ort anhand der PLZ füllen - ?OpenGeoDB?

Ein Thema von baumina · begonnen am 11. Sep 2013 · letzter Beitrag vom 13. Sep 2013
Antwort Antwort
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Ort anhand der PLZ füllen - ?OpenGeoDB?

  Alt 12. Sep 2013, 06:17
Dort stehen aber nicht alle Orte drin. Meinen Ort kann ich unter meiner PLZ nicht finden. Es wird ein größerer Ort ca. 15 km entfernt gezeigt.
Aber besser als gar nichts.
Also wenn man unter bearbeiten der Datenbestände sucht, ist dein Ort bestimmt dabei. Irgendwie scheint die PLZ.tab der OpenGeoDB alleine nicht ausreichend zu sein.

Wenn's was kosten darf, dann ist die Post mit ihren Daten sicherlich immer die erste und beste Quelle.
Ich befürchte kosten darfs nix
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ort anhand der PLZ füllen - ?OpenGeoDB?

  Alt 12. Sep 2013, 06:36
Dort stehen aber nicht alle Orte drin. Meinen Ort kann ich unter meiner PLZ nicht finden. Es wird ein größerer Ort ca. 15 km entfernt gezeigt.
Aber besser als gar nichts.
Also wenn man unter bearbeiten der Datenbestände sucht, ist dein Ort bestimmt dabei. Irgendwie scheint die PLZ.tab der OpenGeoDB alleine nicht ausreichend zu sein.
Ja, unter dem Ort kann ich dann meine PLZ finden.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Ort anhand der PLZ füllen - ?OpenGeoDB?

  Alt 12. Sep 2013, 10:49
Also wenn man unter bearbeiten der Datenbestände sucht, ist dein Ort bestimmt dabei. Irgendwie scheint die PLZ.tab der OpenGeoDB alleine nicht ausreichend zu sein.
Wenn man diesem Link folgt, sieht man unten, unter den Eingabemöglichkeiten, einen Link Dateien. Dem kann man folgen und bekommt eine Liste der verfügbaren Dateien, dies sind einige Datendateien und etliche SQL-Scripte. Unter Anderem findet man dort die DE.tab. Diese enthält auch den "vermissten" Ort. Sie hat aktuell den Stand vom 8.9.2013. Allerdings scheint sie unter Postleitzahlenkriterien nicht vollständig zu sein. Mein Wohnort hat mehrere Postleitzahlen, in dieser Datei ist aber nur eine dieser Postleitzahlen zu finden.
Meine Vermutung ist momentan: Die Datei DE.Tab enthält alle Orte mit ihrer "Hauptpostleitzahl", während die PLZ.tab alle weiteren Postleitzahlen zu den Orten enthält. Es wird also für eine Nachschlagtabelle eine Kombination aus diesen beiden Dateien benötigt.

Schaut man sich alle Dateien unter o. g. Link an, so findet man (vermutlich) die vollständigen Scripte, um sich eine MySQL-Datenbank aufzubauen (einschließlich der Create-Table...-Statements) und kann sich damit seine eigene OpenGeoDB erstellen.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ort anhand der PLZ füllen - ?OpenGeoDB?

  Alt 12. Sep 2013, 12:31
Danke an Euch alle, die sich mit mir den Kopf zerbrochen haben und für die, die eine ähnliche Lösung suchen.

Meine Lösung sieht nun folgendermaßen aus:

Ich habe beschlossen die gesamte OpenGeoDB via Dump als eigene DB in mein mySQL zu nehmen. Mein select, um den Ort via PLZ zu suchen sieht folgendermaßen aus:

SQL-Code:
SELECT Ort.text_val
  FROM opengeodb.geodb_textdata PLZ
  JOIN opengeodb.geodb_locations LPLZ
    ON (PLZ.loc_id = LPLZ.loc_id)
  JOIN opengeodb.geodb_hierarchies HPLZ
    ON (PLZ.loc_id = HPLZ.loc_id)
  JOIN opengeodb.geodb_textdata Ort
    ON (PLZ.loc_id = Ort.loc_id)
  JOIN opengeodb.geodb_textdata Land
    ON (HPLZ.id_lvl2 = Land.loc_id)
 WHERE PLZ.text_val = '<gesuchte PLZ>'
   AND Land.text_val = '<gesuchte Länderkennung>' // D(Deutschland), A(Österreich), CH(Schweiz), B(Belgien), FL(Lichtenstein)
   AND Ort.text_locale = 'de' // deutscher Name des Ortes
   AND PLZ.text_type = 500300000 // 500300000=PLZ
   AND LPLZ.loc_type = 100600000 // 100600000=Politische Gliederung (weil ich die ganzen Teilorte nicht haben mag) ansonsten
                                 // 100800000=Postleitzahlgebiet mit allen Teilorten
   AND Ort.text_type = 500100000 // 500100000=Ortsname
   AND Land.text_type = 500500000 // 500500000=Länderkennung
 ORDER BY Ort.text_val;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)

Geändert von baumina (13. Sep 2013 um 10:15 Uhr)
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Ort anhand der PLZ füllen - ?OpenGeoDB?

  Alt 13. Sep 2013, 10:45
OpenGeoDB ist immer so ein Thema. Theoretisch steht alles drin, aber teilweise auch einfach doppelt und manchmal in der falschen Hierarchieebene. Mein Favorit ist der Eintrag "überhprüft das eigentlich irgendwer".
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz