Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
GeoDjango
Christiano Anderson
Twitter: @dump
anderson@propus.com.br
Sobre o palestrante
• Sócio fundador da Propus Science;
• Trabalha com software livre desde 1995;
• Trabalha com Python de...
Agenda
• Georreferenciamento;
• Padrões GIS;
• Bases Geográficas;
• Tecnologias;
• GeoDjango;
• Admin;
• OpenStreetMap;
• ...
Geographic Information
System (GIS)
• Padrões, dados geográficos, sistemas
de coordenadas geográficas;
• Os mapas são plan...
Projeções
• Representação plana da Terra;
Projeções
Os padrões GEO
1. OGC (Open Geospatial Consortium);
2. WKT (Well Known Text);
3. WKB (Well Know Binary);
4. GML (Geometry ...
Principais objetos geográficos
1. Point (ponto);
2. LineString (linha);
3. Polygon (Polígono);
4. MultiPoint (Múltiplos Po...
Bibliotecas e ferramentas
1. GEOS (Geometry Engine Open
Source);
2. GDAL (Geospatial Data Abstraction
Library);
3. GeoIP (...
Projetos
• OpenStreetMap;
• OpenLayers;
• MapBox;
• PostGIS;
• Google Maps;
• GeoDjango;
GeoDjango
• Módulo nativo do Django para criar
aplicações geográficas;
• Já está presente na seção de contrib
do Django, n...
Banco de Dados Geográfico
• Permite armazenar objetos
geográficos em uma estrutura de
banco de dados convencional;
• Possu...
Comparativo bases geográficas
Fonte: https://docs.djangoproject.com/en/1.5/ref/contrib/gis/db-api/
Instalação do PostGIS
A maioria das distribuições já possuem
o pacote pronto do PostGIS;
Portanto, se deseja a versão 2, é...
Configuração
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'culturaeduca',
'USER'...
models.py
from django.contrib.gis.db import models
from django.contrib.gis import admin
models.py
class Municipio(models.Model):
'''Municipios segundo o IBGE'''
cd_geocodm = models.IntegerField('Codigo IBGE', u...
Exemplo no Admin do Django
ESRI Shapefiles
• Formato de arquivos para
informações geográficas e vetoriais;
• Descreve geometrias, pontos e
polígonos ...
Arquivos Shape
• shp -> shape, armazena a forma
geográfica do objeto;
• shx -> índices e informações de
busca sobre o shap...
Analisando Shapes
$ ogrinfo -so 43MUE250GC_SIR.shp 43MUE250GC_SIR
INFO: Open of `43MUE250GC_SIR.shp'
using driver `ESRI Sh...
Importando Shape com GeoDjango
import os
from django.contrib.gis.utils import LayerMapping
from models import Municipio
mu...
Consultando pontos no banco
Em qual Município está localizado o
ponto abaixo?
Latitude: -23.5006659999999989
Longitude:
-4...
Consulta de ponto no banco
>>> from django.contrib.gis.geos import Point
>>> from ibge.models import Municipio
>>> ponto =...
Objeto geográfico do registro
>>> res.area
<MultiPolygon object at 0x10e40f0a0>
Representa o contorno (polígono) do municí...
API de Mapa
• O GeoDjango não faz plotagem
automática no mapa;
• Por respeitar todos os padrões Geo,
você escolhe a API de...
OpenStreetMap
• Ótima alternativa ao Google Maps;
• Funciona como um "wiki" de mapas;
• Totalmente colaborativo;
• API bas...
MapBox
• Alternativa "freemium" ao Google
Maps;
• Utiliza estrutura do OpenStreetMap;
• Possibilidade de estilizar os mapa...
Leaflet
• Biblioteca JavaScript para criar
mapas mobile-friendly;
• Baseado no OpenStreetMap e
MapBox;
• Permite uma melho...
OpenLayers
• API JavaScript para criação de
mapas dinâmicos e multi camadas;
• Permite escolher qual backend de
mapas será...
OBRIGADO!
Twitter: @dump
Blog: http://christiano.me
E-mail: anderson@propus.com.br
Nächste SlideShare
Wird geladen in …5
×

Mapeando a Terra com GeoDjango

481 Aufrufe

Veröffentlicht am

Essa palestra mostra todo o poder de georreferenciamento por trás do Django, será apresentado o caminho das pedras para quem quer criar mapas completos e complexos usando soluções livres. Além do Django e seu poderoso ORM, um pouco de PostGIS, OpenStreetMaps e OpenLayers será apresentado, são ferramentas que casam muito bem com o Django no desenvolvimento de soluções ricas.

Veröffentlicht in: Bildung
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Mapeando a Terra com GeoDjango

  1. 1. GeoDjango Christiano Anderson Twitter: @dump anderson@propus.com.br
  2. 2. Sobre o palestrante • Sócio fundador da Propus Science; • Trabalha com software livre desde 1995; • Trabalha com Python desde 2000; • Membro da Associação Python Brasil; • Já foi colaborador de diversos projetos de software livre; Twitter: @dump Blog: http://christiano.me
  3. 3. Agenda • Georreferenciamento; • Padrões GIS; • Bases Geográficas; • Tecnologias; • GeoDjango; • Admin; • OpenStreetMap; • MapBox; • OpenLayers;
  4. 4. Geographic Information System (GIS) • Padrões, dados geográficos, sistemas de coordenadas geográficas; • Os mapas são planos, mas a Terra não é;
  5. 5. Projeções • Representação plana da Terra;
  6. 6. Projeções
  7. 7. Os padrões GEO 1. OGC (Open Geospatial Consortium); 2. WKT (Well Known Text); 3. WKB (Well Know Binary); 4. GML (Geometry Markup Language); 5. KML (Keyhole Markup Language); 6. WMS (Web Mapping Service); 7. GeoJSON (Geometry JSON); 8. SRID (Spatial Reference Indentifier);
  8. 8. Principais objetos geográficos 1. Point (ponto); 2. LineString (linha); 3. Polygon (Polígono); 4. MultiPoint (Múltiplos Pontos); 5. MultiPolygon (Múltiplos Polígonos);
  9. 9. Bibliotecas e ferramentas 1. GEOS (Geometry Engine Open Source); 2. GDAL (Geospatial Data Abstraction Library); 3. GeoIP (Biblioteca de localização de IPs); 4. PROJ4 (Biblioteca de Projeções Geográficas);
  10. 10. Projetos • OpenStreetMap; • OpenLayers; • MapBox; • PostGIS; • Google Maps; • GeoDjango;
  11. 11. GeoDjango • Módulo nativo do Django para criar aplicações geográficas; • Já está presente na seção de contrib do Django, não é necessário instalar nada de fora; • Oferece toda facilidade do ORM do Django para aplicações geográficas; • Bastante completo e bem integrado com bancos geográficos;
  12. 12. Banco de Dados Geográfico • Permite armazenar objetos geográficos em uma estrutura de banco de dados convencional; • Possui funções geográficas, exemplo, com um select, é possível pegar todo o trajeto de um rio e identificar quais municípios ele cruza; • O GeoDjango integrou funções geográficas ao seu ORM;
  13. 13. Comparativo bases geográficas Fonte: https://docs.djangoproject.com/en/1.5/ref/contrib/gis/db-api/
  14. 14. Instalação do PostGIS A maioria das distribuições já possuem o pacote pronto do PostGIS; Portanto, se deseja a versão 2, é necessário compilar na mão ou usar repositório alternativo;
  15. 15. Configuração DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'culturaeduca', 'USER': 'anderson', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }
  16. 16. models.py from django.contrib.gis.db import models from django.contrib.gis import admin
  17. 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. 18. Exemplo no Admin do Django
  19. 19. ESRI Shapefiles • Formato de arquivos para informações geográficas e vetoriais; • Descreve geometrias, pontos e polígonos de áreas geográficas;
  20. 20. Arquivos Shape • shp -> shape, armazena a forma geográfica do objeto; • shx -> índices e informações de busca sobre o shape; • dbf -> colunas e atributos existentes no shape;
  21. 21. Analisando Shapes $ ogrinfo -so 43MUE250GC_SIR.shp 43MUE250GC_SIR INFO: Open of `43MUE250GC_SIR.shp' using driver `ESRI Shapefile' successful. Layer name: 43MUE250GC_SIR Geometry: Polygon Feature Count: 498 Extent: (-57.643885, -33.752081) - (-49.691352, -27.082302) Layer SRS WKT: GEOGCS["SIRGAS 2000", DATUM["SIRGAS2000", SPHEROID["Geodetic_Reference_System_of_1980",6378137,298.2572221009113]], PRIMEM["Greenwich",0], UNIT["Degree",0.017453292519943295]] ID: Real (11.0) CD_GEOCODM: String (20.0) NM_MUNICIP: String (60.0)
  22. 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. 23. Consultando pontos no banco Em qual Município está localizado o ponto abaixo? Latitude: -23.5006659999999989 Longitude: -46.6165799999999990
  24. 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 SÃO PAULO
  25. 25. Objeto geográfico do registro >>> res.area <MultiPolygon object at 0x10e40f0a0> Representa o contorno (polígono) do município. É possível exportar o contorno em GeoJSON: >> res.area.geojson u'{ "type": "MultiPolygon", "coordinates": [ [ [ [ -46.575473, -23.374018 ], [ -46.57540883044129, -23.374040620923594 ], [ -46.575195, -23.374116 ], [ -46.574706, -23.374336 ], [ -46.574044, -23.37499 ], [ -46.57361, -23.375254 ], [ -46.573461199200892, -23.375336342015196 ], [ -46.573254, -23.375451 ], [ -46.572757, -23.375579 ], [ -46.572661701429197, -23.375598923531598 ], [ -46.572073, -23.375722 ], [ -46.571326, -23.375845 ], [ -46.570697, -23.376002 ], [ -46.570435846461493, -23.376064365024099 ], [ -46.570161, -23.37613 ], [ -46.56981, -23.376126 ], [ -46.569405, -23.376094 ], [ -46.568904, -23.375948 ], [ -46.56852, -23.375736 ], [ -46.568299, -23.375479 ], [ -46.568058, -23.374863 ], [ -46.567912, -23.374383 ], [ -46.567691, -23.374097 ], [ -46.567234, -23.373735 ] (continua)...
  26. 26. API de Mapa • O GeoDjango não faz plotagem automática no mapa; • Por respeitar todos os padrões Geo, você escolhe a API de mapa que desejar. • É possível plotar pontos no Google Maps, OpenStreetMap, MapBox, Bing Maps e qualquer outro que possuir API padrão Geo;
  27. 27. OpenStreetMap • Ótima alternativa ao Google Maps; • Funciona como um "wiki" de mapas; • Totalmente colaborativo; • API bastante completa; • Possibilidade de subir seu próprio servidor de mapas; • http://www.openstreetmap.org/
  28. 28. MapBox • Alternativa "freemium" ao Google Maps; • Utiliza estrutura do OpenStreetMap; • Possibilidade de estilizar os mapas; • Várias ferramentas, como o TileMill, permite uma melhor customização da aplicação de mapa; • mapbox.js é uma API web bem simples e eficiente; • http://www.mapbox.com/
  29. 29. Leaflet • Biblioteca JavaScript para criar mapas mobile-friendly; • Baseado no OpenStreetMap e MapBox; • Permite uma melhor interatividade de mapas com dispositiveis móveis; • http://leafletjs.com/
  30. 30. OpenLayers • API JavaScript para criação de mapas dinâmicos 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/
  31. 31. OBRIGADO! Twitter: @dump Blog: http://christiano.me E-mail: anderson@propus.com.br

×