SlideShare una empresa de Scribd logo
1 de 31
GeoDjango
Christiano Anderson
Twitter: @dump
anderson@nodeware.com.br
Sobre o palestrante
● Sócio fundador da Nodeware;
● 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
Agenda
● Georreferenciamento;
● Padrões GIS;
● Bases Geográficas;
● Tecnologias;
● GeoDjango;
● Admin;
● OpenStreetMap;
● MapBox;
● OpenLayers;
Geographic Information System
(GIS)
● Padrões, dados geográficos, sistemas de
coordenadas geográficas;
● Os mapas são planos, mas a Terra não é;
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 Markup Language);
5. KML (Keyhole Markup Language);
6. WMS (Web Mapping Service);
7. GeoJSON (Geometry JSON);
8. SRID (Spatial Reference Indentifier);
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);
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);
Projetos
● OpenStreetMap;
● OpenLayers;
● MapBox;
● PostGIS;
● Google Maps;
● GeoDjango;
GeoDjango
● Módulo Django para criar aplicações
geográficas;
● 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;
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;
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.0.2, é
necessário compilar na mão ou usar repositório
alternativo;
Configuração
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'culturaeduca',
'USER': 'nodeware',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
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', 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()
Exemplo no Admin do Django
ESRI Shapefiles
● Formato de arquivos para informações
geográficas e vetoriais;
● Descreve geometrias, pontos e polígonos de
áreas geográficas;
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;
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)
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)
Consultando pontos no banco
Em qual Município está localizado o ponto
abaixo?
Latitude: -23.5006659999999989
Longitude: -46.6165799999999990
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
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)...
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;
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/
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/
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/
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/
OBRIGADO!
Twitter: @dump
Blog: http://christiano.me
E-mail: anderson@nodeware.com.br

Más contenido relacionado

La actualidad más candente

ORGANIZAÇÃO DO CORPO 6 ANO.23.pptx
ORGANIZAÇÃO DO CORPO 6 ANO.23.pptxORGANIZAÇÃO DO CORPO 6 ANO.23.pptx
ORGANIZAÇÃO DO CORPO 6 ANO.23.pptxSimone Maia
 
8 ano cap 2 estudo das células
8 ano cap 2 estudo das células8 ano cap 2 estudo das células
8 ano cap 2 estudo das célulasSarah Lemes
 
O que fazem os psicologos da saúde capitulo 02.pdf
O que fazem os psicologos da saúde capitulo 02.pdfO que fazem os psicologos da saúde capitulo 02.pdf
O que fazem os psicologos da saúde capitulo 02.pdfJayceLayanaCallou
 
Aula 8 fenômenos físicos e químicos - 2014
Aula 8   fenômenos físicos e químicos - 2014Aula 8   fenômenos físicos e químicos - 2014
Aula 8 fenômenos físicos e químicos - 2014profNICODEMOS
 
Apresentação Ricci - Fórum Social Mundial
Apresentação Ricci - Fórum Social MundialApresentação Ricci - Fórum Social Mundial
Apresentação Ricci - Fórum Social MundialBruno César Dos Santos
 
A5 introdução citológica.célula
A5 introdução citológica.célulaA5 introdução citológica.célula
A5 introdução citológica.célulaSimone Costa
 
Mapa mental-citologia-le a
Mapa mental-citologia-le aMapa mental-citologia-le a
Mapa mental-citologia-le amyllenagranja1
 
Tecidos do corpo humano
Tecidos do corpo humanoTecidos do corpo humano
Tecidos do corpo humanojufabandeira
 
Aula sistema circulatorio
Aula sistema circulatorioAula sistema circulatorio
Aula sistema circulatorioLuciano Quadros
 
Aula 1º Ano Ensino Médio: Histologia animal/humana
Aula 1º Ano Ensino Médio: Histologia animal/humanaAula 1º Ano Ensino Médio: Histologia animal/humana
Aula 1º Ano Ensino Médio: Histologia animal/humanaRonaldo Santana
 
Anatomia humana sistema esquelético
Anatomia humana   sistema esqueléticoAnatomia humana   sistema esquelético
Anatomia humana sistema esqueléticoKarinne Ferreira
 
8 ano principais tipos de tecidos
8 ano principais tipos de tecidos8 ano principais tipos de tecidos
8 ano principais tipos de tecidoscrisbassanimedeiros
 
