Geolocalização é o futuro?

Postado 23 de março de 2017

Começamos o ano cheios de ideias para melhorar os produtos que oferecemos às pessoas. O nosso mantra é vender um seguro “tipo você”, mas para isso temos que conhecer melhor quem está navegando no nosso site e entender quais são suas necessidades para tentarmos ser um pouco mais preditivos.

Hoje, no fundo, oferecemos uma solução do tipo one size fits all. Não é o que queremos. Se a ideia é mudar o senso comum de que seguro é algo chato, que compramos e esperamos nunca usar, temos que transformá-lo em algo valioso, que atenda às necessidades das pessoas no dia a dia e não apenas quando algo der muito errado. Um dos caminhos que escolhemos para isso foi o da Geolocalização.

Geolocalização é a detecção da localização física das pessoas, que nos possibilita compreender melhor o que acontece nos entornos de suas casas, bairros ou mesmo cidades. Se entendermos com que tipos de problemas as pessoas têm que lidar por causa do lugar aonde moram, podemos oferecer serviços mais apropriados, que atendam melhor às necessidades de cada um.

Para construir nosso microssserviço escolhemos a extensão Postgis. Este plugin adiciona ao Postgres tipos de dados espaciais e recursos para cálculos complexos de distância e inclusão de pontos em áreas, por exemplo.

Para instalar o plugin no mac:

brew install postgis

Se você tiver algum problema de incompatibilidade de versão, sugiro seguir os passos deste blog

Também incluímos a gem Geocoder, que, combinada com a Rgeo, do Rails, nos dá todos os recursos de que precisamos.

O Sistema de Coordenadas

Antes de botarmos a mão na massa, há alguns conceitos que precisamos entender. O que nos vem à mente quando pensamos em Geometria? Aposto que é alguma coisa assim:

Geometria

Triângulos, círculos, trapézios, seno, cosseno, Pitágoras… É a mesma Geometria que aprendemos na escola.

Agora, o que nos vem à mente quando pensamos em Geografia?

Planeta Terra

Agora estamos falando do nosso planeta, essa esfera rochosa, com os polos achatados, que flutua no espaço em torno do sol.

Quando trabalhamos com coordenadas, temos que escolher entre os dois sistemas de existentes: o geométrico e o geográfico. As palavras são parecidas, o que costuma gerar confusão, mas a diferença entre eles está nos fundamentos do que pensamos quando falamos de cada um.

Vamos começar pelo sistema Geográfico.

Latitude e longitude

Esse é o sistema que engloba as noções de latitude e longitude. Latitude é o ângulo entre o equador e a superfície de referência, o que na prática significa as linhas horizontais que estamos vendo na imagem acima. A longitude é o ângulo entre o meridiano de Greenwich e a superfície de referência, que nos gera as linhas verticais.

É importante entender que as coordenadas geográficas estão sobre uma superfície curva, portanto, é impossível projetá-las com precisão em uma superfície plana como o computador. Objetos mapeados em pontos de latitude e longitude são, obrigatoriamente, curvos como a superfície da Terra e as distâncias medidas entre seus pontos também devem respeitar essa curvatura.

Diferentes sistemas de coordenadas

Calcular a distância de dois pontos dentro do quadrado, no mapa do lado esquerdo, é fácil. Mas e no globo à direita? Estamos falando da mesma área, mas a figura geométrica passou de um quadrado a um trapezóide e os cálculos ficaram não só mais complexos, mas também mais custosos.

É aí que entra o sistema geométrico. Ele trabalha com projeções, com o achatamento da Terra em uma superfície plana, o que pode distorcer o desenho de algumas áreas. A vantagem é que isso permite que a gente possa projetá-las em um mapa e, com isso, calcular distâncias, áreas ou qualquer outra medida usando os cálculos simples de Geometria que aprendemos na escola. E é muito mais fácil para o computador fazê-los.

Já parou para pensar que a visão que temos dos países é distorcida? Quanto mais longe da linha do equador, mas “esticada” a imagem fica. Olhe só a diferença entre o tamanho que nós achamos que a Rússia tem em comparação com seu tamanho real, nas proximidades da linha do equador:

Rússia

O Brasil nem é tão menor assim:

Brasil e Rússia

O único problema do sistema projetado é se tivermos que lidar com pontos nas bordas do mapa, uma questão que não existe no sistema geográfico, pois nele o mundo não tem bordas (obrigado, Pitágoras).

Date line

Como a Terra foi achatada, a linha não pode dar a volta por trás, então a distância entre os dois pontos é muito maior do que deveria ser. Esse problema se repete se você atravessar os pólos ou mesmo circundá-los. A mesma linha da imagem acima fica muito diferente no sistema geográfico:

Sem date line

Qual sistema escolher?

O modelo geográfico é mais preciso. Se você precisa realizar cálculos que atravessem o globo, que lidem com pontos muito distantes, é com ele que você vai querer trabalhar.

No entanto, a maioria das aplicações, hoje, não tem essa necessidade. Coordenadas projetadas normalmente trazem melhores resultados para os problemas reais que temos para resolver.

Estamos limitados à capacidade de armazenamento e processamento dos bancos de dados atuais e temos que mapeá-los de uma forma que se adequem à base. O sistema geográfico é mais realista e melhor para representar o mundo real, mas o que fazemos boa parte do tempo tem a ver com os cálculos em cima dos dados e não com projeções 3D. Ao projetarmos, fazemos isso usando o Google Maps, que é achatado, feito para lidar com projeções.

Performance é importante. Os cálculos de superfícies curvas são muito mais complexos e custosos. Se já é difícil pensar neles em esferas achatadas, leve em conta, ainda, que o achatamento dos polos da Terra não é linear.

Para se aprofundar no assunto

Para quem está entrando agora no mundo da Geolocalização, recomendo dar uma olhada no trabalho do Daniel Azuma, Engenheiro de Software do Google.

Blog: http://daniel-azuma.com/articles/georails/

Apresentação no Rails Conf 2012: https://www.youtube.com/watch?v=QI0e2jkUbkk

 

Por Artur Caliendo Prado