![]() |
|
|
Themen-Optionen |
|
|
#1
|
|
Member
![]() ![]() Registriert seit: 18.06.2012
Beiträge: 106
|
PLZ- UmkreissucheHallo ihr,
für mein Projekt muss ich eine PLZ- Umkreissuche realisieren welches die Ergebnisse der unmittelbaren Umgebung anzeigt. Dazu habe ich die PLZ- Datenbank von Geodb genommen. Jetzt habe ich versucht das Beispiel von GEODB abzuarbeiten. Mein PHP- CODES ist jetzt: PHP-Code:
Code:
SELECT adressen.*, coo.loc_id, coo.lon, coo.lat FROM tx_implantateadressen_adr AS adressen INNER JOIN geodb_textdata AS textdata ON textdata.text_val = adressen.plz AND textdata.text_type = '500300000' INNER JOIN geodb_coordinates AS coo ON textdata.loc_id = coo.loc_id WHERE (2 * 6371) * ASIN(SQRT(POWER(3890.3007065438 - 6371 * COS(coo.lat * PI() / 180) * COS(coo.lon * PI() / 180), 2) + POWER(951.95052658408 - 6371 * COS(coo.lat * PI() / 180) * SIN(coo.lon * PI() / 180), 2) + POWER(4954.6938964583 - 6371 * SIN(coo.lat * PI() / 180), 2) ) / (2 * 6371)) <= 100 Sind die Berechnung zu lang, wenn ja wie kann ich sie per PHP machen? Im Tutorial steht als nächster Schritt, das man in der Haupttabelle noch die Spalten lon, lat, koordx, koordy und koordz hinzufügen soll. Wie bekomme ich aber die Werte da hinein? Würde mich auf eure Hilfen sehr freuen. Philipp Geändert von Philipp88 (04.07.2012 um 21:08 Uhr). |
|
|
|
#2
|
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Du nimmst dieses Tutorial, stimmts?
Zitat:
Ich weiß nicht, wie viele Einträge in der GeoDB-Tabelle sind, aber die Entfernungsabfrage muss ja für jeden Eintrag diese Berechnung durchführen. Ich bezweifle aber, dass das mehr als ein paar Sekunden dauern würde (naja, stark abhängig von dem MySQL-Server). An deiner Stelle würde ich a) es erstmal ohne das WHERE versuchen, dann muss er nur Daten holen und das sollte sehr fix funktionieren b) alternativ die Anzahl der Datensätze reduzieren und dort messen wie lange es für x viele Zeilen braucht (vielleicht hilft hier EXPLAIN) c) alternativ die Klasse in dem Tutorial nutzen (die ja schon optimiert wurde) Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
|
#3
|
|
Member
![]() ![]() Themenstarter
Registriert seit: 18.06.2012
Beiträge: 106
|
@Duddle ja das Tutorial hab ich genommen und jetzt läuft es mit der Optimierung
|
|
|
|
#4
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Das ist eine der Fragen im Fragen und Antworten-Bereich des Tutorials.
Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#5
|
|
Member
![]() ![]() Themenstarter
Registriert seit: 18.06.2012
Beiträge: 106
|
Ich habe die Berechnung der Distanz in einer seperaten Funktion getan.
Leider berechnet er mir für jede PLZ eine unrealistische Entfernung aus... PHP-Code:
1.5402783496429E-11 Wenn ich das via Google-Maps vergleiche, sind da nur 4,5km Entfernung. Was ist da verkehrt? $plz ist der Ursprung. $plz2 sind die ganzen PLZ von der Datenbank mit den ganzen Koordinaten. |
|
|
|
#6
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Könntest du bitte alle benutzten Zwischenwerte ausgeben? Ich möchte nicht das ganze Ding aufsetzen um den Berechnungen folgen zu können.
Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#7
|
|
Member
![]() ![]() Themenstarter
Registriert seit: 18.06.2012
Beiträge: 106
|
Hier mal die Daten zwischen PLZ 01067 und PLZ 01127 Dresden.
Diese Daten kommen von meiner Tabelle für die PLZ 01127: Der Erdradius ist 6371. Code:
plz: 01127 koordx 3890.3007065438 koordy 951.95052658408 koordz 4954.6938964583 Code:
lon: 13.75 lat: 51.05 ursprungx: 3890.3007065438 ursprungy: 951.95052658408 ursprungz 4954.6938964583 |
|
|
|
#8
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Fällt dir nicht auf, dass die x, y und z-Koordinaten von beiden PLZ gleich sind?
Entweder stehen die falsch in der DB drin oder in deiner Logik ist ein Fehler. Ersteres kannst du leicht mit phpMyAdmin o.ä. überprüfen, letzteres mit nachvollziehen/debuggen der Zwischenschritte in den Berechnungen. Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#9
|
|
Member
![]() ![]() Themenstarter
Registriert seit: 18.06.2012
Beiträge: 106
|
Nach Stundenlager suche habe ich nun den Fehler:
In der geodb haben die PLZ von Dresden den selben lon bzw. lat Wert Ist die geodb fehlerhaft oder gabs beim Inport bei mir nen Fehler? |
|
|
|
#10
|
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Auch das ist eine Frage im Frage und Antworten-Bereich des Tutorials.
Zitat:
Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
|
#11
|
|
Newbie
![]() Registriert seit: 02.10.2012
Beiträge: 1
|
Hallo, ich habe mal ein PLZ Umkreissuche Script fuer USA/Canada geschrieben. Das sollte sich leicht an eine deutsche PLZ Datenbank anpassen lassen.
Hier der Code: PHP-Code:
Ich habe sehr gute Erfahrung mit http://www.plz-umkreis.com gemacht. Ist zwar nicht umsonst, aber die Daten sind top. Ich denke fuer ein kommerzielles Projekt empfehlenswert. |
|
|
|
#12
|
|
Member
![]() ![]() Themenstarter
Registriert seit: 18.06.2012
Beiträge: 106
|
Ich habe es jetzt selber hinbekommen, dass die Distanz richtig berechnet wird und angezeigt wird (der Fehler war, dass die Werte nicht richtig übergeben wurden).
Doch jetzt hab ich das Problem, dass innerhalb einer Ortschaft (Essen) die Distanz nicht berechnet wird. Ich weiß, dass dazu schon Kommentiert wurde. Allerdings zeigt die Originalseite die Distanzen konkret innerhalb einer Ortschaft an. Siehe: http://www.implantate.com/index.php?...orm&Itemid=564 Die Postleitzahl, die ich von Essen bei der Suche eingegeben habe,lautet: 45127. Somit wird eine Distanz zum nächsten Labor von etwa 11 km angezeigt. Auf der aktuellen Seite wird zur Zeit 0 km angezeigt. Vielleicht hat doch noch jemand eine Lösung für dieses Problem. |
|
|
|
#13
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Wie eine fehlerhafte Schallplatte wiederhole ich mich, wiederhole ich mich: gib alle verfügbaren Daten für deine Berechnungen und deinen Algorithmus an. "Raten" ist kein effizienter Weg zu einer Lösung.
Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
|
#14
|
|
Member
![]() ![]() Themenstarter
Registriert seit: 18.06.2012
Beiträge: 106
|
Hallo,
ja sry, ich wusste nicht das die daten für das Problem noch von bedeutung sind, da ja wie gesagt die Distanz über größere Entfernung korrekt berechnet wird. Nur eben nicht innerhalb einer Ortschaft (Essen z.B.). also hier die Ausgegeben Werte (gesuchte PLZ: 45127): Code:
Von DB PLZ 45219: koordx: 3939.6446407457, koordy: 484.33092653183, koordz: 4983.3989061933 meine gesuchte PLZ 45127: lon: 7.00864483062742, lat: 51.4624880801468 ursprung_x: 3939.6446407457, ursprung_y: 484.33092653183, ursprung_z: 4983.3989061933 |
|
|
|
#15
|
|
|
Posting-Frequenz: 14µHz
![]() ![]() ![]() ![]() ![]() Registriert seit: 03.02.2006
Ort: Dresden
Beiträge: 3.225
|
Zitat:
Wenn du nur ungenaue Daten hast, kannst du nur ungenaue Ergebnisse berechnen. In der Informatik gibt es keine Magie. Entweder hat deine verlinkte Seite also mehr oder sie benutzt andere Daten. Duddle
__________________
»To a cosmologist, a hundred thousand light-years rounds down to zero.« - RobotRollCall |
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| (Wordpress) PLZ - Umkreissuche - Plugin | micr0 | WordPress | 2 | 11.04.2012 13:41 |
-
Reklame
-
-
- Von Premium WordPress Themes leben?
- [WIP] - Ron21rn - Showroom
- Eure schönsten Frühlingsbilder 2013 [Sammelthread]
- Schaltfläche zum Beenden in PDF
- Suche Homepage mit Darstellung von Blende und Brennweite
- Wacom Pen&Touch unter Photoshop nur punkte
- [Showroom] Alice2005
- 72. Foto-Contest - "Gegenlicht" [WIP]
- Objekt größer und kleiner, Textur???
- Hochzeitsunterlagen erstellen
- [Showroom] - Reitzvoll
- Flugzeuge fotografieren
- Bringt mir dieses Objektiv etwas?
- Fotospots Berlin
- Wacom an zwei Monitoren
- Heute Morgen um 6 Uhr...
- Rauch-Fotografie: Gemeinschafts-Thread
- Bilder des Oldenburger Stammtisches
- Makros Calendar Wizard in CD X6
- Fotorücksack / Erfahrungen?
-
-
Aktuelles Commag
Anzeige
-
Anzeige










Social Media