Você está aqui: Delphi ::: Dicas & Truques ::: Aplicativos e Outros |
Como calcular a distância entre dois pontos na terra em DelphiQuantidade de visualizações: 1689 vezes |
|
Nesta dica mostrarei como calcular a distância em quilômetros entre dois pontos na terra dadas suas latitudes e longitudes. Neste exemplo eu coloquei o valor de 6378.137 para o raio da terra, mas você pode definir para o valor que achar mais adequado. O cálculo usado neste código se baseia na Fórmula de Haversine, que determina a distância do grande círculo entre dois pontos em uma esfera, dadas suas longitudes e latitudes. Veja o código Delphi completo: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// função que recebe dois pontos na terra e retorna a distância
// entre eles em quilômetros
function CalcularDistancia(lat1: double; lat2: double; lon1: double;
lon2: double): double;
var
raio_terra, dlon, dlat, a, c: double;
begin
raio_terra := 6378.137; // raio da terra em quilômetros
// o primeiro passo é converter as latitudes e longitudes
// para radianos
// não esqueça de adicionar a unit Math
lon1 := DegToRad(lon1);
lon2 := DegToRad(lon2);
lat1 := DegToRad(lat1);
lat2 := DegToRad(lat2);
// agora aplicamos a Fórmula de Haversine
dlon := lon2 - lon1;
dlat := lat2 - lat1;
a := Power(Sin(dlat / 2), 2) + Cos(lat1) * Cos(lat2)
* Power(Sin(dlon / 2),2);
c := 2 * ArcSin(Sqrt(a));
// e retornamos a distância
Result := (c * raio_terra);
end;
procedure TForm5.Button1Click(Sender: TObject);
var
lat1, lon1, lat2, lon2, distancia: double;
begin
// obtém as coordenadas vindas dos campos de texto
lat1 := StrToFloat(txtPrimeiraLatitude.Text);
lon1 := StrToFloat(txtPrimeiraLongitude.Text);
lat2 := StrToFloat(txtSegundaLatitude.Text);
lon2 := StrToFloat(txtSegundaLongitude.Text);
// vamos calcular a distância entre os dois pontos em Kms
distancia := CalcularDistancia(lat1, lat2, lon1, lon2);
// e mostramos o resultado
txtDistancia.Text := FormatFloat('#.0', distancia) + ' kms';
end;
Ao executar este código Delphi nós teremos o seguinte resultado: Informe a primeira latitude: -16,674551 Informe a primeira longitude: -49,303598 Informe a segunda latitude: -15,579321 Informe a segunda longitude: -56,10009 A distância entre os dois pontos é: 736,9 kms Aqui as informações sobre as latitudes e longitudes vieram de campos de texto TEdit, e o código foi disparado a partir do clique de um botão TButton. Neste exemplo eu calculei a distância entre as cidades de Goiânia-GO e Cuiabá-MT. A latitude é a distância ao Equador medida ao longo do meridiano de Greenwich. Esta distância mede-se em graus, podendo variar entre 0o e 90o para Norte(N) ou para Sul(S). A longitude é a distância ao meridiano de Greenwich medida ao longo do Equador. |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







