pgday - palestra postgis + pgrouting
DESCRIPTION
Palestra ministrada no evento PGDay sobre PostGIS + PgRountingTRANSCRIPT
![Page 1: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/1.jpg)
Conceitos SIG
Sistema de informação geográfica
![Page 2: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/2.jpg)
Sistema de informação geográfica
Permitem aos usuários criar consultas interativas, analisar informações espaciais e editar dados cartográficos.Apresentar os resultados visualmente(mapas) em todas essas operações.
![Page 3: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/3.jpg)
Camadas● Hidrografia (Meio ambiente)
● Rodovias, Ruas (Transporte)
● Zona, Setor, Talhões (Agricultura)
● Setor, Quadra, Lotes (Gestão municipal)
● Gasodutos, Válvulas (Redes Gás)
● Fibra óptica (Telecomunicações)
● Redes de água e esgoto (Saneamento Básico)
![Page 4: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/4.jpg)
Feições
● Feição pode ser considerada a forma de representação de objetos em uma mundo real.
● Para um ambiente computacional, um de feições do mesmo tipo pode ser considerada uma camada.
● Ponto, Linha, Polígono
![Page 5: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/5.jpg)
Representações geométricas
● Point. (Pontual)
● LineString. (Linear)
● LinearRing. (Linear Composta)
● Polygon (with holes). (Polígonos)
● MultiPoint.(Pontual Composta)
● MultiLineString.(Linear Composta)
● MultiPolygon. (Poligonal Composta)
● GeometryCollection. (Feições Mistas)
![Page 6: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/6.jpg)
Representação em WKT● POINT (100 300)
● LINESTRING (20 380, 60 340, 120 340, 160 280)
● POLYGON( ( 40 320, 60 380, 120 380, 160 300, 100
260, 40 320) )
● MULTIPOINT(40 300, 80 340, 120 280)
● MULTILINESTRING (( 20 360, 60 380, 100 340, 160
360),(40 280, 80 300, 100 280, 160 300))
● MULTIPOLYGON (((80 320, 60 260, 100 280,80 320),
(100 340, 140 360, 140 300, 100 340)))
![Page 7: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/7.jpg)
Representação do mundo real
![Page 8: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/8.jpg)
Como organizar camadas em um padrão para Sistema de Informação
Geográfica
![Page 9: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/9.jpg)
Organização das camadas (Tabelas)
![Page 10: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/10.jpg)
Organização das camadas (Tabelas)
clientes.shpclientes.shxclientes.dbf
ruas.shpruas.shxruas.dbf
lotes.shp,lotes.shxlotes.dbf
elevacao.shpelevacao.shxelevacao.dbf
uso_territorial.shpuso_territorial.shpuso_territorial.dbf
![Page 11: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/11.jpg)
Arquivos de exportação
Extensão Descrição
*.shp,*.shp,*.dbf) Arquivos de exportação ArcGIS
*.dxf,*.dwg Arquivos de exportação do AutoCAD
*.tab, *.map,*.dat,*.id Arquivos de exportação do MapInfo
Mais informações sobre formatos
http://en.wikipedia.org/wiki/GIS_file_formats
![Page 12: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/12.jpg)
Entendendo o formatoShapefile
![Page 13: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/13.jpg)
Entendendo o formatoShapefile
![Page 14: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/14.jpg)
Importação dos arquivos
![Page 15: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/15.jpg)
Importação dos arquivos
![Page 16: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/16.jpg)
Comando de importação
● shp2pgsql.exe -s 4326 clientes.shp clientes > clientes.sql
shp2pgsql.exe – Aplicação instalada junto com a extensão PostGIS;
-s – Parâmetro usado para setar o sistema de coordenadas geográfico;
4326 – Numero equivalente ao sistema de coordenada
clientes.shp – E o nome ‘do arquivo’ shape que iremos importar.
clientes – Nome da Tabela que sera criada no banco de dados
PostgreSQL/PostGIS.
clientes.sql – Arquivo que sera gravado na pasta do “.exe” com a expressão sql referente a criação da tabela espacial e seus atributos
![Page 17: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/17.jpg)
Interface de importação
Instalado junto com o complemento shp2pgsql-gui● Importação de Shapefiles● Uso via interface gráfica● Instalação PostgreSQLPostgreSQL\versão\bin\postgisgui\shp2pgsql-gui.exe
![Page 18: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/18.jpg)
PostGIS - Entendendo as funcionalidades disponíveis
![Page 19: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/19.jpg)
Introdução PostGIS
● PostGIS e uma extensão ao banco de dadosobjeto-relacional PostgreSQL ,● Permite armazenamento de objetos SIG nobanco de dados .● PostGIS inclui suporte para índices espaciais e funções para analise e processamento de objetos SIG.
![Page 20: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/20.jpg)
Criando tabelas especiais
● Criando tabela com tipo de dados espacialCREATE TABLE teste (gid serial primary key, namevarchar(20), geom geometry(LINESTRING) );● Inserindo objeto GISINSERT INTO teste (ID, NAME, GEOM)VALUES (1, 'Primeira Geometria',ST_GeomFromText('LINESTRING(2 3,4 5,6 5,78)'));
![Page 21: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/21.jpg)
Objetos SIG
● Os objetos GIS suportados pelo PostGISsão um superconjunto dos "Simple Features"● Definições OpenGIS Consortium (OGC).● A partir da versão 0.9, PostGIS suportatodos os objetos e funções especificado pelopadrão OGC "Simple Features for SQL".
![Page 22: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/22.jpg)
Padrões OpenGIS WKB e WKT
● A especificação OpenGIS define duas formas padrão de
expressar objetos espaciais:
● ( WKT ) Well-Known-Text
● (WKB) Well-Known-Binary.
● Ambos WKT e WKB incluir informações sobre o tipo do
objeto e as coordenadas que formam o objeto.
![Page 23: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/23.jpg)
Exemplos de WKT
● POINT(0 0)
● LINESTRING(0 0,1 1,1 2)
● POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))
● MULTIPOINT(0 0,1 2)
● MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))
● MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))
● GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))
![Page 24: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/24.jpg)
SRID (Spatial Reference SystemIdentifier )
● A especificação OpenGIS identificador desistema de referencia espacial ( SRID ) .● O SRID e necessária quando a criação deobjetos espaciais para a inserção nobanco de dados.
![Page 25: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/25.jpg)
SRID (Spatial Reference SystemIdentifier )
● Cada tipo de sistema de projeção, SRID serve para um aglomerado territorial específico.
● http://spatialreference.org/
![Page 26: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/26.jpg)
Funções de conversão
● bytea WKB = ST_AsBinary(geometry);● text WKT = ST_AsText(geometry);● geometry = ST_GeomFromWKB(byteaWKB, SRID);● geometry = ST_GeometryFromText(textWKT, SRID);
![Page 27: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/27.jpg)
Exemplo
● Por exemplo, uma declaração válida deinserção para criar e inserir um objetoespacial OGC seria:INSERT INTO tabela_geografica ( the_geom, the_name )VALUES ( ST_GeomFromText('POINT(-126.4 45.32)', 312), 'Um lugar');
![Page 28: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/28.jpg)
2D e 3D
● POINT: Criando uma tabela com a geometria de pontos 2d
CREATE TABLE tabela_2d(gid serial PRIMARY KEY,the_geog geography(POINT,4326) );● Criando uma tabela com a coordenada z para o
ponto.
CREATE TABLE tabela_3d(gid serial PRIMARY KEY,the_geog geography(POINTZ,4326) );
![Page 29: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/29.jpg)
Metadados
● Para as informações das tabelas espaciaisSELECT * FROM geography_columns;● Lista de sistemas de coordenadasdisponíveisSELECT * FROM spatial_ref_sys
![Page 30: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/30.jpg)
Metadados
Visão GEOMETRY_COLUMNS
● F_TABLE_SCHEMA - Esquema que a tabela foi criada
● F_TABLE_NAME - Nome da tabela espacial criada
● F_GEOMETRY_COLUMN - Nome da coluna espacial da tabela
● COORD_DIMENSION – Dimensões da geometria 2D, 3D ...
● SRID – Sistema de projeção de coordenadas
● TYPE – Ponto, Linha, Polígono ...
![Page 31: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/31.jpg)
Metadados
● Tabela SPATIAL_REF_SYSOnde são gravadas as informações sobre sistemas de coordenadas utilizados no banco● SRID – ID para sistema de projeção de coordenadas geográficas
● AUTH_NAME – Nome referência
● AUTH_SRID - Nome referência SRID
● SRTEXT – Datum que representa o conjunto de parâmetros que define o sistema de coordenadas.
● PROJ4TEXT – Datum usado para a biblioteca de conversão postgis PROJ4
![Page 32: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/32.jpg)
Quando usar o tipo geográficoou o tipo geométrico
● Geográficolongitude / latitudeha menos funções definidas● GeométricoConjunto maior de funções disponíveisProjetado ou linear
![Page 33: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/33.jpg)
Justificativas para uso detabelas Geográficas
● Dados globais, disponibilidade continental● Um conhecimento restrito sobre sistemasde coordenadas georreferenciados● Uso de funcionalidades simples
![Page 34: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/34.jpg)
Exemplo de um sistema Geográfico
● WGS 84 : ● Sistema onde é possível representar os atributos espaciais de forma global.
● Fonte :http://spatialreference.org/
![Page 35: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/35.jpg)
Justificativas para uso detabelas Geométricas
● Dados restritos a um estado ou municípiopor exemplo● Número bem maior de funcionalidades para cálculos geográficos● Maior precisão na área mais restrita
![Page 36: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/36.jpg)
Exemplo de um sistema Geométrico
Sad69 / utm zone 23s : Sistema que possibilita uma representação mais específica. Fonte http://spatialreference.org/
Geográficas
![Page 37: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/37.jpg)
Relacionamentos
● Topológicos: Determinam se dois objetos interceptam-se ou não e qual o tipo de topologia existente entre eles.
● Métricos: Relações que tratam da distancia existente
entre feições geográficas;
● De ordem: Diz como os objetos estão posicionados ou
relacionados entre si (a norte, ao sul, a direita, etc).
![Page 38: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/38.jpg)
![Page 39: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/39.jpg)
![Page 40: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/40.jpg)
Índices espaciais
![Page 41: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/41.jpg)
Índices espaciais
● Permite que o banco de dados tenha eficiência
● Grande volume de informações
● O PostgreSQL + PostGIS utiliza 3 tipos de índices.
● B-Tree (não espacial)
● R-Tree (espacial)
● GIST (espacial)
![Page 42: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/42.jpg)
Índices espaciais (B-Trees)
● Usados para dados que podem serordenados ao longo de um eixo.● Dados não GIS (numero, letra inicial, datas)● Não e utilizado como índice espacial
![Page 43: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/43.jpg)
Índices espaciais (R-Trees)
● Dividem os dados em retângulos,subretângulos e sub-sub-retângulos e etc.● R-Trees são usadas pelos bancos de dados espaciais para indexar dados cartográficos.
![Page 44: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/44.jpg)
Índices espaciais (GIST)
● GIST (Generalized Search Trees)● Dividem dados em:
● “things to one side” (feições para um lado)
● “things which overlap” (feições que se sobrepõem)
● “things which are inside” (feições que estão dentro)
![Page 45: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/45.jpg)
Índices espaciais (GIST)
● Usado para acelerar consultas em estruturas geométricas
irregulares
CREATE INDEX NOME_INDICE ON NOME_TABELA USING
GIST (COLUNA_ESPACIAL)● Forçando a atualização índice espacial com o comando.
VACUUM ANALYZE NOME_TABELA COLUNA_ESPACIAL
![Page 46: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/46.jpg)
Índices (Vantagens)
● Na construção de uma "query" comoperadores● Exemplo &&, pode tirar proveito do índiceespacial de GiST.● Funções como distance() não pode usar oíndice para otimizar suas operações.
![Page 47: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/47.jpg)
Operadores
&& → Este operador diz se caixa delimitada de uma
geometria sobrepõe caixa delimitada de outra.
~= → Estes operadores testam se duas geometrias são
geometricamente idênticas. Por exemplo,se '
POLYGON((0 0,1 1,1 0,0 0)) ' esta igual a '
POLYGON((0 0,1 1,1 0,0 0)) '.
= → Este operador e mais ingenuo, só testa se as caixas
delimitadas para geometrias são as mesmas.
![Page 48: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/48.jpg)
Estrutura de dados
![Page 49: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/49.jpg)
Funções PostGIS
● Link completo com as funçõesdisponibilizada pela extensão espacialPostGIShttp://www.postgis.us/downloads/postgis20_cheatsheet.html
![Page 50: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/50.jpg)
Junções Espaciais
● Junções normais usam uma chave comumSELECT a.var1, b.var2 FROM a,b WHERE a.id =b.id● Junções espaciais utilizam a chave universal delocalizaçãoSELECT a.var1, b.var2 FROM a,b WHEREST_Intersects(a.geom = b.geom)
![Page 51: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/51.jpg)
Junções Espaciais
● Relacione os bares que estão a 250metros de um hospitalSELECT h.nome,b.nome, b.geometria FROM hospitais h, bares b WHERE h.nome = 'Santa casa de São Paulo' AND DWITHIN( h.geometria,b.geometria, 250);
![Page 52: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/52.jpg)
Junções Espaciais
CREATE VIEW areas_voto AS SELECTST_Intersection( a.geometria, m.geometria) AS intersection, ST_Area(a.geometria) AS va_area,m.name FROM areas a, municipio mWHERE ST_Intersects( a.geometria, m.geometria) AND m.name='São Paulo';
![Page 53: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/53.jpg)
Projeção de Coordenadas
Veja o SRID utilizando a função ST_SRIDSELECT ST_SRID(geometria) FROMtabela_especial LIMIT 1;SRID do sistema WGS 84SELECT srtext FROM spatial_ref_sysWHERE srid = 4326;
![Page 54: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/54.jpg)
Projeção de Coordenadas
● "GEOGCS["WGS
84",DATUM["WGS_1984",SPHEROID["WGS
84",6378137,298.257223563,AUTHORITY[
"EPSG","7030"]],AUTHORITY["EPSG","63
26"]],PRIMEM["Greenwich",0,AUTHORITY
["EPSG","8901"]],UNIT["degree",0.017453
2925199433,AUTHORITY["EPSG","9122"]]
,AUTHORITY["EPSG","4326"]]"
![Page 55: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/55.jpg)
Projeção de Coordenadas
● PROJ4 – Biblioteca de reprojeção usadapelo PostGISSELECT proj4text FROM spatial_ref_sysWHERE srid = 4326;● "+proj=longlat +datum=WGS84 +no_defs "
![Page 56: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/56.jpg)
Projeção de Coordenadas
● Para usar a reprojeção de coordenadas utiliza-se a função ST_TransformSELECT ST_AsText(geometria) FROMrodovias LIMIT 1;SELECT ST_AsText(ST_Transform(geometria,4326))FROM rodovias LIMIT 1;
![Page 57: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/57.jpg)
Image Rasters
![Page 58: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/58.jpg)
Matriz
![Page 59: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/59.jpg)
Ortofoto
![Page 60: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/60.jpg)
Raster gradiente
![Page 61: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/61.jpg)
Temático
![Page 62: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/62.jpg)
O que são bandas?
![Page 63: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/63.jpg)
Composição RGB
![Page 64: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/64.jpg)
Carregando e Criando Rasters
● Para a maioria dos casos, carregar arquivos raster existentes
● Usando o gerenciador raster2pgsql.● Que é nativo no conjunto de aplicativos
postgis.● Antes eram executados scripts python
GDAL para isso.
![Page 65: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/65.jpg)
Usando raster2pgsql paracarregamento de arquivos raster● O raster2pgsql é um carregador de arquivos
raster , Carrega arquivos suportados pelos formatos raster GDAL em SQL.
● Adequado para o carregamento em uma tabela espacial no PostGIS raster.
● Ele é capaz de carregar pastas com vários arquivos raster.
● Criação de visões globais(overviews) de rasters
![Page 66: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/66.jpg)
Exemplosraster2pgsql -s 4236 -I -C -M *.tif -F -t 100x100 public.tabela_raster > raster.sql
psql -d nome_do_banco -f raster.sql
-s - <SRID> Atribuir saída raster com SRID especificado.
-l - OVERVIEW_FACTOR Criar visão geral(overview) do raster.
-C - Aplicando restrição raster -- srid, tamanho de pixel etc. para garantir que o
raster está devidamente registrado na visão(view) raster_columns.
-M - Vacuum analyze a tabela de raster.
-F - Adicionar coluna com o name do arquivo
-t TILE_SIZE - Cortar raster em partes(tiles) para ser inserido em um registro da
tabela (table row). TILE_SIZE é expressa como WIDTHxHEIGHT.
![Page 67: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/67.jpg)
Rasters Overviews
● raster_overviews catálogos informações sobre ascolunas da tabela raster utilizados para overviews● Overviews são catalogados em ambos raster_columns e
raster_overviews porque são rasters em seu próprio direito, mas também servem a um propósito especial.
● Ser uma definição menos de uma tabela de resolução mais alta(raster).
● Ele só é gerado quando parametrizamos -l no carregamento do raster.
![Page 68: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/68.jpg)
Página do INPE (catalogo deimagens)
● Para acesso ao catalogo de imagens do�
● INPE ( Instituto Nacional de Pesquisas● Espaciais)● � http://www.dgi.inpe.br/CDSR/
![Page 69: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/69.jpg)
PGRouting (Rotas e caminhos)
![Page 70: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/70.jpg)
PgRouting
● PgRouting amplia à extensão espacial PostGIS do banco PostgreSQL
● Funcionalidades de roteamento geoespacial
● PgRouting está disponível sob a licença GPLv2 e é apoiado por uma comunidade crescente de indivíduos, empresas e organizações.
![Page 71: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/71.jpg)
Vantagens
● Dados podem ser visualizados por muitos SIGS Opensource como QGIS, UDIG …
● Alterações podem ser aplicadas instantaneamente, sem a necessidade de realizar cálculos adicionais (prévios).
● O parâmetro "custo" pode ser calculado de forma dinâmica através de SQL.
![Page 72: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/72.jpg)
PgRouting fornece funções para:● All Pairs Shortest Path, Johnson’s Algorithm
● All Pairs Shortest Path, Floyd-Warshall Algorithm
● Shortest Path A*
● Bi-directional Dijkstra Shortest Path
● Bi-directional A* Shortest Path
● Shortest Path Dijkstra
● Driving Distance
● K-Shortest Path, Multiple Alternative Paths
● K-Dijkstra, One to Many Shortest Path
● Traveling Sales Person
● Turn Restriction Shortest Path (TRSP)
● Shortest Path Shooting Star
![Page 73: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/73.jpg)
OpenStreetMap e PgRouting
● OpenStreetMap é uma fonte de dados perfeito para usar para pgRouting , porque é livremente disponível e não tem restrições técnicas em termos de processamento de dados.
![Page 74: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/74.jpg)
OpenStreetMap estruturade dados topológica :
● Nodes - são pontos com uma posiçãogeográfica.● Ways - são listas de nós , o que representauma polilinha ou polígono.● Relations - são grupos de nós , caminhos eoutras relações que podem ser atribuídosdeterminadas propriedades.● Tags - podem ser aplicadas a nós , formas ourelações e consistem de pares name = value.
![Page 75: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/75.jpg)
osm2pgrouting
● osm2pgrouting é uma ferramenta de linha decomando que facilita a importação de dados doOpenStreetMap em um banco de dadospgRouting .● Baseia-se a topologia da rede de roteamentoautomaticamente e cria as tabelas para os tiposde recursos e classes de estradas.osm2pgrouting foi escrito principalmente porDaniel Wendt e agora está hospedado no sitedo projeto pgRouting
![Page 76: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/76.jpg)
Windows OSM2PO - Routing OnOpenStreetMap
● C:\osm2po-4.2.30>java -jar osm2po-core-4.2.30-signed.jar prefix=at "C:\temp\map.osm.pbf"
● psql -U [username] -d [dbname] -q -f "C:\osm2po-4.2.30\at\at_2po_4pgr.sql"
![Page 77: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/77.jpg)
Exemplo
Vamos testar agora! Rota da source(origem) # 1 para target(destino) # 3000 usando
pgr_dijkstra:
SELECT seq, id1 AS node, id2 AS edge, cost, geom
FROM pgr_dijkstra(
'SELECT id, source, target, st_length(geom) as cost FROM
network.logradouro',
1, 3000, false, false) as di
JOIN network.logradouro log
ON di.id2 = log.id ;
![Page 78: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/78.jpg)
![Page 79: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/79.jpg)
Midware GeoserverAcesso aos serviços WMS e WFS
![Page 80: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/80.jpg)
WMS – Web Map Service
● Interface HTTP simples● Interface usada para solicitar imagens parao cliente● Imagens estas que são geradas a partir deuma fonte de dados espacial● Essas imagens são geradas pelo midware(Geoserver)
![Page 81: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/81.jpg)
WMS – Web Map Service● http://<endereco>:<posta>/geoserver/workspace/wms
● ?service=WMS
● &version=1.1.0
● &request=GetMap
● &layers=sao_paulo_ws:cidades_principais
● &styles=default
● &bbox=xmin,ymin,xmax,ymax
● &width=531&height=330
● &srs=EPSG:4326
● &format=image%2Fpng
![Page 82: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/82.jpg)
WMS – Web Map Service
Executando camada WMS via navegador
![Page 83: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/83.jpg)
Servico pelo WMS viaOpenLayers
![Page 84: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/84.jpg)
WFS – Web Feature Service
● Padrão OGC WFS permite que um clienterecupere dados geoespaciais codificados● Estes dados podem atuar em váriosformatos também OGC● Exemplo GML (Geography MarkupLanguage) ou GeoJson ...● Em vários serviços Web Feature "
![Page 85: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/85.jpg)
WFS – Web Feature Service
● http://endereco:porta/geoserver/workspace/ows
● ?service=WFS //tipo
● &version=1.0.0 //versao
● &request=GetFeature //metodo
● &typeName=sao_paulo_ws:cidades_principais
● &maxFeatures=50 //qtde feições
● &outputFormat=json // formato de resposta
// geojson ou gml
![Page 86: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/86.jpg)
GeoJSON
● {"type":"FeatureCollection","features":[{"type":"Feature","id":"tasmania_cities.1","geometry":{"type":"MultiPoint","coordinates":[[147.2910004483,-42.851001816890005]]},"geometry_name":"the_geom","properties":{"CITY_NAME":"Hobart","ADMIN_NAME":"Tasmania","CNTRY_NAME":"Australia","STATUS":"Provincial capital","POP_CLASS":"100,000 to 250,000"}}],"crs":{"type":"EPSG","properties":{"code":"4326"}}}
![Page 87: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/87.jpg)
GML
![Page 88: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/88.jpg)
Outros formatos
![Page 89: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/89.jpg)
Dicas
● Se necessário, use funções PostGIS em instruções escritas com
PL/pgSQL.
● A utilização criteriosa dos índices espaciais pode contribuir no
desempenho durante a execução das consultas.
● O ajuste do banco de dados certamente faz diferença (performance
tuning).
● As copias de segurança devem ser mantidas sempre atualizadas
(estrategia de backup).
● Permissões de acessos aos objetos também deve ser revista
periodicamente (politica de segurança).
![Page 90: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/90.jpg)
Exemplo de aplicação
![Page 91: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/91.jpg)
![Page 92: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/92.jpg)
Referências
http://postgis.net.http://pgbr.postgresql.org.br/2009/palestras/aud1/http://www.slideshare.net/aitproeg/postgishttp://docs.geoserver.org/http://www.opengeospatial.org/standards
![Page 94: PGDAY - Palestra PostGIS + PgRouting](https://reader033.vdocuments.com.br/reader033/viewer/2022052202/557d80c7d8b42ad67d8b4dc2/html5/thumbnails/94.jpg)
Obrigado!Jairo de [email protected]