[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