Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Fant følgende kode i C:

 

double CalculateDistance( double nLat1, double nLon1, double nLat2, double nLon2 )
{
double nRadius = 6371; // Earth's radius in Kilometers

// Get the difference between our two points then convert the difference into radians
double nDLat = ToRad(nLat2 - nLat1);  
double nDLon = ToRad(nLon2 - nLon1); 

nLat1 =  ToRad(nLat1);
nLat2 =  ToRad(nLat2);

double nA =	pow ( sin(nDLat/2), 2 ) +
			cos(nLat1) * cos(nLat2) * 
			pow ( sin(nDLon/2), 2 );

double nC = 2 * atan2( sqrt(nA), sqrt( 1 - nA ));
double nD = nRadius * nC;

return nD; // Return our calculated distance
}

 

Problemet er at argumentene denne funksjonen bruker må jo være av datatypen double,

men de dataene jeg finner på f.eks google earth er som dette:

 

Latitude: 59°55'54.51"N

Longitude: 10°43'22.28"E

 

Noen som vet hvordan disse dataene gjøres om så de kan brukes i denne funksjonen?

Lenke til kommentar
Fant følgende kode i C:

 

double CalculateDistance( double nLat1, double nLon1, double nLat2, double nLon2 )
{
double nRadius = 6371; // Earth's radius in Kilometers

// Get the difference between our two points then convert the difference into radians
double nDLat = ToRad(nLat2 - nLat1);  
double nDLon = ToRad(nLon2 - nLon1); 

nLat1 =  ToRad(nLat1);
nLat2 =  ToRad(nLat2);

double nA =	pow ( sin(nDLat/2), 2 ) +
			cos(nLat1) * cos(nLat2) * 
			pow ( sin(nDLon/2), 2 );

double nC = 2 * atan2( sqrt(nA), sqrt( 1 - nA ));
double nD = nRadius * nC;

return nD; // Return our calculated distance
}

 

Problemet er at argumentene denne funksjonen bruker må jo være av datatypen double,

men de dataene jeg finner på f.eks google earth er som dette:

 

Latitude: 59°55'54.51"N

Longitude: 10°43'22.28"E

 

Noen som vet hvordan disse dataene gjøres om så de kan brukes i denne funksjonen?

 

Geografiske koordinater vises gjerne på denne formen. De er inndelt i grader, minutter og sekunder. For å ta breddegraden (latituden) i eksempelet ditt, gjør vi følgende for å konvertere til desimal form:

 

59 + (55 / 60) + (54.51 / 3600) = 59.9318083333

 

Nord for ekvator er breddegraden positiv, mens den sør for ekvator er negativ.

 

Lengdegraden (longituden) i eksempelet ditt blir på desimal form:

 

10 + (43 / 60) + (22.28 / 3600) = 10.7228555556

 

Vest for nullmeridianen er lengdegraden negativ, mens øst for nullmeridianen er lengdegraden positiv.

 

Observer at jeg deler minuttdelen av koordinatet med 60, fordi det er 60 minutter i en grad, mens sekunddelen deles med 3600, fordi det er 3600 sekunder i en grad.

 

Gjør forøvrig oppmerksom på at Google Earth kan konfigureres til å vise koordinatene på desimalform.

 

Werner

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...