Mapas com GeoDjango e PostGIS

Geodjango

GeoDjango

Tive muitos desafios em 2012, mas quero destacar o aprendizado de novas tecnologias e novos conceitos de desenvolvimento. Neste post quero destacar o GeoDjango, que foi motivo de estudos e desenvolvimento nos últimos 6 meses.

Eu precisava manipular informações geográficas completas, que inclui o básico da latitude e longitude, mas também trabalhar com shapes, cálculos de área, aproximações, agrupamento de áreas, distâncias, etc. Precisava mesmo desenvolver um [abbr title=”Sistema de informação geográfica/Geographic Information System”]SIG/GIS[/abbr] completo e muito específico para uma demanda de projeto.

O primeiro passo foi estudar sobre GIS, entender alguns conceitos básicos sobre mapas, projeções e demais conceitos. Encontrei muito material pela internet, mas também comprei alguns ebooks e livros sobre o assunto. Engana-se quem pensa que GIS está relacionado apenas a latitude e longitude. O conceito é bem amplo e complexo, cheio de variáveis e padrões diferentes de mapas, projeções e demais utilitários que te obrigam a conhecer bem o assunto para saber como processar e organizar as informações adequadamente.

Depois de aprender bastante sobre GIS, o próximo passo foi encontrar tecnologias livres que atendam os pré-requisitos do projeto. Essa parte eu achei que seria difícil, mas acabou sendo uma das mais simples, pois as tecnologias que eu já trabalho no dia a dia (Python e Django) já estão preparados para GIS. Outra necessidade do projeto era usar um banco de dados geográfico, o mais completo das opções livres é o PostgreSQL com a extensão PostGIS. Usar um banco de dados geográfico é indispensável para aplicações GIS, pois existem muitos cálculos que só um banco geográfico suporta, como por exemplo, como saber em quais Estados e Municípios passa o curso de um rio? Qual a distância total do rio? Em qual Estado fica o maior techo desse rio? No PostGIS isso é possível através queries SQL que envolvem objetos geográficos.

Na comparação abaixo, é possível notar que o PostGIS é o mais completo, superando inclusive o proprietário Oracle.

Comparação dos bancos geográficos

Comparação dos bancos geográficos

GeoDjango

O GeoDjango já está embutido no Django, não é necessário instalar nada de fora, apenas habilitar algumas linhas no settings.py, usar o PostGIS e desenvolver normalmente, como qualquer aplicação Django. A única diferença é que o módulo permite o uso de objetos geográficos, assim é possível, via o próprio ORM do Django, realizar praticamente todos os cálculos geográficos para sua aplicação.

Além de ter toda a agilidade do ORM, ainda tem a conveniente vantagem do Admin, já pronto para ações geográficas também (e com direito a mapas)!

Vale lembrar que o GeoDjango faz apenas o trabalho de backend e todos os cálculos geográficos necessários. Não pense que basta usar o GeoDjango, importar suas informações e um mapa vai aparecer todo bonitão como num passe de mágica. É necessário fazer o trabalho do frontend e usar alguma API  (como Google Maps, OpenStreetMap ou Mapbox) para exibição dos mapas, seus contornos e pontos que serão plotados. Cada API de mapa tem sua própria documentação, mas qualquer uma pode ser utilizada em conjunto com o GeoDjango. Nesse ponto, eu gosto muito do OpenLayers, serve para agregar as mais diversas APIs de mapas, mas existem diversas outras opções. Para trabalhar com mapas, é necessário conhecer bastante JavaScript, que é a base para praticamente todas.

Concluindo, o GeoDjango é uma excelente opção para trabalhar com GIS. É uma solução livre bastante completa. O Python facilita ainda mais o trabalho, pois tem todas as bibliotecas para manipulação de shapes, como Python GDAL que é um canivete suíço. O PostgreSQL com extensão PostGIS é a opção mais completa de banco de dados geográfico. Depois de ficar trabalhando com GeoDjango por  pelo menos 6 meses, posso afirmar que essa tecnologia foi uma das mais legais que aprendi durante 2012! Vou escrever mais a respeito e com exemplos de uso, aguardem!

Django  gis  python 

Veja também