Kom ihåg mig?
Home Menu

Menu


Problem med Long/Lat uträkningar

Ämnesverktyg Visningsalternativ
Oläst 2004-04-05, 17:28 #1
lorens lorens är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2003
Inlägg: 24
lorens lorens är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2003
Inlägg: 24
Hejsan...

Jag försöker räkna ut avståndet mellan två Long/Lat punkter men får inte fram avstånden som jag bör få fram! Vet inte vad jag gör fel...

Koden är baserad på följande formel: http://jan.ucc.nau.edu/~cvm/latlon_formula.html
(Fungerande avståndsräknare av samma person finns på http://jan.ucc.nau.edu/~cvm/latlongdist.html

Koden jag använder är följande:

Kod:
	// Define variables for the calculation
	$dist = 0; 	// Distance between source/destination
	$rad_km = 6378; // Earth Radius in kilometers
	$rad_smi = 3963.1;	// Earth Radius in statue miles
	$rad_nmi = 3443.9;	// Earth Radius in nautical miles

	// CONVERT LAT/LONG TO RADIANS!!!!!!!!!!!!!!!!!!!!!!!!!!!1
/*
Source Latitude: 373700N -- 37.6166666667
Source Longitude: 1222200W -- 122.366666667
Destination Latitude: 484400N -- 48.7333333333
Destination Longitude: 022300E -- 2.38333333333
*/
	$slat_deg = 37;
	$slat_min = 37;
	$slat_sec = 0;
	$slat_ns = "N";
	$slon_deg = 122;
	$slon_min = 22;
	$slon_sec = 0;
	$slon_we = "W";
	$dlat_deg = 48;
	$dlat_min = 44;
	$dlat_sec = 0;
	$dlat_ns = "N";
	$dlon_deg = 2;
	$dlon_min = 23;
	$dlon_sec = 0;
	$dlon_we = "E";

	$slat_dec = $slat_deg + ( ( $slat_min + ( $slat_sec / 60 ) ) / 60 );
	$slon_dec = $slon_deg + ( ( $slon_min + ( $slon_sec / 60 ) ) / 60 );
	$dlat_dec = $dlat_deg + ( ( $dlat_min + ( $dlat_sec / 60 ) ) / 60 );
	$dlon_dec = $dlon_deg + ( ( $dlon_min + ( $dlon_sec / 60 ) ) / 60 );
	if( $slat_ns == "S" OR $slat_ns == "s" ) {
 $slat_dec = $slat_dec * -1;
	}
	if( $dlat_ns == "S" OR $dlat_ns == "s" ) {
 $dlat_dec = $dlat_dec * -1;
	}
	if( $slon_we == "W" OR $slon_we == "w" ) {
 $slon_dec = $slon_dec * -1;
	}
	if( $dlon_we == "W" OR $dlon_we == "w" ) {
 $dlon_dec = $dlon_dec * -1;
	}
	$slat_rad = deg2rad( $slat_dec );
	$slon_rad = deg2rad( $slon_dec );
	$dlat_rad = deg2rad( $dlat_dec );
	$dlon_rad = deg2rad( $dlon_dec );

	echo "<p>slat: $slat_dec, slon: $slon_dec,".
 " dlat: $dlat_dec, dlon: $dlon_dec</p>";
	echo "<p>slat (rad): $slat_rad, slon (rad): $slon_rad,".
 " dlat (rad): $dlat_rad, dlon (rad): $dlon_rad</p>";

	$dist = acos(cos($slat_rad)*cos($dlat_rad)*cos($slon_rad)*cos($dlon_rad) + cos($slat_rad)*sin($dlat_rad)*cos($slon_rad)*sin($dlon_rad) + sin($slat_rad)*sin($slon_rad)) * $rad_km;
	echo "<p>Distance (Rad): $dist</p>";

	//	Arccos[
	// Cos[a1] Cos[b1] Cos[a2] Cos[b2] +
	// Cos[a1] Sin[b1] Cos[a2] Sin[b2] +
	// Sin[a1] Sin[a2]
	//	] * r
	// Testar ett annat sätt att skriva koden, ingen skillnad såklart!
	$dist2 = acos(
 ( cos( $slat_rad ) * cos( $dlat_rad ) * cos( $slon_rad ) * cos( $dlon_rad ) ) +
 ( cos( $slat_rad ) * sin( $dlat_rad ) * cos( $slon_rad ) * sin( $dlon_rad ) ) +
 ( sin( $slat_rad ) * sin( $slon_rad ) )
 ) * $rad_km;
	echo "<p>Distance 2 (Rad): $dist2</p>";

	// Testar Decimal istället för Radianer (det är fel, jag vet)
	$dist3 = acos(
 ( cos( $slat_dec ) * cos( $dlat_dec ) * cos( $slon_dec ) * cos( $dlon_dec ) ) +
 ( cos( $slat_dec ) * sin( $dlat_dec ) * cos( $slon_dec ) * sin( $dlon_dec ) ) +
 ( sin( $slat_dec ) * sin( $slon_dec ) )
 ) * $rad_km;
	echo "<p>Distance 3 (Dec): $dist3</p>";
Jag får fram följande resultat:
Citat:

Distance (Rad): 16021.2979554

Distance 2 (Rad): 16021.2979554

Distance 3 (Dec): 4920.09586293
Det jag bör få, enligt kalkylatorn på sidan jag nämde ovan är:

Citat:
Distance Calculation Results


Distance between 37 37' 0"N 122 22' 0"W and 48 44' 0"N 2 23' 0"E is
8987.2353 km

This calculation assumes the earth is a perfect sphere
with a radius of 6378.0 km
Någon som kan förklara vad jag gör fel?

Tacksam för svar

Mvh Lorens
lorens är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-04-05, 18:55 #2
Per Per är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2003
Inlägg: 719
Per Per är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2003
Inlägg: 719
Jag har inte läst din kod nu, men ett vanligt fel vid den här typen av beräkningar är att man mixar radianer och grader. Dubbelkollat det?

Om jag hinner ska jag försöka kika på koden senare (om du inte lyckas lösa det vill säga).
__________________
www.ip2nation.com (ip till land)
Per är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-04-05, 19:08 #3
lorens lorens är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2003
Inlägg: 24
lorens lorens är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2003
Inlägg: 24
Tack, jag har skrivit om koden från början och nu fått kod som funkar... Dags att göra den lite finare
lorens är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-04-07, 07:03 #4
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Originally posted by lorens@Apr 5 2004, 15:08
Tack, jag har skrivit om koden från början och nu fått kod som funkar... Dags att göra den lite finare
Kan du inte posta koden färdigkommenterad?
Vad värde gör osv.

Skulle vara intressant att kolla på.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-04-07, 13:03 #5
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Citat:
Ursprungligen postat av MaStEr_Pr
Citat:
Ursprungligen postat av lorens
Tack, jag har skrivit om koden från början och nu fått kod som funkar... Dags att göra den lite finare
Kan du inte posta koden färdigkommenterad?
Vad värde gör osv.

Skulle vara intressant att kolla på.
Du hittar diskussionen i detta forum.
Anders är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-04-07, 16:57 #6
lorens lorens är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2003
Inlägg: 24
lorens lorens är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2003
Inlägg: 24
Citat:
Ursprungligen postat av MaStEr_Pr
Citat:
Ursprungligen postat av lorens
Tack, jag har skrivit om koden från början och nu fått kod som funkar... Dags att göra den lite finare
Kan du inte posta koden färdigkommenterad?
Vad värde gör osv.

Skulle vara intressant att kolla på.
Om du vill kan jag post'a färdiga funktionen här också?
lorens är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:34.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017