Forum » Programiranje » [PHP] Razdalja med dvema koordinatama
[PHP] Razdalja med dvema koordinatama

tx-z ::
Uporabil sem tole formulo za izračun razdalje med dvema koordinatama
Kar mi vrne nekaj, kar ne vem kaj je. Če vnesem iste koordinate za prvo in drugo točko dobim distanco ~1119km. Razdalja bi morala biti blizu 0.0km. Je kdo že delal kaj podobnega in ma kakšno rešitev, ki deluje?
function vincentyGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo){
$earthRadius=6372797;
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
$lonDelta = $lonTo - $lonFrom;
$a = pow(cos($latTo) * sin($lonDelta), 2) +
pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
$b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);
$angle = atan2(sqrt($a), $b);
//return $angle * $earthRadius;
return number_format(($angle * $earthRadius) / 1000, 3, '.', '');
}
Kar mi vrne nekaj, kar ne vem kaj je. Če vnesem iste koordinate za prvo in drugo točko dobim distanco ~1119km. Razdalja bi morala biti blizu 0.0km. Je kdo že delal kaj podobnega in ma kakšno rešitev, ki deluje?
tx-z

Yacked2 ::
a gre za prostor v ravnini ali v prostoru ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Roadkill ::
Poglej si tole kodo za referenco:
http://www.johndcook.com/python_longitu...
Teli tvoji kvadrati mi ne grejo v račun.
http://www.johndcook.com/python_longitu...
Teli tvoji kvadrati mi ne grejo v račun.
Ü

tx-z ::
Uff, sintaktični škrat v kodi :) latitude v to sm mu napačno dajal..No sej pol to je to; če pa kdo dobi še kakšno bolšo varianto se pa priporočam.
tx-z

Roadkill ::
#!/usr/bin/python
import math
def distance(lat1, lon1, lat2, lon2):
radius = 6371
dlat = math.radians(lat2-lat1)
dlon = math.radians(lon2-lon1)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
b = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
return radius * b
Meni tole dela prav.
Ü
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Java[kotne funkcije]Oddelek: Šola | 726 (682) | Mesar |
» | C# NMEA podatki iz GPS-jaOddelek: Programiranje | 1033 (834) | krneki0001 |
» | [C#]Analogna uraOddelek: Programiranje | 2834 (2471) | cekr |
» | WPF 3d prostor - Spotlight, ne znam uporabljatOddelek: Programiranje | 1769 (1529) | Tutankhamun |
» | Javascript problemOddelek: Izdelava spletišč | 1290 (1154) | fx |