Comentando Passo a Passo:
Declaração de variáveis: As variáveis olat, olong, dlat, dlong, e earthradius são declaradas para armazenar as coordenadas geográficas e o raio da Terra, respectivamente.
Inicialização do raio da Terra: earthradius é inicializado com o valor de 6371, que é o raio médio da Terra em quilômetros.
Obtenção das coordenadas: As funções coordlat e coordlong são chamadas para obter as latitudes e longitudes da origem e do destino. Estas funções devem ser definidas em algum lugar do seu código para extrair as coordenadas a partir dos nomes das localidades.
Cálculo da distância do grande círculo: A fórmula do grande círculo é aplicada utilizando as funções trigonométricas. Note que no MS Access, usamos as nossas próprias funções Radians e Acos para substituir WorksheetFunction.Radians e WorksheetFunction.Acos do Excel.
Conversão de graus para radianos: A função Radians é definida para converter graus em radianos, que é necessário para as funções trigonométricas.
Cálculo do arco cosseno: A função Acos é definida para calcular o arco cosseno, que não está diretamente disponível no VBA do Access.
Este código agora deve funcionar corretamente no MS Access, desde que as funções coordlat e coordlong sejam corretamente definidas para extrair as coordenadas geográficas necessárias.
'Esta função calcula a distância do grande círculo (GCD) em milhas náuticas
Function GCDnm (origin As String, dest As String) As Integer
Dim olat As Double ' Declaração da variável para a latitude da origem
Dim olong As Double ' Declaração da variável para a longitude da origem
Dim dlat As Double ' Declaração da variável para a latitude do destino
Dim dlong As Double ' Declaração da variável para a longitude do destino
Dim earthradius As Integer ' Declaração da variável para o raio da Terra
earthradius = 6371 ' Atribui o valor do raio da Terra em quilômetros
' Obtém a latitude e longitude da origem e do destino
olat = coordlat(origin)
olong = coordlong(origin)
dlat = coordlat(dest)
dlong = coordlong(dest)
' Calcula a distância usando a fórmula do grande círculo
GCDnm = Round(Acos(( _
Sin(Radians(olat)) * _
Sin(Radians(dlat)) + _
Cos(Radians(olat)) * _
Cos(Radians(dlat)) * _
Cos(Radians(olong - dlong)))) * _
earthradius, 0) / 1.852
'GDCm = [arccos[sin(origin latitude) * sin(destination latitude) * cos(origin latitude) * sin(destination latitude) * cos(origin latitude - dest latitude)] * radius=6371] / 1.852
End Function
' Função para converter graus em radianos
Function Radians (degrees As Double) As Double
Radians = degrees * (WorksheetFunction.Pi() / 180)
End Function
' Função para calcular o arco cosseno
Function Acos (x As Double) As Double
If x < -1 Or x > 1 Then
Err.Raise vbObjectError + 1, "Acos", "O valor da entrada deve estar entre -1 e 1."
End If
Acos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
End Function
Clique aqui e nos contate via What's App para avaliarmos seus projetos
Série de Livros nut Project
Série DONUT PROJECT 2015
Nenhum comentário:
Postar um comentário