Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] openGeoDB - Entfernung zweier PLZ mittels API

Einklappen

Neue Werbung 2019

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

  • [Erledigt] openGeoDB - Entfernung zweier PLZ mittels API

    Hallo,

    wie der Betreff schon sagt möchte ich mittels openGeoDB die Entfernung zweier Städte ermitteln.

    KLappt auch wunderbar!!!

    Allerdings gibt er mir immer 2 Fehlermeldungen aus und ich weiß nicht woran es liegen kann. da es ja eigentlich funktioniert!?

    Php Ausgabe

    PHP-Code:
    require_once("../control/ogdbDistance.lib.php");

    echo 
    "Entfernung: ".ogdbDistance(44369,89079); 
    Der Code für das holen und berechnen der Daten

    PHP-Code:
    <?

    define("OGDB_REMOTE_DATA_FILE","http://fa-technik.adfc.de/code/opengeodb/PLZ.tab");
    define("OGDB_LOCAL_DATA_FILE","./PLZ.tab");

    function ogdbDistance($origin,$destination) {
        if ( !is_file(OGDB_LOCAL_DATA_FILE) || filesize(OGDB_LOCAL_DATA_FILE)==0 ) {
            $fileData = file_get_contents(OGDB_REMOTE_DATA_FILE);
            if ( $fileData == FALSE ) {
                die("ABBRUCH: konnte Daten nicht laden (".OGDB_REMOTE_DATA_FILE.")\n");
            }
            if ( file_put_contents(OGDB_LOCAL_DATA_FILE,$fileData) == FALSE ) {
                die("ABBRUCH: konnte Daten nicht speichern (".OGDB_LOCAL_DATA_FILE.")\n");
            }
            unset($fileData);
        }
        $fileData = @file_get_contents(OGDB_LOCAL_DATA_FILE);
        if ( $fileData == FALSE ) {
            die("ABBRUCH: konnte Daten nicht laden (".OGDB_LOCAL_DATA_FILE.")\n");
        }
        $fileData = explode("\n",$fileData);
        for ( $i=0; $i < count($fileData); $i++ ) {
            $fileRow = explode("\t",$fileData[$i]);
            if ( $origin == $fileRow[0] ) {
                $origin_lon = deg2rad($fileRow[2]);
                $origin_lat = deg2rad($fileRow[3]);
            }
            if ( $destination == $fileRow[0] ) {
                $destination_lon = deg2rad($fileRow[2]);
                $destination_lat = deg2rad($fileRow[3]);
            }
        }
        return acos(sin($destination_lat)*sin($origin_lat)+cos($destination_lat)*cos($origin_lat)*cos($destination_lon - $origin_lon))*6375;
    }
    ?>
    Die Ausgabe ist wie gesagt richitg aber wie bekomme ich die Fehlermeldungen weg!?

    Ausgabe:

    Notice: Undefined offset: 1 in /var/www/www/kunden/10507/dein-geschenk-tisch.de/html/chat/control/ogdbDistance.lib.php on line 24
    Notice: Undefined offset: 1 in /var/www/www/kunden/10507/dein-geschenk-tisch.de/html/chat/control/ogdbDistance.lib.php on line 28
    Entfernung: 397.9428652251

  • #2
    Ich sehe da keinen Offset 1. Offenbar ist das nicht das richtige Script.

    Kommentar


    • #3
      das habe ich mich auch gefragt - komisch ist nur, dass es das richtige ergebniss liefert?!

      Habe es auch mit:

      PHP-Code:
              $fileRow explode("\t",$fileData[$i]); 
              if ( 
      $origin == $fileRow[1] ) { 
                  
      $origin_lon deg2rad($fileRow[2]); 
                  
      $origin_lat deg2rad($fileRow[3]); 
              } 
              if ( 
      $destination == $fileRow[1] ) { 
                  
      $destination_lon deg2rad($fileRow[2]); 
                  
      $destination_lat deg2rad($fileRow[3]); 
              } 
      statt

      PHP-Code:
              $fileRow explode("\t",$fileData[$i]); 
              if ( 
      $origin == $fileRow[0] ) { 
                  
      $origin_lon deg2rad($fileRow[2]); 
                  
      $origin_lat deg2rad($fileRow[3]); 
              } 
              if ( 
      $destination == $fileRow[0] ) { 
                  
      $destination_lon deg2rad($fileRow[2]); 
                  
      $destination_lat deg2rad($fileRow[3]); 
              } 
      probiert:

      Selbes Ergebniss und selbe Fehlermeldung!?!

      Kommentar


      • #4
        Fang doch mal damit an uns zu verraten welches Zeile 24 und 28 sind. Kann auch selber zaehlen, aber meistens ist ja doch nur ein Quellcodeausschnitt der gepostet wird. $fileData[$i] seh ich zumindest schonmal in der Naehe.

        Kommentar


        • #5
          Ich behaupte mal, Du schraubst irgendwie am falschen Script rum.

          Kommentar


          • #6
            Leere Zeile im CSV schaetze ich eher.

            Kommentar


            • #7
              Ich sehe da aber nur einen potentiellen Kandidaten für Offset 1: $fileData[$i]

              Kommentar


              • #8
                24 und 28 sind die zeilen mit if(........filerow[0]) bzw if(........filerow[1])

                Kommentar


                • #9
                  Sag jetzt nicht, DU hast Deine Fehlermeldung vom "Versuch" mit if ( $origin == $fileRow[1] ) { oben gepostet

                  Kommentar


                  • #10
                    Mojn Rutor,
                    ist eigentlich ganz einfach...
                    Das
                    Code:
                    $fileData = explode("\n",$fileData);
                    erzeugt als letzte eine Leerzeile.
                    Das count($fileData) zählt die mit - da gibs aber nichts für das row-explode zu finden.
                    Daher:
                    Code:
                    for ( $i=1; $i < count($fileData)-1; $i++ ) {
                    und alles ist gut...

                    Viele Grüße - Michael

                    Kommentar

                    Lädt...
                    X