| Projekthilfe Hier könnt Ihr eine Art Projekthilfe anfordern. Unter Projekthilfe verstehen wir Angebote bei denen KEIN Geld gezahlt werden kann. |
 |
|

13-10-2009, 13:05
|
|
Malchor
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 40
|
|
Distanzberechnung zweier Orte über Längen und Breitengrade
Ich habe mal eine Frage, ich bin, wie einigen ja sicher schon bekannt, noch ein relativer Anfänger. Ich habe bereits zu diesem Thema gegoogelt, aber leider noch nicht wirklich was hilfreiches gefunden.
Ich möchte die Distanz zwischen zwei Orten, in meinem Fall zwei Airports ausrechnen lassen via PHP und diese dann von Kilometern in nm (nortische Meilen) umwandeln.
In der Datenbank habe ich bereits die Tabellengeschaffen und gefüllt für die Koordinaten.
flughafenid flughname lat Breite lon Länge
EBAW Antwerp 51.1894 4.4602
EBBE Beauvechain 50.7586 4.7683
Leider habe ich nicht den blassesten Schimmer wie ich das umsetzen soll. Da ich ja die Distanz zu einem anderen Airport haben möchte muss ich ja beide Koordinaten irgendwie einbauen.
Kann mir jemand verraten wie man das macht oder mir ein idotensicheres Tutorial geben?
Wäre super dankbar
Geändert von Malchor (13-10-2009 um 13:10 Uhr)
|

13-10-2009, 13:10
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.769
|
|
Dafür gibt es zum Beispiel die Haversine-Formel. Einfach mal nach Googlen, ist recht easy umzusetzen …*bzw. gibts schon tausend mal als Snippet.
|

13-10-2009, 13:14
|
|
Malchor
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 40
|
|
Dasheißt ich arbeite nur mit diesen Daten?
aber wie bekomme ich da die beiden Städte so deffiniert da sie beide in der flughafeb_id Spalte stehen!
dlon = B_lon - A_lon
dlat = B_lat - A_lat
a = (sin(dlat/2))^2 + cos(A_lat) * cos(B_lat) * (sin(dlon/2))^2
c = 2 * arcsin(min(1,sqrt(a)))
d = R * c
(R = Erdradius)
|

13-10-2009, 13:17
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.769
|
|
Was? Bitte gib dir etwas mehr Mühe beim beschreiben deines Problems. Ich weiß gar nicht, was für Städte du plötzlich meinst und was die Spalte "flughafenb_id" sein soll …
|

13-10-2009, 13:25
|
|
Malchor
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 40
|
|
Zitat:
Zitat von unset
Was? Bitte gib dir etwas mehr Mühe beim beschreiben deines Problems. Ich weiß gar nicht, was für Städte du plötzlich meinst und was die Spalte "flughafenb_id" sein soll …
|
Also wie oben geschrieben möchte ich die Distanz zweier Flughäfen zueinander ausrechen lassen.
Das oben ist ein Auszug aus der Datenbank!
der PHP Code in den ich das einbauen möchte lautet wie folgt:
PHP-Code:
<?php $flugnummer = isset($_GET['flugnummer']) ? $_GET['flugnummer'] : null; $abfrage = "SELECT `piloten`.`pilot_id` , `Flugplan`.`flughafenid1` , `Flugplan`.`dep_time` , `Flugplan`.`flughafenid2` , `Flugplan`.`arr_time` , `Flugplan`.`flugnummer`,`Flugplan`.`days`,`Flugplan`.`registrierung` , `Flugplan`.`hersteller_name` FROM piloten, Flugplan WHERE(pilot_id = '$pilot_id') AND(flugnummer = '$flugnummer')"; $ergebnis = mysql_query($abfrage); if ($ergebnis) { print "<table border=\"0\" cellspacing=\"2\" ". "cellpadding=\"5\" WIDTH=\"75\%\" class=\"tableLine\">\n";
print "<tr><th>Flugnummer</th><th>Abflugzeit</th><th>Zielflughafen</th>"; print "<th>Ankunftszeit</th><th>Flugtage</th><th>Flugzeugregistrierung</th><th>Flugzeug</th></tr>\n"; while ($dataset = mysql_fetch_array($ergebnis))
{ print "<tr>"; print "<td>".$dataset['flugnummer']."</a> "."</td>"; print "<td>".$dataset['dep_time']."</td>"; print "<td>".$dataset['flughafenid2']." "."</td>"; print "<td>".$dataset['arr_time']." "."</td>"; print "<td>".$dataset['days']." "."</td>"; print "<td>".$dataset['registrierung']." "."</td>"; print "<td>".$dataset['hersteller_name']." "."</td>";
print "</tr>\n"; } print "</td></tr>\n"; print "</table>\n"; }
?>
Und da ich ja weils die Abkürzung in der Flugäfen in derTabelle Flughafen_id drin stehen habe muss ich die ja wahrscheinlich unterschiedlich deklarieren, oder sehe ich das falsch?
Geändert von Malchor (13-10-2009 um 13:48 Uhr)
|

