2. Sobre o palestrante Scio fundador da Propus Science;
Trabalha com software livre desde 1995; Trabalha com Python desde
2000; Membro da Associao Python Brasil; J foi colaborador de
diversos projetos de software livre; Twitter: @dump Blog:
http://christiano.me
9. Bibliotecas e ferramentas 1. GEOS (Geometry Engine Open
Source); 2. GDAL (Geospatial Data Abstraction Library); 3. GeoIP
(Biblioteca de localizao de IPs); 4. PROJ4 (Biblioteca de Projees
Geogrficas);
10. Projetos OpenStreetMap; OpenLayers; MapBox; PostGIS; Google
Maps; GeoDjango;
11. GeoDjango Mdulo nativo do Django para criar aplicaes
geogrficas; J est presente na seo de contrib do Django, no
necessrio instalar nada de fora; Oferece toda facilidade do ORM do
Django para aplicaes geogrficas; Bastante completo e bem integrado
com bancos geogrficos;
12. Banco de Dados Geogrfico Permite armazenar objetos
geogrficos em uma estrutura de banco de dados convencional; Possui
funes geogrficas, exemplo, com um select, possvel pegar todo o
trajeto de um rio e identificar quais municpios ele cruza; O
GeoDjango integrou funes geogrficas ao seu ORM;
14. Instalao do PostGIS A maioria das distribuies j possuem o
pacote pronto do PostGIS; Portanto, se deseja a verso 2, necessrio
compilar na mo ou usar repositrio alternativo;
16. models.py from django.contrib.gis.db import models from
django.contrib.gis import admin
17. models.py class Municipio(models.Model): '''Municipios
segundo o IBGE''' cd_geocodm = models.IntegerField('Codigo IBGE',
unique=True, primary_key=True) nome = models.CharField('Municipio',
max_length=60) estado = models.ForeignKey(Uf, null=True,
blank=True) area = models.MultiPolygonField() objects =
models.GeoManager()
18. Exemplo no Admin do Django
19. ESRI Shapefiles Formato de arquivos para informaes
geogrficas e vetoriais; Descreve geometrias, pontos e polgonos de
reas geogrficas;
20. Arquivos Shape shp -> shape, armazena a forma geogrfica
do objeto; shx -> ndices e informaes de busca sobre o shape; dbf
-> colunas e atributos existentes no shape;
22. Importando Shape com GeoDjango import os from
django.contrib.gis.utils import LayerMapping from models import
Municipio mun_mapping = { 'codigo_ibge': 'ID', 'cd_geocodm' :
'CD_GEOCODM', 'nome' : 'NM_MUNICIP', 'area' : 'MULTIPOLYGON', }
mun_shp = os.path.abspath(os.path.join(os.path.dirname(__file__),
'43MUE250GC_SIR.shx')) def run(verbose=True): lm =
LayerMapping(Municipio, mun_shp, mun_mapping, transform=False,
encoding='iso-8859-1') lm.save(strict=True, verbose=verbose)
23. Consultando pontos no banco Em qual Municpio est localizado
o ponto abaixo? Latitude: -23.5006659999999989 Longitude:
-46.6165799999999990
24. Consulta de ponto no banco >>> from
django.contrib.gis.geos import Point >>> from ibge.models
import Municipio >>> ponto = Point(-46.6165799999999990,
-23.5006659999999989) >>> res =
Municipio.objects.get(area__bbcontains=ponto) >>> print
res.nome SO PAULO
26. API de Mapa O GeoDjango no faz plotagem automtica no mapa;
Por respeitar todos os padres Geo, voc escolhe a API de mapa que
desejar. possvel plotar pontos no Google Maps, OpenStreetMap,
MapBox, Bing Maps e qualquer outro que possuir API padro Geo;
27. OpenStreetMap tima alternativa ao Google Maps; Funciona
como um "wiki" de mapas; Totalmente colaborativo; API bastante
completa; Possibilidade de subir seu prprio servidor de mapas;
http://www.openstreetmap.org/
28. MapBox Alternativa "freemium" ao Google Maps; Utiliza
estrutura do OpenStreetMap; Possibilidade de estilizar os mapas;
Vrias ferramentas, como o TileMill, permite uma melhor customizao
da aplicao de mapa; mapbox.js uma API web bem simples e eficiente;
http://www.mapbox.com/
29. Leaflet Biblioteca JavaScript para criar mapas
mobile-friendly; Baseado no OpenStreetMap e MapBox; Permite uma
melhor interatividade de mapas com dispositiveis mveis;
http://leafletjs.com/
30. OpenLayers API JavaScript para criao de mapas dinmicos e
multi camadas; Permite escolher qual backend de mapas ser utilizado
(Google Maps, OpenStreetMap, Bing Maps, entre outros); Possui uma
comunidade bastante atuante; http://openlayers.org/