Distanzberechnung zweier Orte über Längen und Breitengrade

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von Malchor; 13.10.2009, 12:10.

  • #2
    Dafür gibt es zum Beispiel die Haversine-Formel. Einfach mal nach Googlen, ist recht easy umzusetzen …*bzw. gibts schon tausend mal als Snippet.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      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 = [COLOR=#298604]Erdradius[/COLOR])

      Kommentar


      • #4
        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 …
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Zitat von unset Beitrag anzeigen
          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>&nbsp"."</td>";  
                  print 
          "<td>".$dataset['dep_time']."</td>";
                  print 
          "<td>".$dataset['flughafenid2']."&nbsp;"."</td>";
                  print 
          "<td>".$dataset['arr_time']."&nbsp;"."</td>";
                  print 
          "<td>".$dataset['days']."&nbsp;"."</td>";
                  print 
          "<td>".$dataset['registrierung']."&nbsp;"."</td>";
                  print 
          "<td>".$dataset['hersteller_name']."&nbsp;"."</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?
          Zuletzt geändert von Malchor; 13.10.2009, 12:48.

          Kommentar


          • #6
            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.

            Kommentar


            • #7
              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
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Naja woher soll den PHP wissen welche ID er aus der Tabelle als A und B nehmen soll wenn beide im gleichen Tabellenverzeichnis stehen

                Kommentar


                • #9
                  Na, genau so, wie PHP alles erfährt, was es tun soll: In dem du es sagst!
                  [FONT="Helvetica"]twitter.com/unset[/FONT]

                  Shitstorm Podcast – Wöchentliches Auskotzen

                  Kommentar


                  • #10
                    Dann sag es "ihm" eben.

                    Kommentar


                    • #11
                      Zitat von Malchor Beitrag anzeigen
                      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.
                      Zuletzt geändert von AmicaNoctis; 13.10.2009, 13:08.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Hast du die Koordinaten der Flughäfen denn schon in der Tabelle parat?

                        Kommentar


                        • #13
                          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!

                          Kommentar


                          • #14
                            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 ([FONT="Courier New"]where ... in (...)[/FONT]). 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.
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              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 ....

                              Kommentar

                              Lädt...
                              X