13-10-2009, 13:40
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Lies unsere Regeln, brich deinen Code um und formuliere dein Problem so, dass Außenstehende es nachvollziehen können!
Vielleicht möchtest du dich über JOIN (SQL) informieren.
|

13-10-2009, 13:44
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.463
|
|
Hallo,
ich hab es mir grad drei mal durchgelesen und verstehe es immer noch nicht. Was musst du unterschiedlich deklarieren? Und unterschiedlich wozu?
Gruß,
Amica
|

13-10-2009, 13:48
|
|
Malchor
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 40
|
|
Naja woher soll den PHP wissen welche ID er aus der Tabelle als A und B nehmen soll wenn beide im gleichen Tabellenverzeichnis stehen
|

13-10-2009, 13:50
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.769
|
|
Na, genau so, wie PHP alles erfährt, was es tun soll: In dem du es sagst!
|

13-10-2009, 13:51
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Dann sag es "ihm" eben.
|

13-10-2009, 13:51
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.463
|
|
Zitat:
Zitat von Malchor
Naja woher soll den PHP wissen welche ID er aus der Tabelle als A und B nehmen soll wenn beide im gleichen Tabellenverzeichnis stehen
|
Das wirst du PHP doch bestimmt sagen, indem du deine Distanzfunktion mit 2 IDs aus der Tabelle aufrufst. Ob die jetzt aus einer Tabelle kommen oder aus zwei verschiedenen oder du dir die grad selbst ausgedacht hast ist doch der Distanzfunktion egal, oder?
Edit: Sorry, ich muss einfach diesen Vergleich noch loswerden:
Hast du auch beherzigt, was onemorenerd dir bereits über Joins gesagt hat? Das was du grad mit der DB machst ist, als ob du mit 20 Einkaufswagen und einem vollen Kasten Bier einen Supermarkt stürmst, von jedem einzelnen Produkt eins einpackst, einen Kasten Bier nimmst, der genau so aussieht wie dein mitgebrachter, an die Kasse gehst, alles bezahlst, draußen auf dem Parkplatz alles wegwirfst, was du gar nicht haben wolltest und auf diesen Haufen den mitgebrachten Bierkasten stellst, weil du ja jetzt denselben nochmal hast.
Geändert von AmicaNoctis (13-10-2009 um 14:08 Uhr)
|

13-10-2009, 15:59
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Hast du die Koordinaten der Flughäfen denn schon in der Tabelle parat?
|

13-10-2009, 23:06
|
|
Malchor
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 40
|
|
Und genau das "ihm" sagen ist mein Problem. Ich weiß überhaupt nicht wie ich das angehen soll und dann noch die Koordinatenberechnung mit einbinden soll.
Währe nett wenn einer von euch mir mit Scriptschnipseln helfen könntet.
Die Kooardinaten sind eingepflegt ja!
|

13-10-2009, 23:46
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.463
|
|
Du hast eine Funktion, welche die Distanz zwischen zwei Punkten berechnet. Also sollte sie mit 2 Punkten aufgerufen werden, oder - der Einfachheit halber - mit vier Komponenten (lat1, lon1, lat2, lon2). Die bekommst du aus der Datenbank, wenn du ein Select auf die beiden IDs machst (where ... in (...)). Ich sehe da keine besondere Schwierigkeit, vielleicht ist es daher besser, dass du nochmal ganz genau formulierst, wo es denn jetzt hapert, wie, warum und wann.
|

14-10-2009, 00:38
|
|
Peacie
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 341
|
|
Ansatz für EIN sql query:
Code:
select *,
DEGREES(ACOS(SIN(RADIANS(DBLATFELD))
*SIN(RADIANS(".$LAT_Flugplatz1."))
+COS(RADIANS(DBLATFELD))
*COS(RADIANS(".$LAT_Flugplatz1."))
*COS(RADIANS(DBLONFELD - ".$LON_Flugplatz1."))) * 60 * 1.85201)
AS Entfernung from DATENBANK
where flugplatzid = flugplatz2id
so in die Richtung ....
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|