Egito – o vale dos reis
Egito – o vale dos reisEgito – o vale dos reis
Egito – o vale dos reisvaltermn
 

La actualidad más candente (20)

ORGANIZAÇÃO DO CORPO 6 ANO.23.pptx
ORGANIZAÇÃO DO CORPO 6 ANO.23.pptxORGANIZAÇÃO DO CORPO 6 ANO.23.pptx
ORGANIZAÇÃO DO CORPO 6 ANO.23.pptx
 
Músculos
MúsculosMúsculos
Músculos
 
8 ano cap 2 estudo das células
8 ano cap 2 estudo das células8 ano cap 2 estudo das células
8 ano cap 2 estudo das células
 
O que fazem os psicologos da saúde capitulo 02.pdf
O que fazem os psicologos da saúde capitulo 02.pdfO que fazem os psicologos da saúde capitulo 02.pdf
O que fazem os psicologos da saúde capitulo 02.pdf
 
Ciclo Celular
Ciclo CelularCiclo Celular
Ciclo Celular
 
Tecido ósseo pdf
Tecido ósseo pdfTecido ósseo pdf
Tecido ósseo pdf
 
Aula 8 fenômenos físicos e químicos - 2014
Aula 8   fenômenos físicos e químicos - 2014Aula 8   fenômenos físicos e químicos - 2014
Aula 8 fenômenos físicos e químicos - 2014
 
Apresentação Ricci - Fórum Social Mundial
Apresentação Ricci - Fórum Social MundialApresentação Ricci - Fórum Social Mundial
Apresentação Ricci - Fórum Social Mundial
 
Histologia Tecido Ósseo
Histologia Tecido ÓsseoHistologia Tecido Ósseo
Histologia Tecido Ósseo
 
A5 introdução citológica.célula
A5 introdução citológica.célulaA5 introdução citológica.célula
A5 introdução citológica.célula
 
Mapa mental-citologia-le a
Mapa mental-citologia-le aMapa mental-citologia-le a
Mapa mental-citologia-le a
 
Guerra fria
Guerra fria  Guerra fria
Guerra fria
 
Tecidos do corpo humano
Tecidos do corpo humanoTecidos do corpo humano
Tecidos do corpo humano
 
Aula sistema circulatorio
Aula sistema circulatorioAula sistema circulatorio
Aula sistema circulatorio
 
Bioquímica celular
Bioquímica celularBioquímica celular
Bioquímica celular
 
Aula 1º Ano Ensino Médio: Histologia animal/humana
Aula 1º Ano Ensino Médio: Histologia animal/humanaAula 1º Ano Ensino Médio: Histologia animal/humana
Aula 1º Ano Ensino Médio: Histologia animal/humana
 
Anatomia humana sistema esquelético
Anatomia humana   sistema esqueléticoAnatomia humana   sistema esquelético
Anatomia humana sistema esquelético
 
8 ano principais tipos de tecidos
8 ano principais tipos de tecidos8 ano principais tipos de tecidos
8 ano principais tipos de tecidos
 
Egito – o vale dos reis
Egito – o vale dos reisEgito – o vale dos reis
Egito – o vale dos reis
 
Células
CélulasCélulas
Células
 

Similar a GeoDjango

Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoChristiano Anderson
 
Mapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjangoMapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjangotdc-globalcode
 
Mapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjangoMapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjangotdc-globalcode
 
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIGeo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIChristiano Anderson
 
2016 - O uso do DSGTools na produção de geoinformação
2016 - O uso do DSGTools na produção de geoinformação2016 - O uso do DSGTools na produção de geoinformação
2016 - O uso do DSGTools na produção de geoinformaçãoGeorge Porto Ferreira
 
Suporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho ReportSuporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho ReportAmbiente Livre
 
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Dextra Sistemas / Etec Itu
 
WebSIG Out-of-the-Box com MapGuide Open Source e MapGuide Maestro
WebSIG Out-of-the-Box com MapGuide Open Source e MapGuide MaestroWebSIG Out-of-the-Box com MapGuide Open Source e MapGuide Maestro
WebSIG Out-of-the-Box com MapGuide Open Source e MapGuide MaestroPedro Venancio
 
2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...
2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...
2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...George Porto Ferreira
 
P1
P1P1
P1csmp
 
