Antworten auf deine Fragen:
Neues Thema erstellen

Plz-Umkreissuche geodb Distanzberechnung

Philipp88

Nicht mehr ganz neu hier

Hallo,
ich habe eine Plz-Umkreissuche, die soweit auch erstmal funktioniert. Jetzt möchte ich allerdings noch die Distanz vom Suchort angeben. Leider funktioniert die Berechnung bei mir noch nicht exakt.

Beispieldaten:
Ich suche im Umkreis von 100 km mit der Postleitzahl 87700 (Memmingen). Als Ergebnis wird mir 87600 (Kaufbeuren) angezeigt. Als Distanz wird mir aber eine nicht realistische Zahl (6671,7 km) ausgegeben.

Die Koordinaten von Kaufbeuren sind:
longitude: 10.6167
latitude: 47.8833
koordx: 4199.5248139112
koordy: 787.18668108547
koordz: 4725.8829298307

Mein PHP-Script:
PHP:
function distance($erdradius, $plz) {
  #echo $plz;
   
        $res = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("plz, longitude, latitude, koordx, koordy, koordz", "tx_implantatelabor_adr", "plz = $plz");
        $num = $GLOBALS["TYPO3_DB"]->sql_num_rows($res);

        for ($i = 0; $i < 1; $i++) {

            $row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res);
            $lon = $row["longitude"];
            $lat = $row["latitude"];
            $koordx = $row["koordx"];
            $koordy = $row["koordy"];
            $koordz = $row["koordz"];

            list($lon, $lat) = $this->plzcoord($plz);
            
            list($x, $y, $z) = $this->kugel2kartesisch($erdradius, $lon, $lat);

#echo "<p>x: $x<br>y: $y<br>z: $z</p>";
            $distance = 2 * $erdradius * asin(sqrt(
                                    pow($x - $koordx, 2)
                                    + pow($y - $koordy, 2)
                                    + pow($z - $koordz, 2)
                            ) / (2 * $erdradius));
#echo "$distance<br>";
#$distance = 4.8556392367201;
            $dist = round($distance, 2);
            
            /*if($dist <= 0.5) {
              $dist = 0.5;
            }*/
            
            $dist = str_replace(".", ",", $dist);
        }
        
        return "ca. $dist km";
    }

function plzcoord($plz) {
   $sql = "SELECT coo.lon, coo.lat FROM geodb_coordinates AS coo INNER JOIN geodb_textdata AS textdata ON textdata.loc_id = coo.loc_id WHERE textdata.text_val = $plz
   AND textdata.text_type = '500300000' LIMIT 1";

   $res = $GLOBALS["TYPO3_DB"]->sql_query($sql);

   $num = $GLOBALS["TYPO3_DB"]->sql_num_rows($res);

   if($num != 1) {
     return false;
   }

   $row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res);

   $lonlat = array($row["lon"], $row["lat"]);

   return $lonlat;
 }

function kugel2kartesisch($erdradius, $lon, $lat) {
    $lambda = $lon * pi() / 180;
    $phi = $lat * pi() / 180;
    $ursprungx = $erdradius * cos($phi) * cos($lambda);
    $ursprungy = $erdradius * cos($phi) * sin($lambda);
    $ursprungz = $erdradius * sin($phi);

    $coord = array($ursprungx, $ursprungy, $ursprungz);

    return $coord;
  }

Es wäre schön, wenn Ihr mir dabei helfen könntet.
Danke im Voraus.
Philipp
 

Philipp88

Nicht mehr ganz neu hier

AW: Plz-Umkreissuche geodb Distanzberechnung

Sorry hab ich nicht mehr gefunden. Ich werde da alle Zwischenergebnisse schreiben. Das Thema kann ja geschlossen werden.
 

randacek_pro

Mod | Forum

AW: Plz-Umkreissuche geodb Distanzberechnung

Übrigens: wenn du deine eigenen Themen nicht findest, dann klick doch auf dein Profil und dort auf den Reiter "Statistiken" und da dann auf den Link .

So findest du deine eigenen Themen ganz schnell wieder (alternativ gleich den Link nehmen und als Lesezeichen ablegen)

:)

Lieber Gruß
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben