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
 


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 19:55.

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