Análise de Redes com QGIS
Análise de Redes com QGISAnálise de Redes com QGIS
Análise de Redes com QGISPedro Venancio
 
Sql4 devs geodatabases
Sql4 devs geodatabasesSql4 devs geodatabases
Sql4 devs geodatabasesResource IT
 
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...Narcélio de Sá
 
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Dextra Sistemas / Etec Itu
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102csmp
 
Pg sem3ex
Pg sem3exPg sem3ex
Pg sem3excsmp
 
O QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEOO QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEOLucas Cavalcante
 

Similar a GeoDjango (20)

Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjango
 
Mapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjangoMapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjango
 
Mapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjangoMapeando a Terra com GeoDjango
Mapeando a Terra com GeoDjango
 
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIGeo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
 
2016 - O uso do DSGTools na produção de geoinformação
2016 - O uso do DSGTools na produção de geoinformação2016 - O uso do DSGTools na produção de geoinformação
2016 - O uso do DSGTools na produção de geoinformação
 
Suporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho ReportSuporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho Report
 
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
 
WebSIG Out-of-the-Box com MapGuide Open Source e MapGuide Maestro
WebSIG Out-of-the-Box com MapGuide Open Source e MapGuide MaestroWebSIG Out-of-the-Box com MapGuide Open Source e MapGuide Maestro
WebSIG Out-of-the-Box com MapGuide Open Source e MapGuide Maestro
 
2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...
2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...
2018 - Ferramentas Livres para Produção e Disseminação de Dados Geoespaciais ...
 
P1
P1P1
P1
 
Google apps script - Parte - 1
Google apps script - Parte - 1Google apps script - Parte - 1
Google apps script - Parte - 1
 
Análise de Redes com QGIS
Análise de Redes com QGISAnálise de Redes com QGIS
Análise de Redes com QGIS
 
Sql4 devs geodatabases
Sql4 devs geodatabasesSql4 devs geodatabases
Sql4 devs geodatabases
 
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
 
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102
 
Pg sem3ex
Pg sem3exPg sem3ex
Pg sem3ex
 
O QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEOO QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEO
 

Más de Christiano Anderson

MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16Christiano Anderson
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Christiano Anderson
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 

Más de Christiano Anderson (18)

Meetup MUG-RS KingHost
Meetup MUG-RS KingHostMeetup MUG-RS KingHost
Meetup MUG-RS KingHost
 
certificadoTDC2016Floripa
certificadoTDC2016FloripacertificadoTDC2016Floripa
certificadoTDC2016Floripa
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Big Data Latinoware 2014
Big Data Latinoware 2014Big Data Latinoware 2014
Big Data Latinoware 2014
 
Big Data - Conceitos Básicos
Big Data - Conceitos BásicosBig Data - Conceitos Básicos
Big Data - Conceitos Básicos
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Scrum
ScrumScrum
Scrum
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
Python MongoDB no MongoSP
Python MongoDB no MongoSPPython MongoDB no MongoSP
Python MongoDB no MongoSP
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Python and MongoDB
Python and MongoDBPython and MongoDB
Python and MongoDB
 

GeoDjango

  • 2. Sobre o palestrante ● Sócio fundador da Nodeware; ● 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. Agenda ● Georreferenciamento; ● Padrões GIS; ● Bases Geográficas; ● Tecnologias; ● GeoDjango; ● Admin; ● OpenStreetMap; ● MapBox; ● OpenLayers;
  • 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 é;
  • 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. 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. 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. Projetos ● OpenStreetMap; ● OpenLayers; ● MapBox; ● PostGIS; ● Google Maps; ● GeoDjango;
  • 11. GeoDjango ● Módulo Django para criar aplicações geográficas; ● 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. 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. Comparativo bases geográficas Fonte: https://docs.djangoproject.com/en/1.5/ref/contrib/gis/db-api/
  • 14. Instalação do PostGIS A maioria das distribuições já possuem o pacote pronto do PostGIS; Portanto, se deseja a versão 2.0.2, é necessário compilar na mão ou usar repositório alternativo;
  • 15. Configuração DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'culturaeduca', 'USER': 'nodeware', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }
  • 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 informações geográficas e vetoriais; ● Descreve geometrias, pontos e polígonos de áreas geográficas;
  • 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. 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. 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 Município 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 SÃO PAULO
  • 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. 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. 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. 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. 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. 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/