2. 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.
4. 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
11. 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
16. 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
17. Interface de importação
Instalado junto com o complemento
shp2pgsql-gui
● Importação de Shapefiles
● Uso via interface gráfica
● Instalação PostgreSQL
PostgreSQLversãobinpostgisguishp2pgs
ql-gui.exe
19. Introdução PostGIS
● PostGIS e uma extensão ao banco de dados
objeto-relacional PostgreSQL ,
● Permite armazenamento de objetos SIG no
banco de dados .
● PostGIS inclui suporte para índices espaciais
e funções para analise e processamento de
objetos SIG.
20. Criando tabelas especiais
● Criando tabela com tipo de dados espacial
CREATE TABLE teste (gid serial primary key, name
varchar(20), geom geometry(LINESTRING) );
● Inserindo objeto GIS
INSERT INTO teste (ID, NAME, GEOM)
VALUES (1, 'Primeira Geometria',
ST_GeomFromText('LINESTRING(2 3,4 5,6 5,78)'));
21. Objetos SIG
● Os objetos GIS suportados pelo PostGIS
são um superconjunto dos "Simple Features"
● Definições OpenGIS Consortium (OGC).
● A partir da versão 0.9, PostGIS suporta
todos os objetos e funções especificado pelo
padrão OGC "Simple Features for SQL".
22. 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.
24. SRID (Spatial Reference System
Identifier )
● A especificação OpenGIS identificador de
sistema de referencia espacial ( SRID ) .
● O SRID e necessária quando a criação de
objetos espaciais para a inserção no
banco de dados.
25. SRID (Spatial Reference System
Identifier )
● Cada tipo de sistema de projeção, SRID
serve para um aglomerado territorial
específico.
● http://spatialreference.org/
27. Exemplo
● Por exemplo, uma declaração válida de
inserção para criar e inserir um objeto
espacial OGC seria:
INSERT INTO tabela_geografica (
the_geom, the_name )
VALUES (
ST_GeomFromText('POINT(-126.4 45.32)',
312), 'Um lugar');
28. 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) );
29. Metadados
● Para as informações das tabelas espaciais
SELECT * FROM geography_columns;
● Lista de sistemas de coordenadas
disponíveis
SELECT * FROM spatial_ref_sys
30. 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 ...
31. Metadados
● Tabela SPATIAL_REF_SYS
Onde 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
32. Quando usar o tipo geográfico
ou o tipo geométrico
● Geográfico
longitude / latitude
ha menos funções definidas
● Geométrico
Conjunto maior de funções disponíveis
Projetado ou linear
33. Justificativas para uso de
tabelas Geográficas
● Dados globais, disponibilidade continental
● Um conhecimento restrito sobre sistemas
de coordenadas georreferenciados
● Uso de funcionalidades simples
34. Exemplo de um sistema
Geográfico
● WGS 84 :
● Sistema onde é possível representar os atributos espaciais de forma global.
● Fonte :http://spatialreference.org/
35. Justificativas para uso de
tabelas Geométricas
● Dados restritos a um estado ou município
por exemplo
● Número bem maior de funcionalidades
para cálculos geográficos
● Maior precisão na área mais restrita
36. 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
37. 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).
41. Í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)
42. Índices espaciais (B-Trees)
● Usados para dados que podem ser
ordenados ao longo de um eixo.
● Dados não GIS (numero, letra inicial,
datas)
● Não e utilizado como índice espacial
43. Í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.
44. Í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)
45. Í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
46. Índices (Vantagens)
● Na construção de uma "query" com
operadores
● Exemplo &&, pode tirar proveito do índice
espacial de GiST.
● Funções como distance() não pode usar o
índice para otimizar suas operações.
47. 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.
49. Funções PostGIS
● Link completo com as funções
disponibilizada pela extensão espacial
PostGIS
http://www.postgis.us/downloads/postgis20_c
heatsheet.html
50. Junções Espaciais
● Junções normais usam uma chave comum
SELECT a.var1, b.var2 FROM a,b WHERE a.id =
b.id
● Junções espaciais utilizam a chave universal de
localização
SELECT a.var1, b.var2 FROM a,b WHERE
ST_Intersects(a.geom = b.geom)
51. Junções Espaciais
● Relacione os bares que estão a 250
metros de um hospital
SELECT 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);
52. Junções Espaciais
CREATE VIEW areas_voto AS SELECT
ST_Intersection(
a.geometria, m.geometria
) AS intersection,
ST_Area(a.geometria) AS va_area,
m.name
FROM areas a, municipio m
WHERE ST_Intersects(
a.geometria, m.geometria
)
AND m.name='São Paulo';
53. Projeção de Coordenadas
Veja o SRID utilizando a função ST_SRID
SELECT ST_SRID(geometria) FROM
tabela_especial LIMIT 1;
SRID do sistema WGS 84
SELECT srtext FROM spatial_ref_sys
WHERE srid = 4326;
55. Projeção de Coordenadas
● PROJ4 – Biblioteca de reprojeção usada
pelo PostGIS
SELECT proj4text FROM spatial_ref_sys
WHERE srid = 4326;
● "+proj=longlat +datum=WGS84 +no_defs "
56. Projeção de Coordenadas
● Para usar a reprojeção de coordenadas utiliza-se
a função ST_Transform
SELECT ST_AsText(geometria) FROM
rodovias LIMIT 1;
SELECT
ST_AsText(ST_Transform(geometria,4326))
FROM rodovias LIMIT 1;
64. 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.
65. Usando raster2pgsql para
carregamento 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
66. Exemplos
raster2pgsql -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.
67. Rasters Overviews
● raster_overviews catálogos informações sobre as
colunas 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.
68. Página do INPE (catalogo de
imagens)
●Para acesso ao catalogo de imagens do
● INPE ( Instituto Nacional de Pesquisas
● Espaciais)
● http://www.dgi.inpe.br/CDSR/
70. 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.
71. 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.
72. 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
73. 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.
74. OpenStreetMap estrutura
de dados topológica :
● Nodes - são pontos com uma posição
geográfica.
● Ways - são listas de nós , o que representa
uma polilinha ou polígono.
● Relations - são grupos de nós , caminhos e
outras relações que podem ser atribuídos
determinadas propriedades.
● Tags - podem ser aplicadas a nós , formas ou
relações e consistem de pares name = value.
75. osm2pgrouting
● osm2pgrouting é uma ferramenta de linha de
comando que facilita a importação de dados do
OpenStreetMap em um banco de dados
pgRouting .
● Baseia-se a topologia da rede de roteamento
automaticamente e cria as tabelas para os tipos
de recursos e classes de estradas.
osm2pgrouting foi escrito principalmente por
Daniel Wendt e agora está hospedado no site
do projeto pgRouting
80. WMS – Web Map Service
● Interface HTTP simples
● Interface usada para solicitar imagens para
o cliente
● Imagens estas que são geradas a partir de
uma fonte de dados espacial
● Essas imagens são geradas pelo midware
(Geoserver)
84. WFS – Web Feature Service
● Padrão OGC WFS permite que um cliente
recupere dados geoespaciais codificados
● Estes dados podem atuar em vários
formatos também OGC
● Exemplo GML (Geography Markup
Language) ou GeoJson ...
● Em vários serviços Web Feature "
85. 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
89. 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).