Distância Geográfica

De Augusto Baffa Wiki
Revisão de 09h03min de 31 de janeiro de 2019 por Abaffa (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Para calcular as distâncias entre dois pontos no planeta são utilizadas suas posições em coordenadas geográficas. Seus pontos são projetados em uma esfera com raio de 6378.137 quilômetros. As coordenadas são descritas através de graus em latitudes e longitudes.

Função para calcular a distância geográfica utilizando latitudes e longitudes:

def CalculateGeoDistance(latitude_1, longitude_1, latitude_2, longitude_2):
		
   dLon = ToRadians(longitude_2 - longitude_1)
   dLat = ToRadians(latitude_2 - latitude_1)

   r = 6378.137 #Equatorial radius of earth in Kilometers

   a = sin(dLat/2)^2 + cos(ToRadians(latitude_1)) * cos(ToRadians(latitude_2)) * sin(dLon/2)^2

   c = 2 * atan2(sqrt(a), sqrt(1 - a))

return c * r

Função para converter latitudes e longitudes de graus para radianos:

def ToRadians(deg):
   Pi = 3.141592
return Pi/180 * deg


A função atan2 é uma função de arco tangente com dois argumentos e pode ser descrita como segue:

[math] \operatorname {atan2} (y,x)={ \begin{cases} \arctan(\frac {y}{x}) & \text{se } x \gt 0,\\ \arctan(\frac {y}{x}) + \pi & \text{se } x \lt 0 \text{ e } y \geq 0,\\ \arctan(\frac {y}{x}) - \pi & \text{se } x \lt 0 \text{ e } y \lt 0,\\ +\frac{\pi}{2} & \text{se } x=0 \text{ e } y\gt 0,\\ -\frac{\pi}{2} & \text{se } x=0 \text{ e } y\lt 0,\\ \text{indefinido} & \text{se } x=0 \text{ e } y=0. \end{cases}} [/math]


Ver também