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 * bMeni tole dela prav.
Ü
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Java[kotne funkcije]Oddelek: Šola | 803 (759) | Mesar |
| » | C# NMEA podatki iz GPS-jaOddelek: Programiranje | 1107 (908) | krneki0001 |
| » | [C#]Analogna uraOddelek: Programiranje | 2987 (2624) | cekr |
| » | WPF 3d prostor - Spotlight, ne znam uporabljatOddelek: Programiranje | 1829 (1589) | Tutankhamun |
| » | Javascript problemOddelek: Izdelava spletišč | 1349 (1213) | fx |