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 | 680 (636) | Mesar |
» | C# NMEA podatki iz GPS-jaOddelek: Programiranje | 976 (777) | krneki0001 |
» | [C#]Analogna uraOddelek: Programiranje | 2748 (2385) | cekr |
» | WPF 3d prostor - Spotlight, ne znam uporabljatOddelek: Programiranje | 1730 (1490) | Tutankhamun |
» | Javascript problemOddelek: Izdelava spletišč | 1253 (1117) | fx |