SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

Série Evangelho no Lar - Pão Nosso - Cap. 43 - Boas Maneiras
Série Evangelho no Lar - Pão Nosso - Cap. 43 - Boas ManeirasSérie Evangelho no Lar - Pão Nosso - Cap. 43 - Boas Maneiras
Série Evangelho no Lar - Pão Nosso - Cap. 43 - Boas ManeirasRicardo Azevedo
 
Vida feliz (psicografia divaldo pereira franco espirito joanna de angelis)
Vida feliz (psicografia divaldo pereira franco   espirito joanna de angelis)Vida feliz (psicografia divaldo pereira franco   espirito joanna de angelis)
Vida feliz (psicografia divaldo pereira franco espirito joanna de angelis)Márcia Ap Rodrigues
 
Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...
Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...
Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...Cynthia Castro
 
Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...
Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...
Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...Cynthia Castro
 
Cei 100407-ii-cap.1 e 2-o passamento e espíritos felizes
Cei 100407-ii-cap.1 e 2-o passamento e espíritos felizesCei 100407-ii-cap.1 e 2-o passamento e espíritos felizes
Cei 100407-ii-cap.1 e 2-o passamento e espíritos felizescarlos freire
 
Palestra Instituto Espírita de Educação - Preguiça Frente à Lei do Trabalho
Palestra Instituto Espírita de Educação - Preguiça Frente à Lei do TrabalhoPalestra Instituto Espírita de Educação - Preguiça Frente à Lei do Trabalho
Palestra Instituto Espírita de Educação - Preguiça Frente à Lei do TrabalhoInstituto Espírita de Educação
 
Sexualidade sob a ótica espírita
Sexualidade sob a ótica espírita Sexualidade sob a ótica espírita
Sexualidade sob a ótica espírita Rogerio R. Lima Cisi
 
Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...
Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...
Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...Antonio Braga
 
Ha muitas moradas na casa de meu pai
Ha muitas moradas na casa de meu paiHa muitas moradas na casa de meu pai
Ha muitas moradas na casa de meu paiHenrique Vieira
 
Série Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um pouco
Série Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um poucoSérie Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um pouco
Série Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um poucoRicardo Azevedo
 
O Duplo Etérico - atualidades da ciência espírita
O Duplo Etérico - atualidades da ciência espíritaO Duplo Etérico - atualidades da ciência espírita
O Duplo Etérico - atualidades da ciência espíritaAnderson Santos
 
Os Mensageiros de Francisco Cândido Xavier
Os Mensageiros de Francisco Cândido Xavier  Os Mensageiros de Francisco Cândido Xavier
Os Mensageiros de Francisco Cândido Xavier Fábio Constantino
 
Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...
Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...
Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...Cynthia Castro
 
Os Mensageiros - Capitulo 04 - O Caso Vicente
Os Mensageiros - Capitulo 04 - O Caso VicenteOs Mensageiros - Capitulo 04 - O Caso Vicente
Os Mensageiros - Capitulo 04 - O Caso VicentePatricia Farias
 
Os Mensageiros - A vida no Mundo espiritual Cap 06
Os Mensageiros - A vida no Mundo espiritual Cap 06Os Mensageiros - A vida no Mundo espiritual Cap 06
Os Mensageiros - A vida no Mundo espiritual Cap 06Patricia Farias
 
Indissolubilidade do casamento
Indissolubilidade do casamento Indissolubilidade do casamento
Indissolubilidade do casamento Henrique Vieira
 

Mais procurados (20)

Série Evangelho no Lar - Pão Nosso - Cap. 43 - Boas Maneiras
Série Evangelho no Lar - Pão Nosso - Cap. 43 - Boas ManeirasSérie Evangelho no Lar - Pão Nosso - Cap. 43 - Boas Maneiras
Série Evangelho no Lar - Pão Nosso - Cap. 43 - Boas Maneiras
 
Vida feliz (psicografia divaldo pereira franco espirito joanna de angelis)
Vida feliz (psicografia divaldo pereira franco   espirito joanna de angelis)Vida feliz (psicografia divaldo pereira franco   espirito joanna de angelis)
Vida feliz (psicografia divaldo pereira franco espirito joanna de angelis)
 
Missionarios da luz
Missionarios da luzMissionarios da luz
Missionarios da luz
 
Cei 100414-ii-cap.2 e 3-espíritos felizes e medianos
Cei 100414-ii-cap.2 e 3-espíritos felizes e medianosCei 100414-ii-cap.2 e 3-espíritos felizes e medianos
Cei 100414-ii-cap.2 e 3-espíritos felizes e medianos
 
Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...
Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...
Seminário Memórias de Um Suicida - Segunda Parte - Capítulo III - O Manicômio...
 
Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...
Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...
Evolução em Dois Mundos - Segunda Parte - Capítulos XVI, XVII e XVIII - Deter...
 
Cei 100407-ii-cap.1 e 2-o passamento e espíritos felizes
Cei 100407-ii-cap.1 e 2-o passamento e espíritos felizesCei 100407-ii-cap.1 e 2-o passamento e espíritos felizes
Cei 100407-ii-cap.1 e 2-o passamento e espíritos felizes
 
Palestra Instituto Espírita de Educação - Preguiça Frente à Lei do Trabalho
Palestra Instituto Espírita de Educação - Preguiça Frente à Lei do TrabalhoPalestra Instituto Espírita de Educação - Preguiça Frente à Lei do Trabalho
Palestra Instituto Espírita de Educação - Preguiça Frente à Lei do Trabalho
 
Sexualidade sob a ótica espírita
Sexualidade sob a ótica espírita Sexualidade sob a ótica espírita
Sexualidade sob a ótica espírita
 
Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...
Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...
Livro dos espiritos - questoes 803 a 805 - igualdade natural e desigualdade d...
 
Ha muitas moradas na casa de meu pai
Ha muitas moradas na casa de meu paiHa muitas moradas na casa de meu pai
Ha muitas moradas na casa de meu pai
 
Série Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um pouco
Série Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um poucoSérie Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um pouco
Série Evangelho no Lar - Pão Nosso - Cap. 2 - Pensa um pouco
 
Suicídio e loucura
Suicídio e loucuraSuicídio e loucura
Suicídio e loucura
 
O Duplo Etérico - atualidades da ciência espírita
O Duplo Etérico - atualidades da ciência espíritaO Duplo Etérico - atualidades da ciência espírita
O Duplo Etérico - atualidades da ciência espírita
 
Os Mensageiros de Francisco Cândido Xavier
Os Mensageiros de Francisco Cândido Xavier  Os Mensageiros de Francisco Cândido Xavier
Os Mensageiros de Francisco Cândido Xavier
 
Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...
Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...
Evolução em Dois Mundos - Segunda Parte - Capítulos VIII, IX, X e XI - Matrim...
 
Os Mensageiros - Capitulo 04 - O Caso Vicente
Os Mensageiros - Capitulo 04 - O Caso VicenteOs Mensageiros - Capitulo 04 - O Caso Vicente
Os Mensageiros - Capitulo 04 - O Caso Vicente
 
Os Mensageiros - A vida no Mundo espiritual Cap 06
Os Mensageiros - A vida no Mundo espiritual Cap 06Os Mensageiros - A vida no Mundo espiritual Cap 06
Os Mensageiros - A vida no Mundo espiritual Cap 06
 
Jesus
JesusJesus
Jesus
 
Indissolubilidade do casamento
Indissolubilidade do casamento Indissolubilidade do casamento
Indissolubilidade do casamento
 

Semelhante 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
 

Semelhante 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
 

Mais 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
 

Mais 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/