[SP-pm] Geo Localização - aproximando o usuário do seu sistema por Lucas Mateus

Stanislaw Pusep creaktive at gmail.com
Mon Mar 19 07:22:50 PDT 2012


Uma fórmula de cálculo de distância entre latitudes/longitudes que tem
precisão razoável e baixo custo computacional é "Spherical Law of Cosines".
Aqui tem várias outras fórmulas, com prós, contras e implementações (em
JavaScript): http://www.movable-type.co.uk/scripts/latlong.html
Em Perl, os módulos Geo::Distance e Geo::Distance::XS implementam o cálculo
de distância.
A propósito, uma lista "oficial" (da Embratel) vinculando DDD aos nomes de
cidades é esta:
http://www.embratel.com.br/Embratel02/cda/portal/0,1446,RE_P_365,00.html
Por obséquio, cruzei essa lista com as coordenadas das cidades, para o meu
módulo Geo::CEP (DDD é a 5-a coluna):

01000000,05999999,SP,São Paulo,11,-23.5333333,-46.6166667
06000000,06299999,SP,Osasco,11,-23.5666667,-46.7833333
06300000,06399999,SP,Carapicuíba,11,-23.5166667,-46.8333333
06400000,06499999,SP,Barueri,11,-23.5166667,-46.8833333
06500000,06549999,SP,Santana de Parnaíba,11,-23.45,-46.9166667
...
99965000,99965970,RS,Água Santa,54,-28.1666667,-52.0333333
99970000,99970970,RS,Ciríaco,54,-28.35,-51.8833333
99975000,99975970,RS,São João Bosco,54,,
99980000,99980974,RS,David Canabarro,54,,
99990000,99990999,RS,Muliterno,54,-28.3333333,-51.7666667

(arquivo completo em
http://api.metacpan.org/source/SYP/Geo-CEP-0.4/share/cep.csv)

ABS()



On Mon, Mar 19, 2012 at 10:06, Renato Santos <renato.cron em gmail.com> wrote:

> Não existe em algum lugar publico a geoposição de cidades
> (talvez algum lugar do
> http://www.ibge.gov.br/home/disseminacao/online/catalogo2/digitaltema.php?tema=Organizacaoterrit&pagatual=inicio#sub_download que
> não consegui fazer funcionar)
> e depois, tentar antes do DDD relacionar a cidade com a cidade do usuário
> e depois (pra não depender do banco) fazer a conta:
> math.max(math.abs(s.x - c.x), math.abs(s.y - c.y))
>
> onde c = {x => longitude, y=>latitude} da cidade e
> s = {x => longitude, y=>latitude} do cliente.
>
> Se quiser pode usar hipotenusa também, já que o calculo acima é pra jogos
> 2d.
>
>
> 2012/3/19 Leonardo Ruoso <leonardo em ruoso.com>
>
>> Em Seg, 2012-03-19 às 00:06 -0300, Thiago Rondon escreveu:
>> > Pessoal,
>> >
>> > O Lucas Mateus neste artigo esta compartilhando um cenário onde ele
>> > precisa realizar
>> > o calculo entre dois pontos baseado no DDD, em alguns cenários esta
>> > solução pode
>> > ser aplicada muito bem !
>> >
>> > http://sao-paulo.pm.org/equinocio/2012/mar/19
>>
>> Xi³
>>
>> Vou atacar de muito chato agora!
>>
>> Exemplos fáceis para complementar os de SP que constam no artigo:
>>
>> - O DDD de Curitiba é 41, o de São Paulo é 11 e o de Belo Horizonte é
>> 31. Curitiba não é mais perto de Belo Horizonte do que de SP!
>> - O DDD de Fortaleza é 85, o do interior é 88, mas o de Teresina e do
>> Piauí quase todo é 86 e há cidades fora do Ceará com DDD 87 e 89!
>>
>> Para usar esse recurso seria necessário criar uma tabela auxiliar com a
>> delimitação geográfica de cada código DDD. Você teria também de mapear
>> os MCDU para as regiões menos populosas, mas eu tenho a impressão que o
>> esforço seria em vão, pois se em SP todos os MCDU do DDD 11 correspondem
>> à capital e em cidades do interior seja frequente que uma cidade inteira
>> disponha de um único MCDU —o roteamento tandem é (era?) feito pelo MCDU—
>> hoje isso mudou é válido apenas por acidente.
>>
>> Quem sempre morou em cidade grande (capitais populosas) pode lembretar
>> que antigamente as pessoas «adivinhavam» o bairro ou a região pelo MCDU,
>> mas com as centrais digitais o número do telefone (DDD e MCDU) do
>> assinante não correspondem mais necessariamente à central em que o
>> assinante está conectado.
>>
>> Era como se antigamente o número do telefone fosse o IP do assinante e
>> esse número tenha sido transformado num registro de DNS para um endereço
>> interno da rede de pacotes.
>>
>> Some-se a isso o fato de que em Fortaleza eu tinha um número com DDD 11
>> e em SP eu tenho um número de Santos :-)
>>
>> Há também grande possibilidade de que uma cidade com um determinado DDD
>> esteja muito mais próxima de uma cidade grande com um outro DDD do que
>> da cidade «grande» que tem o mesmo DDD que ela. Isso vai acontecer o
>> tempo todo nas cidades próximas a fronteiras estatuais.
>>
>> > Abs!
>> > -Thiago Rondon
>> > =begin disclaimer
>> >    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>> >  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> > =end disclaimer
>>
>>
>> --
>> Leonardo Ruoso <leonardo em ruoso.com>
>> (11) 2368-2228 - (11) 3522-9612
>> http://leonardo.ruoso.com
>>
>> =begin disclaimer
>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>
>
>
> --
> Saravá,
> Renato CRON Santos
>  http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
>
>
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120319/6cd9c1e5/attachment.html>


More information about the SaoPaulo-pm mailing list