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

Marcio Ferreira marciodesouzaferreira at gmail.com
Mon Mar 19 08:04:34 PDT 2012


stan++
On Mar 19, 2012 11:23 AM, "Stanislaw Pusep" <creaktive at gmail.com> wrote:

> 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 at 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 at 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 at pm.org
>>> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> > =end disclaimer
>>>
>>>
>>> --
>>> Leonardo Ruoso <leonardo at 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 at 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 at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120319/1b71250b/attachment-0001.html>


More information about the SaoPaulo-pm mailing list