[firebase-br] calculo de distancia entre coordenadas

bzottis em ig.com.br bzottis em ig.com.br
Seg Ago 11 12:03:04 -03 2014


 

obrigado 

Em 11/08/2014 10:27, Carlos H. Cantu escreveu: 

> Vc não precisa de trocentas casas decimais... pelo que lembro, com 6
> casas decimais vc já consegue uma boa precisão em coordenadas GPS.
> Pode fazer o teste no google maps mesmo.
> 
> []s
> Carlos H. Cantu
> www.FireBase.com.br [1] - www.firebirdnews.org [2]
> www.warmboot.com.br [3] - blog.firebase.com.br
> 
> bicb> 
> 
> bicb> Pessoal, estou tentando fazer um SQL que me retorne a distancia entre
> bicb> dois pontos através de coordenadas, 
> 
> bicb> na internet achei essa function em MySQL e estou tentando converter para
> bicb> um aprocedure FB mas esta dando erro na quantidade de casas decimais. 
> 
> bicb> alguém saberia como resolver? 
> 
> bicb> desde já agradeço. 
> 
> bicb> a procedure é essa: 
> 
> bicb> SET TERM ^ ; 
> 
> bicb> CREATE OR ALTER PROCEDURE CALCULA_DISTANCIA (
> bicb> lat1 double precision,
> bicb> long1 double precision,
> bicb> lat2 double precision,
> bicb> long2 double precision)
> bicb> returns (
> bicb> distancia double precision)
> bicb> as
> bicb> declare variable v2r double precision;
> bicb> declare variable vlong double precision;
> bicb> declare variable vlat double precision;
> bicb> declare variable vtmp_sin double precision;
> bicb> declare variable vtmp_cos double precision;
> bicb> declare variable vtmp_sin2 double precision;
> bicb> declare variable a double precision;
> bicb> declare variable c double precision;
> bicb> begin
> bicb> --V2r = 0.017453292519943295769236;--VALOR CORRETO
> bicb> V2r = 0.01745329251994329576;-- ASSIM DA CERTO
> bicb> vlong = (long2 - long1) * v2r;
> bicb> vLat = (lat2 - lat1) * v2r; 
> 
> bicb> vTmp_Sin = sin(vLat/2.0);
> bicb> vTmp_cos = cos(lat1 * v2r);
> bicb> vTmp_Sin2 = sin(vlong / 2.0); 
> 
> bicb> a = (vTmp_Sin * vTmp_Sin) + (vTmp_cos * vTmp_cos) * (vTmp_Sin2 *
> bicb> vTmp_Sin2);
> bicb> c = 2.0 * atan2(sqrt(a), sqrt(1.0 - a)); 
> 
> bicb> distancia = 6368.1 * c; 
> 
> bicb> suspend;
> bicb> end^ 
> 
> bicb> SET TERM ; ^ 
> 
> bicb> GRANT EXECUTE ON PROCEDURE CALCULA_DISTANCIA TO SYSDBA; 
> 
> bicb> 
> bicb> ______________________________________________
> bicb> FireBase-BR (www.firebase.com.br [4]) - Hospedado em www.locador.com.br [5]
> bicb> Para saber como gerenciar/excluir seu cadastro na lista, use:
> bicb> http://www.firebase.com.br/fb/artigo.php?id=1107 [6]
> bicb> Para consultar mensagens antigas: http://firebase.com.br/pesquisa [7]
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br [4]) - Hospedado em www.locador.com.br [5]
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107 [6]
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa [7]
 

Links:
------
[1] http://www.FireBase.com.br
[2] http://www.firebirdnews.org
[3] http://www.warmboot.com.br
[4] http://www.firebase.com.br
[5] http://www.locador.com.br
[6] http://www.firebase.com.br/fb/artigo.php?id=1107
[7] http://firebase.com.br/pesquisa



Mais detalhes sobre a lista de discussão lista