tmb Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Hallo, ich habe eine Frage zu einer, wie ich finde, komplexen Problemkonstellation. Sicher ist dieses Thema bereits mehrfach im Internet zu finden, jedoch würde ich gerne Eure persönliche Meinung zu diesem Thema wissen: Es gibt ca. 30 MySQL Tabellen in meinem Projekt, die Ortsangaben enthalten. Ich habe zuerst den Namen als varchar in den einzelnen Tabellen hinzugefügt. Nun soll jedoch eine Umkreissuche verwendet werden, welches ein Problem bei mehrfach Ortsnamen aufwirft. Also habe ich mir gedacht, die Zeilen der Ortsangabe als Tabelle mit Postleitzahl und Längen und Breitengrad als eigene Tabelle auszulagern und den Ort dann als ForeignKey zu setzen. Nach der Recherche zu googleMaps und OpenGeoDb ist mir dann aufgefallen, dass ich viele Daten bereich als dumP erhalte, und somit doppelanfragne zu googlemaps verhindern kann, wenn diese bereits in meiner DB liegen. In Hinblick auf internationale Orte, stellt dieses aber ein großes Problem dar - die Tabelle wird riesig und Wartung und Aktualisierung werden sehr komplex. Was wäre eure Intention zu diesem Problem? Wir machen dieses andere Großprojekte? Vielen Dank für Eure Tipps und Anregungen!!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pixie Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Mein Ansatz wäre eine Aufteilung. Ich würde Deutschland und ggf. Länder, in denen die Firma Geschäftskontakte hat, offline vorhalten und für alles andere einen Webservice nutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Wenn Du eh einen Service wie GoogleMaps benutzt, warum willst Du die Daten dann lokal vorhalten? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tmb Geschrieben 19. Oktober 2011 Autor Teilen Geschrieben 19. Oktober 2011 Um die Anzahl der Abfragen auf dauer zu minimieren. google setzt bei großer Abfrage ein limit und danach wird die Nutzung sehr teuer. Die Daten von OpenGeoDb sind ja relativ gut aufbereitet! Zumal wenn ich nur auf googleMaps aufbaue, muss ich die Daten ja auch irgendwie speichern. Was schlägst du dort vor? Also der User gibt praktisch den Namen seiner Stadt ein, ggf. mit PLZ. Dann gibt mir googleMaps API die Längen- und Breitengrade zurück - diese speicher ich dann? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pixie Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 diese speicher ich dann? Wozu? Brauchst Du sie auch später wieder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tmb Geschrieben 19. Oktober 2011 Autor Teilen Geschrieben 19. Oktober 2011 ja,bei einer internen suche - um ziele einzugrenzen. Jeder User kann auf diese Suche zugreifen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pixie Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Öhm... wie jetzt? Du hast zuerst eine Suche mit variabler Quelle und danach soll jede schon einmal durchgeführte Suche zur Eingrenzung weiterer interner Suchen verwendet werden können? Oder habe ich das jetzt falsch verstanden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Das Vorgehen funktioniert auf Dauer nicht, denn wenn Du eine Suche zu dem Ort X durchführst, dann kannst Du nur cachen, was Du für diese Suche gefunden hast. Selbst wenn eine zweite Anfrage zu dem Ort X statt findet und sich nur ein Suchparameter ändert, musst Du eine neue Abfrage an den Service senden. Entweder besorgst Du Dir die Geodaten und implementierst alles selbst oder Du musst eben den Webservice abfragen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tmb Geschrieben 19. Oktober 2011 Autor Teilen Geschrieben 19. Oktober 2011 Alles klar. @Pixie: Fast. Ich dachte halt, wenn ich nach "Berlin" suche, frage ich einmalig googeMaps nach den Koordinaten ab, speicher Sie dann in einer Tablelle z.B. locations, mit allen googlemaps Daten. Jetzt kann ich ja mit folgender Formel: var x = 2 * $Erdradius * arcsin( sqrt( pow($x1 - $x2, 2) // Hinweis: pow($Basis, $Exponent) berechnet + pow($y1 - $y2, 2) // "$Basis hoch $Exponent". + pow($z1 - $z2, 2) // Hier also "($z1 - $z2)^2" ) / (2 * $Erdradius) ); In meinen anderen Tabellen suchen. Sucht nun eine weitere Person nach "Berlin", entnehme ich die Daten aus meiner Datenbank. Klingt für mich nun auch sehr kompliziert - die Frage ist halt, obs sinnvoll und performant läuft, ich habe gut 1.2 mio Ortsangaben mit PLZ in verschiedenen Tabellen, deshalb die Umstrukturierung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Diese Methode berücksichtigt kein Änderungen der Daten, d.h. wurde einmal nach Berlin gefragt, dann hast Du ggf irgendwann INformationen in Deiner Datenbank, die nicht mehr aktuell sind, weil Du sie nicht abgleichst. Zusätzlich bekommst Du Duplikate, die sich nicht eindeutig zuordnen lassen. Wenn Du nach Berlin suchst und das Ergebnis speicherst, dann einen Ort in der Nähe von Berlin als Suche nimmst, dann erhältst eine überlappende Ergebnismenge Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tmb Geschrieben 19. Oktober 2011 Autor Teilen Geschrieben 19. Oktober 2011 ja, Aktualität ist das Problem. Ich weiß nicht, ob ich mich richtig ausgedrückt habe @flashpixx. Ich wollte nicht das Ergebnis speichern, sondern nur die geolocations, die ich von googe bekomme. Geolocation API - Gears API - Google Code Somit habe ich irgendwann eine Basis von Städten und Adressen, die immer wieder auftreten und den Umkreis kann ich ja mit der oberen Formel berechnen, somit dachte ich, erhalte ich eine schnelle Lösung, die auch mit wenigen WebService abfragen funktioniert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 19. Oktober 2011 Teilen Geschrieben 19. Oktober 2011 Ich wollte nicht das Ergebnis speichern, sondern nur die geolocations, die ich von googe bekomme Selbst diese ändern sich, wenn Du z.B. alle Hotels im Umkreis von 50km von einem Ort suchst, dann kann es passieren, dass Hotels nicht mehr existieren oder anders heißen usw. D.h. bei Deiner Umkreissuche wäre eben der Datenstand nicht immer aktuell. Rein technisch würde man die Geokoordinaten der Orte und der Hotels speichern und dann entsprechend aus der Datenbank lesen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.