Conceitos SIG
Sistema de informação geográfica
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.
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)
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
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)
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)))
Representação do mundo real
Como organizar camadas em um padrão para Sistema de Informação
Geográfica
Organização das camadas (Tabelas)
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
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
Entendendo o formatoShapefile
Entendendo o formatoShapefile
Importação dos arquivos
Importação dos arquivos
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
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
PostGIS - Entendendo as funcionalidades disponíveis
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.
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)'));
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".
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.
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))
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.
SRID (Spatial Reference SystemIdentifier )
● Cada tipo de sistema de projeção, SRID serve para um aglomerado territorial específico.
● http://spatialreference.org/
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);
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');
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) );
Metadados
● Para as informações das tabelas espaciaisSELECT * FROM geography_columns;● Lista de sistemas de coordenadasdisponíveisSELECT * FROM spatial_ref_sys
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 ...
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
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
Justificativas para uso detabelas Geográficas
● Dados globais, disponibilidade continental● Um conhecimento restrito sobre sistemasde coordenadas georreferenciados● Uso de funcionalidades simples
Exemplo de um sistema Geográfico
● WGS 84 : ● Sistema onde é possível representar os atributos espaciais de forma global.
● Fonte :http://spatialreference.org/
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
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
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).
Índices espaciais
Í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)
Í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
Í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.
Í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)
Í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
Í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.
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.
Estrutura de dados
Funções PostGIS
● Link completo com as funçõesdisponibilizada pela extensão espacialPostGIShttp://www.postgis.us/downloads/postgis20_cheatsheet.html
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)
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);
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';
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;
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"]]"
Projeção de Coordenadas
● PROJ4 – Biblioteca de reprojeção usadapelo PostGISSELECT proj4text FROM spatial_ref_sysWHERE srid = 4326;● "+proj=longlat +datum=WGS84 +no_defs "
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;
Image Rasters
Matriz
Ortofoto
Raster gradiente
Temático
O que são bandas?
Composição RGB
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.
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
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.
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.
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/
PGRouting (Rotas e caminhos)
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.
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.
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
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.
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.
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
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"
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 ;
Midware GeoserverAcesso aos serviços WMS e WFS
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)
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
WMS – Web Map Service
Executando camada WMS via navegador
Servico pelo WMS viaOpenLayers
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 "
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
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"}}}
GML
Outros formatos
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).
Exemplo de aplicação
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
Obrigado!Jairo de [email protected]