Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rdpacato

Calcular distancia por lat e long via procedure

Recommended Posts

Pessoal, não manjo muito de BD, principalmente procedures...

 

 

Precisava calcular a distância por latitude e longitude, e pensei em fazer direto no BD, sem precisar passar por classes....

 

Tenho em java a ideia e os cálculos... que define assim:

 

Pegar a lat e long anterior e a atual e fazer o cálculo entre as duas:

public double distance(double lat1, double lon1, double lat2, double lon2, char unit) {
        double theta = lon1 - lon2;
        double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
        dist = Math.acos(dist);
        dist = rad2deg(dist);
        dist = dist * 60 * 1.1515;
        if (unit == 'K') {
            dist = dist * 1.609344;
        } else if (unit == 'N') {
            dist = dist * 0.8684;
        }
        return (dist);
     }

     /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ 
     /*::  This function converts decimal degrees to radians             :*/
     /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
	public double deg2rad(double deg) {
        return (deg * Math.PI / 180.0);
     }

     /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
     /*::  This function converts radians to decimal degrees             :*/
     /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ 
	public double rad2deg(double rad) {
        return (rad * 180 / Math.PI);
     }

Tenho estes dois campos em tabela (id_latitude e id_longitude) queria saber se é viável fazer em BD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma function no BD , o BD em questão suporta functions ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ter que implantar de outra maneira, o pessoal acha que o consumo de memória ficará grande com procedures, pois são muitos dados, então vamos tratar na aplicação antes de inserir.. mas obrigado motta pela dica. abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.