SlideShare uma empresa Scribd logo
Introdução ao
AGENDA
•   Introdução
•   Geometrias Suportadas
•   Estrutura dos Dados
•   Manipulação
•   Indexação
•   Funções Espaciais
•   Exercícios
Introdução
• Desenvolvido pela Research Refractions, em
  2001;

• Adiciona suporte espacial ao banco
  PostgreSQL;

• Segue os padrões de interoperabilidade da
  OGC.
Introdução
• Por padrão o PostgreSQL roda na porta 5432;

• Uma instância pode contêr diversos bancos,
  com diversos schemas e tabelas.
Introdução
Introdução
Instalação

• PostgreSQL

• PostGIS
Instalação do PostgreSQL
Instalação do PostGIS
Instalação

• Diretórios criados durante a instalação:
  – bin - Executáveis
  – include – Arquivos para compilação
  – lib - Bibliotecas
  – share - Extensões
Geometrias Suportadas

• O PostGIS suporta os seguintes tipos de
  Geometrias especificados pela OGC:
  –   Point;
  –   Linestring;
  –   Polygon;
  –   Multipoint;
  –   Multilinestring;
  –   Multipolygon;
  –   GeometryCollection.
Geometrias Suportadas
Estrutura dos Dados

• A estrutura dos dados no PostGIS é definida
  pela padrão OGC SFS (Simple Feature
  Specification).
                        GEOMETRY




             POINT         GEOMETRYCOLLECTION


           LINESTRING          MULTIPOINT

            POLYGON          MULTILINESTRING

                              MULTIPOLYGON
Estrutura dos Dados

• Duas formas padrões para manipular Objetos
  Geográficos
     • Well-Known Text (WKT) e Well-Known Binary (WKB)


     • Guardam informações sobre tipo e coordenadas do Objeto
      Geográfico
Estrutura dos Dados

• Exemplos:
      • 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)))
Estrutura dos Dados

• SRID (Spatial Referencing System Identifier)
  – Todo Objeto Geográfico deve ter um SRID para ser inserido no banco

• Por exemplo:
  – Considerando a interface GeomFromText
      • GeomFromText (text WKT, SRID);
  – Pode-se inserir o seguinte Objeto Geográfico

      • INSERT INTO SpatialTable (THE_GEOM, THE_NAME) VALUES
        (GeomFromText('POINT(-126.4 45.32)', 4326), ‘Um Lugar');
Estrutura dos Dados

• Para assegurar a consistência dos dados, foram
  criadas as seguintes tabelas:
  – GEOMETRY_COLUMNS
  – SPATIAL_REF_SYS
Estrutura dos Dados

• Na tabela Geometry_Columns consistem as
  informações das tabelas espaciais, da seguinte
  forma:
  –   F_TABLE_CATALOG;
  –   F_TABLE_SCHEMA;
  –   F_TABLE_NAME;
  –   F_GEOMETRY_COLUMN;
  –   COORD_DIMENSION;
  –   SRID;
  –   TYPE;
Estrutura dos Dados

• Na tabela Spatial_Ref_Sys é onde são
  carregadas as informações dos sistemas de
  coordenadas utilizados pelo banco:
  –   SRID;
  –   AUTH_NAME;
  –   AUTH_SRID;
  –   SRTEXT;
  –   PROJ4TEXT;
Manipulação dos Dados

• Conecte no banco:
  – Usuário: postgres
  – Senha: postgres


• Crie uma nova base de dados:
  – Selecione “template_postgis” como template


• Verifique se as tabelas espaciais foram criadas
2.3 – Spatially Enable
     PostgreSQL
Manipulação dos Dados

• Caso o pgsql não esteja instalado, é necessário
  instalá-lo:

createlang plpgsql –d postgis –U postgres
psql -f lwpostgis.sql –d postgis –U postgres
psql -f spatial_ref_sys.sql –d postgis –U postgres
Manipulação dos Dados

• Criando tabelas com dados espaciais:
  CREATE TABLE distritos
  ( cod             SERIAL,
    sigla           VARCHAR(10),
    denominacao     VARCHAR(50),
    PRIMARY KEY (cod)
  );

  SELECT AddGeometryColumn('public',
    'distritos', 'spatial_data', 4326, 'POLYGON',
    2);
Manipulação dos Dados

• Inserindo dados espaciais:

   INSERT INTO distritos
     (sigla, denominacao, spatial_data)
     VALUES('CTR', 'Centro',
     GeometryFromText('Polygon((0 0, 10 0, 10 10, 0
     10, 0 0), (5 5, 5 6, 6 6, 6 5, 5 5))', 4326));
Manipulação dos Dados

• Recuperando dados espaciais:

  SELECT sigla, denominacao, spatial_data
    FROM distritos;



  SELECT sigla, denominacao, ASTEXT(spatial_data)
    FROM distritos;
Manipulação dos Dados

• Importando shapefiles para o PostGIS
  – Shapefile – 3 arquivos:
     • .dbf: Atributos
     • .shp: Geometria
     • .shx: Índice


  – Um shapefile = Uma tabela no banco
Manipulação dos Dados

• shp2pgsql [opts]
  –   -D = Use formato Dump
  –   -i = NÃo use bigint para númericos
  –   -s <#> = Use o SRID especificado
  –   -W = Use o charset especificado
  –   -a = Use em modo append
  –   -I = Criar indíce espacial
Manipulação dos Dados

• shp2pgsql [opts] shapefile tablename
  – shp2pgsql –i –s 3005 bc_pubs.shp bc_pubs >
    bc_pubs.sql
Manipulação dos Dados

• shp2pgsql –i -I -s 3005 bc_hospitals.shp
  bc_hospitals > bc_hospitals.sql
• shp2pgsql -i -I -s 3005 bc_municipality.shp
  bc_municipality > bc_municipality.sql
• shp2pgsql -i -I -s 3005 bc_voting_areas.shp
  bc_voting_areas > bc_voting.sql
• shp2pgsql –i -I -s 3005 bc_pubs.shp bc_pubs >
  bc_pubs.sql
• shp2pgsql –i -I -s 3005 bc_roads.shp bc_roads
  > bc_roads.sql
Manipulação dos Dados

• psql
  –d postgis
  –U postgres
  –f bc_data.sql
Manipulação dos Dados

• Visualizando os dados no uDig
Manipulação dos Dados

• Visualizando os dados no uDig
Manipulação dos Dados

• Visualizando os dados no uDig
Manipulação dos Dados

• Exportando tabelas do PostGIS para Shapefile
  – pgsql2shp [<opções>] <nome do banco> <nome da
    tabela>
  – <nome do banco> nome do banco de origem
  – <nome da tabela> nome da tabela geográfica
Manipulação dos Dados

• Exportando tabelas do PostGIS para Shapefile
  – [<opções>] opções de configuração
      • -d: define o arquivo dump para 3D (padrão = 2D)
      • -f <filename>: nome do shape file (padrão = nome da tabela).
      • -h <host>: host onde está o banco de dados (padrão =localhost).
      • -p <port>: porta de conexão (padrão = 5432).
      • -P <password>: especifica a senha.
      • -u <user>: especifica o usuário.
      • -g <geometry_column> especifica a colunaGeo a ser exportada.
Manipulação dos Dados

• Exportando tabelas do PostGIS para Shapefile
  – Exemplos:
     • pgsql2shp -u postgres -P postgres postgis bc_hospitals

     • pgsql2shp -f Hospitals -u postgres -P postgres postgis
       bc_hospitals

     • pgsql2shp -f Hospitals -h localhost -p 5432 -u postgres -P
       postgres postgis bc_hospitals
Manipulação dos Dados

• No PostGIS a função ST_IsValid() é utilizada
  para verificar se a geometria está de acordo
  com a especificação SFS




              Válido            Inválido
Manipulação dos Dados



• Como resolver o problema? Usando um
  truque… veja:
Indexação

• É a ferramenta que possibilita que o banco de
  dados trabalhe com grandes volumes de
  informação de uma forma mais eficiente;

• O PostgreSQL utiliza 3 tipos de índices:
  – B-Tree
  – R-Tree
  – GiST
Indexação

• O GiST é utilizado para acelerar buscas em
  estruturas irregulares;



• É uma boa prática, sempre após a criação de
  um indíce executar o seguinte comando:
Funções Espaciais

• ST_Area: Retorna a área de um polígono
Funções Espaciais

• ST_Contains: Retorna verdadeiro se A estiver
  contido em B




                (v)                    (f)
Funções Espaciais

• ST_Touches: Retorna verdadeiro se A apenas
  tocar B.




                                       (v)
                (v)
Funções Espaciais

• ST_Intersects: Retorna verdadeiro se houver
  algum tipo de intersecção
Funções Espaciais

• ST_Intersection: Retorna uma geometria que
  representa o conjunto de pontos de intersecção
  das geometrias.
Funções Espaciais

• ST_Transform: Retorna uma nova geometria
  com suas coordenadas transformadas para o
  sistema de referência espacial referenciado pelo
  parâmetro.
Funções Espaciais

• ST_Within: Retorna verdadeiro se a geometria A
  estiver completamente dentro da geometria B.
Funções Espaciais

• ST_DWithin: Retorna verdadeiro se as
  geometrias estão dentro da distância
  especificada.
Funções Espaciais

• ST_Centroid: Retorna o ponto central da
  geometria;
Funções Espaciais

• ST_Buffer: Cria um buffer, os cálculos são
  baseados no Sistema de Coordenadas.
Funções Espaciais

• ST_Union: Retorna uma geometria com a união
  das geometrias;
Funções Espaciais

• ST_Difference: Retorna geometria de A que não
  intersecta com B.
Operadores Espaciais

• && : Retorna TRUE se houver sobreposição;
Operadores Espaciais

• ~ : Retorna TRUE se as geometrias estiver
  completamente contida na outra;
Operadores Espaciais

• ~= : Retorna TRUE se as geometrias
  foram idênticas;
Exercícios

• 1) Qual é o comprimento total das estradas na
  província do BC em km?
• 2) Qual o tamanho da cidade de Prince George,
  em hectares?
• 3) Qual o maior município da Cidade?
• 4) Qual o perímetro da cidade de ‘Vancouver’?
• 5) Qual é a área total das áreas de votação?
Exercícios

• 1) Qual é o comprimento total das estradas na
  província do BC em km?
• SELECT
   Sum( ST_Length( the_geom ) ) / 1000
    AS km_roads
  FROM bc_roads;
Exercícios

• 2) Qual o tamanho da cidade de Prince George,
  em hectares?
• SELECT
   ST_Area(the_geom)/10000
    AS hectares
  FROM bc_municipality
  WHERE
   name = ‘PRINCE GEORGE’;
Exercícios

• 3) Qual o maior município da Cidade?
• SELECT
   name,
   ST_Area(the_geom)/10000
    AS hectares
  FROM bc_municipality
  ORDER BY hectares DESC
  LIMIT 1;
Exercícios

• 4) Qual o perímetro da cidade de ‘Vancouver’?
• SELECT ST_Perimeter(the_geom)
  FROM bc_municipality
  WHERE name = 'VANCOUVER';
Exercícios

• 5) Qual é a área total das áreas de votação?
• SELECT Sum(ST_Area(the_geom))/10000
   AS hectares
  FROM bc_voting_areas;
Exercícios
• 1) Criar views para as tabelas importadas via shapefile, setando o
  SRID para 4326

• CREATE OR REPLACE VIEW vbc_hospitals as
  (
   select gid,
   id,
   authority,
   name,
   st_transform(the_geom,4326) as the_geom
   from bc_hospitals
   );
Exercícios

• 2) Inserir as informações em Geometry_columns
• INSERT INTO geometry_columns (
     f_table_catalog,
     f_table_schema,
     f_table_name,
     f_geometry_column,
     coord_dimension,
     srid,
     type)
     VALUES
('','public','vbc_hospitals','the_geom',2,4326,'POINT');
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)
Junções Espaciais

• Relacione os bares que estão a 250 metros de um
  hospital
• SELECT bc_hospitals.name, bc_pubs.name
  FROM
   bc_hospitals,
   bc_pubs
  WHERE
   ST_DWithin(
     bc_hospitals.the_geom,
     bc_pubs.the_geom,
     250
   );
Junções Espaciais

• Crie uma nova tabela com todas as área de
  votação de Prince George
Junções Espaciais
• CREATE TABLE pg_voting_areas AS
  SELECT
   ST_Intersection(v.the_geom, m.the_geom)
    AS intersection_geom,
   ST_Area(v.the_geom) AS va_area,
   v.*,
   m.name
  FROM
   bc_voting_areas v,
   bc_municipality m
  WHERE
   ST_Intersects(v.the_geom, m.the_geom) AND
   m.name = ‘PRINCE GEORGE’;
Projeção de Coordenadas

• Veja o SRID utilizando a função ST_SRID
• SELECT ST_SRID(the_geom)
  FROM bc_roads
  LIMIT 1;
• O que é “3005”?
• SELECT srtext
  FROM spatial_ref_sys
  WHERE srid = 3005;
• Ah, é “BC Albers”
Projeção de Coordenadas
• PROJCS[“NAD83 / BC Albers",
   GEOGCS["NAD83",
    DATUM["North_American_Datum_1983",
     SPHEROID["GRS 1980",6378137,298.257222101]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.01745329251994328],
    AUTHORITY["EPSG","4269"]],
   PROJECTION["Albers_Conic_Equal_Area"],
   PARAMETER["latitude_of_center",45],
   PARAMETER["longitude_of_center",-126],
   PARAMETER["standard_parallel_1",50],
   PARAMETER["standard_parallel_2",58.5],
   PARAMETER["false_easting",1000000],
   PARAMETER["false_northing",0],
   UNIT["metre",1],
   AUTHORITY["EPSG","3005"]]
Projeção de Coordenadas

• SELECT proj4text
  FROM spatial_ref_sys
  WHERE srid = 3005;
• +proj=aea +ellps=GRS80 +datum=NAD83
  +lat_0=45.0 +lon_0=-126.0
  +lat_1=50.0 +lat_2=58.5
  +x_0=1000000 +y_0=0
• PROJ4 é a biblioteca de reprojeção usada pelo
  PostGIS
Projeção de Coordenadas

• Para usar a reprojeção de coordenadas utiliza-
  se a função ST_Transform()
• SELECT ST_AsText(the_geom)
  FROM bc_roads
  LIMIT 1;
• SELECT
   ST_AsText(
    ST_Transform(the_geom, 4326) )
  FROM bc_roads
  LIMIT 1;
Projeção de Coordenadas

         MULTILINESTRING((
1004687.04355194 594291.053764096,
1004729.74799931 594258.821943696))

                    ST_Transform(the_geom)

         MULTILINESTRING((
    -125.9341 50.3640700000001,
        -125.9335 50.36378))
Exercícios

• 1) Qual o tamanho em km de ‘Douglas St’ em Victoria?
• 2) Quais os dois bares com mais adeptos do Partido
  Verde (campo green) no prazo de 500 metros deles?
• 3) Qual é a latitude do hospital mais a sul, usando o
  SRID 4326?
• 4) Quantos eleitores NDP vivem a 50 metros de 'Simcoe
  St' em Vitória?
• 5) Listar todas as ruas dentro de Victoria
Exercícios

• 1) Qual o tamanho em km de ‘Douglas St’ em Victoria?
• SELECT
   Sum(ST_Length(r.the_geom))/1000
     AS kilometers
  FROM
   bc_roads r,
   bc_municipality m
  WHERE
   ST_Contains(m.the_geom, r.the_geom) AND
   r.name = 'Douglas St' AND
   m.name = 'VICTORIA';
Exercícios

• 2) Quais os dois bares com mais adeptos do Partido
  Verde no prazo de 500 metros deles?
• SELECT
   p.name, p.city,
   Sum(v.green) AS greens
  FROM
   bc_pubs p,
   bc_voting_areas v
  WHERE
   ST_DWithin(v.the_geom, p.the_geom, 500)
  GROUP BY p.name, p.city
  ORDER BY greens DESC LIMIT 2;
Exercícios

• 3) Qual é a latitude do hospital mais a sul,
  usando o SRID 4326?
• SELECT ST_Y(ST_Transform(the_geom,4326))
  AS latitude
  FROM bc_hospitals
  ORDER BY latitude ASC
  LIMIT 1;
Exercícios

• 4) Quantos eleitores NDP vivem a 50 metros de 'Simcoe
  St' em Vitória?
• SELECT
   Sum(v.ndp) AS ndp
  FROM
   bc_voting_areas v, bc_municipality m,
   bc_roads r
  WHERE
   ST_DWithin(r.the_geom, v.the_geom, 50) AND
   ST_Contains(m.the_geom, r.the_geom) AND
   r.name = 'Simcoe St' AND
   m.name = 'VICTORIA';
Exercícios

• 5) Listar todas as ruas dentro de Victoria

• SELECT r.gid, r.the_geom
  FROM
   bc_roads r,
   bc_municipality m
  WHERE
   ST_Contains(m.the_geom, r.the_geom)
  AND m.name = ‘VICTORIA’
Obrigado!


       Fernando Quadro
contato@fernandoquadro.com.br

Mais conteúdo relacionado

Mais procurados

Go language presentation
Go language presentationGo language presentation
Go language presentation
paramisoft
 
Intro To PostGIS
Intro To PostGISIntro To PostGIS
Intro To PostGIS
mleslie
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
AddWeb Solution Pvt. Ltd.
 
FOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップFOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップIWASAKI NOBUSUKE
 
PostGIS and Spatial SQL
PostGIS and Spatial SQLPostGIS and Spatial SQL
PostGIS and Spatial SQL
Todd Barr
 
공간정보연구원 PostGIS 강의교재
공간정보연구원 PostGIS 강의교재공간정보연구원 PostGIS 강의교재
공간정보연구원 PostGIS 강의교재
JungHwan Yun
 
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話
Kosuke Asahi
 
Google Firebase presentation - English
Google Firebase presentation - EnglishGoogle Firebase presentation - English
Google Firebase presentation - English
Alexandros Tsichouridis
 
Gstreamer: an Overview
Gstreamer: an OverviewGstreamer: an Overview
Gstreamer: an Overview
Rodrigo Costa
 
Go. Why it goes
Go. Why it goesGo. Why it goes
Go. Why it goes
Sergey Pichkurov
 
Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...
GeoSolutions
 
Building a Spatial Database in PostgreSQL
Building a Spatial Database in PostgreSQLBuilding a Spatial Database in PostgreSQL
Building a Spatial Database in PostgreSQL
Kudos S.A.S
 
GeoServer on Steroids
GeoServer on SteroidsGeoServer on Steroids
GeoServer on Steroids
GeoSolutions
 
What is Flutter
What is FlutterWhat is Flutter
What is Flutter
Malan Amarasinghe
 
Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe
Martin Kleppe
 
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례BJ Jang
 
Chapter 2 Flutter Basics Lecture 1.pptx
Chapter 2 Flutter Basics Lecture 1.pptxChapter 2 Flutter Basics Lecture 1.pptx
Chapter 2 Flutter Basics Lecture 1.pptx
farxaanfarsamo
 
Flutter
FlutterFlutter
Go lang
Go langGo lang
Dart and Flutter Basics.pptx
Dart and Flutter Basics.pptxDart and Flutter Basics.pptx
Dart and Flutter Basics.pptx
DSCVSSUT
 

Mais procurados (20)

Go language presentation
Go language presentationGo language presentation
Go language presentation
 
Intro To PostGIS
Intro To PostGISIntro To PostGIS
Intro To PostGIS
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
 
FOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップFOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップ
 
PostGIS and Spatial SQL
PostGIS and Spatial SQLPostGIS and Spatial SQL
PostGIS and Spatial SQL
 
공간정보연구원 PostGIS 강의교재
공간정보연구원 PostGIS 강의교재공간정보연구원 PostGIS 강의교재
공간정보연구원 PostGIS 강의교재
 
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話
ArcGISの便利な印刷周りの機能に、QGIS APIを駆使して挑んでみたお話
 
Google Firebase presentation - English
Google Firebase presentation - EnglishGoogle Firebase presentation - English
Google Firebase presentation - English
 
Gstreamer: an Overview
Gstreamer: an OverviewGstreamer: an Overview
Gstreamer: an Overview
 
Go. Why it goes
Go. Why it goesGo. Why it goes
Go. Why it goes
 
Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...Serving earth observation data with GeoServer: addressing real world requirem...
Serving earth observation data with GeoServer: addressing real world requirem...
 
Building a Spatial Database in PostgreSQL
Building a Spatial Database in PostgreSQLBuilding a Spatial Database in PostgreSQL
Building a Spatial Database in PostgreSQL
 
GeoServer on Steroids
GeoServer on SteroidsGeoServer on Steroids
GeoServer on Steroids
 
What is Flutter
What is FlutterWhat is Flutter
What is Flutter
 
Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe
 
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
 
Chapter 2 Flutter Basics Lecture 1.pptx
Chapter 2 Flutter Basics Lecture 1.pptxChapter 2 Flutter Basics Lecture 1.pptx
Chapter 2 Flutter Basics Lecture 1.pptx
 
Flutter
FlutterFlutter
Flutter
 
Go lang
Go langGo lang
Go lang
 
Dart and Flutter Basics.pptx
Dart and Flutter Basics.pptxDart and Flutter Basics.pptx
Dart and Flutter Basics.pptx
 

Destaque

Geo server pt_br
Geo server pt_brGeo server pt_br
Geo server pt_br
Marcos Rosa
 
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsitoO uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
George Silva
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRouting
Jairo de Almeida
 
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Filipe Aguilar Santana
 
Geoprocessamento aula unip
Geoprocessamento aula unipGeoprocessamento aula unip
Geoprocessamento aula unip
jfelipe17
 
SLIDE GEOMETRIA - 7° ANO
SLIDE GEOMETRIA - 7° ANOSLIDE GEOMETRIA - 7° ANO
SLIDE GEOMETRIA - 7° ANO
jonihson
 
Apostila de geometria plana exercícios resolvidos - crbrasil
Apostila de geometria plana   exercícios resolvidos - crbrasilApostila de geometria plana   exercícios resolvidos - crbrasil
Apostila de geometria plana exercícios resolvidos - crbrasil
Celso do Rozário Brasil Gonçalves
 
GPS
GPSGPS
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
Fabrízio Mello
 
PostGIS - Conhecendo o Elefante Geoespacial
PostGIS - Conhecendo o Elefante GeoespacialPostGIS - Conhecendo o Elefante Geoespacial
PostGIS - Conhecendo o Elefante Geoespacial
Rodrigo Hjort
 
OL4JSF - Latinoware 2010
OL4JSF - Latinoware 2010OL4JSF - Latinoware 2010
OL4JSF - Latinoware 2010
Robert Anderson
 
Demoiselle Spatial Latinoware 2011
Demoiselle Spatial Latinoware 2011Demoiselle Spatial Latinoware 2011
Demoiselle Spatial Latinoware 2011
Rafael Soto
 
GISVM
GISVMGISVM
Desenvolvendo aplicações geográficas com Software Livre
Desenvolvendo aplicações geográficas com Software LivreDesenvolvendo aplicações geográficas com Software Livre
Desenvolvendo aplicações geográficas com Software Livre
Fernando Quadro
 
Introdução ao OpenLayers
Introdução ao OpenLayersIntrodução ao OpenLayers
Introdução ao OpenLayers
Fernando Quadro
 
Por dentro do GeoServer
Por dentro do GeoServerPor dentro do GeoServer
Por dentro do GeoServer
Fernando Quadro
 
Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...
Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...
Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...
GeoLivre Conference
 
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux UruguaianaSegurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Tchelinux
 
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIDETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
Eder Nogueira
 
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia
 

Destaque (20)

Geo server pt_br
Geo server pt_brGeo server pt_br
Geo server pt_br
 
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsitoO uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRouting
 
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
 
Geoprocessamento aula unip
Geoprocessamento aula unipGeoprocessamento aula unip
Geoprocessamento aula unip
 
SLIDE GEOMETRIA - 7° ANO
SLIDE GEOMETRIA - 7° ANOSLIDE GEOMETRIA - 7° ANO
SLIDE GEOMETRIA - 7° ANO
 
Apostila de geometria plana exercícios resolvidos - crbrasil
Apostila de geometria plana   exercícios resolvidos - crbrasilApostila de geometria plana   exercícios resolvidos - crbrasil
Apostila de geometria plana exercícios resolvidos - crbrasil
 
GPS
GPSGPS
GPS
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
 
PostGIS - Conhecendo o Elefante Geoespacial
PostGIS - Conhecendo o Elefante GeoespacialPostGIS - Conhecendo o Elefante Geoespacial
PostGIS - Conhecendo o Elefante Geoespacial
 
OL4JSF - Latinoware 2010
OL4JSF - Latinoware 2010OL4JSF - Latinoware 2010
OL4JSF - Latinoware 2010
 
Demoiselle Spatial Latinoware 2011
Demoiselle Spatial Latinoware 2011Demoiselle Spatial Latinoware 2011
Demoiselle Spatial Latinoware 2011
 
GISVM
GISVMGISVM
GISVM
 
Desenvolvendo aplicações geográficas com Software Livre
Desenvolvendo aplicações geográficas com Software LivreDesenvolvendo aplicações geográficas com Software Livre
Desenvolvendo aplicações geográficas com Software Livre
 
Introdução ao OpenLayers
Introdução ao OpenLayersIntrodução ao OpenLayers
Introdução ao OpenLayers
 
Por dentro do GeoServer
Por dentro do GeoServerPor dentro do GeoServer
Por dentro do GeoServer
 
Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...
Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...
Portal de Mapas Itaipu – Democratizando a informação geográfica espacial com ...
 
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux UruguaianaSegurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
 
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIDETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
 
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em ação
 

Semelhante a Introdução ao PostGIS

Banco de Dados Espaciais
Banco de Dados EspaciaisBanco de Dados Espaciais
Banco de Dados Espaciais
Augusto Colombelli Alessio
 
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á
 
Dados espaciais em R (2020)
Dados espaciais em R (2020)Dados espaciais em R (2020)
Dados espaciais em R (2020)
Vitor Vieira Vasconcelos
 
PostGis
PostGisPostGis
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
Sérgio Souza Costa
 
Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.
Guilherme Vinicius Moreira
 
Sql4 devs geodatabases
Sql4 devs geodatabasesSql4 devs geodatabases
Sql4 devs geodatabases
Resource IT
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
Matheus Espanhol
 
Atividade prática - Introdução ao QGis, parte 1
Atividade prática - Introdução ao QGis, parte 1Atividade prática - Introdução ao QGis, parte 1
Atividade prática - Introdução ao QGis, parte 1
Vitor Vieira Vasconcelos
 
Dados espaciais em R - 2023 - UFABC - Geoprocessamento
Dados espaciais em R - 2023 - UFABC - GeoprocessamentoDados espaciais em R - 2023 - UFABC - Geoprocessamento
Dados espaciais em R - 2023 - UFABC - Geoprocessamento
Vitor Vieira Vasconcelos
 
Aula 04
Aula 04Aula 04
Aula 04
railano
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documento
Julio Monteiro
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
ArleiEvaristo
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
Aline Ferreira
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
Euler Taveira
 
Python 04
Python 04Python 04
Python 04
Bruno Catão
 
Utilizando GeoTools para Manipulação de Dados Geográficos
Utilizando GeoTools para Manipulação de Dados GeográficosUtilizando GeoTools para Manipulação de Dados Geográficos
Utilizando GeoTools para Manipulação de Dados Geográficos
pcollares
 
Sql proficiente
Sql proficienteSql proficiente
Sql proficiente
Leonardo Cezar
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
Fabiano Modos
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Dickson S. Guedes
 

Semelhante a Introdução ao PostGIS (20)

Banco de Dados Espaciais
Banco de Dados EspaciaisBanco de Dados Espaciais
Banco de Dados Espaciais
 
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...
 
Dados espaciais em R (2020)
Dados espaciais em R (2020)Dados espaciais em R (2020)
Dados espaciais em R (2020)
 
PostGis
PostGisPostGis
PostGis
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.
 
Sql4 devs geodatabases
Sql4 devs geodatabasesSql4 devs geodatabases
Sql4 devs geodatabases
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
Atividade prática - Introdução ao QGis, parte 1
Atividade prática - Introdução ao QGis, parte 1Atividade prática - Introdução ao QGis, parte 1
Atividade prática - Introdução ao QGis, parte 1
 
Dados espaciais em R - 2023 - UFABC - Geoprocessamento
Dados espaciais em R - 2023 - UFABC - GeoprocessamentoDados espaciais em R - 2023 - UFABC - Geoprocessamento
Dados espaciais em R - 2023 - UFABC - Geoprocessamento
 
Aula 04
Aula 04Aula 04
Aula 04
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documento
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
 
Python 04
Python 04Python 04
Python 04
 
Utilizando GeoTools para Manipulação de Dados Geográficos
Utilizando GeoTools para Manipulação de Dados GeográficosUtilizando GeoTools para Manipulação de Dados Geográficos
Utilizando GeoTools para Manipulação de Dados Geográficos
 
Sql proficiente
Sql proficienteSql proficiente
Sql proficiente
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 

Último

PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
anpproferick
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Annelise Gripp
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
tnrlucas
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
anpproferick
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
Rafael Santos
 
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptxREDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
IranyGarcia
 

Último (6)

PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
 
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptxREDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
 

Introdução ao PostGIS

  • 2. AGENDA • Introdução • Geometrias Suportadas • Estrutura dos Dados • Manipulação • Indexação • Funções Espaciais • Exercícios
  • 3. Introdução • Desenvolvido pela Research Refractions, em 2001; • Adiciona suporte espacial ao banco PostgreSQL; • Segue os padrões de interoperabilidade da OGC.
  • 4. Introdução • Por padrão o PostgreSQL roda na porta 5432; • Uma instância pode contêr diversos bancos, com diversos schemas e tabelas.
  • 10. Instalação • Diretórios criados durante a instalação: – bin - Executáveis – include – Arquivos para compilação – lib - Bibliotecas – share - Extensões
  • 11. Geometrias Suportadas • O PostGIS suporta os seguintes tipos de Geometrias especificados pela OGC: – Point; – Linestring; – Polygon; – Multipoint; – Multilinestring; – Multipolygon; – GeometryCollection.
  • 13. Estrutura dos Dados • A estrutura dos dados no PostGIS é definida pela padrão OGC SFS (Simple Feature Specification). GEOMETRY POINT GEOMETRYCOLLECTION LINESTRING MULTIPOINT POLYGON MULTILINESTRING MULTIPOLYGON
  • 14. Estrutura dos Dados • Duas formas padrões para manipular Objetos Geográficos • Well-Known Text (WKT) e Well-Known Binary (WKB) • Guardam informações sobre tipo e coordenadas do Objeto Geográfico
  • 15. Estrutura dos Dados • Exemplos: • 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)))
  • 16. Estrutura dos Dados • SRID (Spatial Referencing System Identifier) – Todo Objeto Geográfico deve ter um SRID para ser inserido no banco • Por exemplo: – Considerando a interface GeomFromText • GeomFromText (text WKT, SRID); – Pode-se inserir o seguinte Objeto Geográfico • INSERT INTO SpatialTable (THE_GEOM, THE_NAME) VALUES (GeomFromText('POINT(-126.4 45.32)', 4326), ‘Um Lugar');
  • 17. Estrutura dos Dados • Para assegurar a consistência dos dados, foram criadas as seguintes tabelas: – GEOMETRY_COLUMNS – SPATIAL_REF_SYS
  • 18. Estrutura dos Dados • Na tabela Geometry_Columns consistem as informações das tabelas espaciais, da seguinte forma: – F_TABLE_CATALOG; – F_TABLE_SCHEMA; – F_TABLE_NAME; – F_GEOMETRY_COLUMN; – COORD_DIMENSION; – SRID; – TYPE;
  • 19. Estrutura dos Dados • Na tabela Spatial_Ref_Sys é onde são carregadas as informações dos sistemas de coordenadas utilizados pelo banco: – SRID; – AUTH_NAME; – AUTH_SRID; – SRTEXT; – PROJ4TEXT;
  • 20. Manipulação dos Dados • Conecte no banco: – Usuário: postgres – Senha: postgres • Crie uma nova base de dados: – Selecione “template_postgis” como template • Verifique se as tabelas espaciais foram criadas
  • 21. 2.3 – Spatially Enable PostgreSQL
  • 22. Manipulação dos Dados • Caso o pgsql não esteja instalado, é necessário instalá-lo: createlang plpgsql –d postgis –U postgres psql -f lwpostgis.sql –d postgis –U postgres psql -f spatial_ref_sys.sql –d postgis –U postgres
  • 23. Manipulação dos Dados • Criando tabelas com dados espaciais: CREATE TABLE distritos ( cod SERIAL, sigla VARCHAR(10), denominacao VARCHAR(50), PRIMARY KEY (cod) ); SELECT AddGeometryColumn('public', 'distritos', 'spatial_data', 4326, 'POLYGON', 2);
  • 24. Manipulação dos Dados • Inserindo dados espaciais: INSERT INTO distritos (sigla, denominacao, spatial_data) VALUES('CTR', 'Centro', GeometryFromText('Polygon((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 5 6, 6 6, 6 5, 5 5))', 4326));
  • 25. Manipulação dos Dados • Recuperando dados espaciais: SELECT sigla, denominacao, spatial_data FROM distritos; SELECT sigla, denominacao, ASTEXT(spatial_data) FROM distritos;
  • 26. Manipulação dos Dados • Importando shapefiles para o PostGIS – Shapefile – 3 arquivos: • .dbf: Atributos • .shp: Geometria • .shx: Índice – Um shapefile = Uma tabela no banco
  • 27. Manipulação dos Dados • shp2pgsql [opts] – -D = Use formato Dump – -i = NÃo use bigint para númericos – -s <#> = Use o SRID especificado – -W = Use o charset especificado – -a = Use em modo append – -I = Criar indíce espacial
  • 28. Manipulação dos Dados • shp2pgsql [opts] shapefile tablename – shp2pgsql –i –s 3005 bc_pubs.shp bc_pubs > bc_pubs.sql
  • 29. Manipulação dos Dados • shp2pgsql –i -I -s 3005 bc_hospitals.shp bc_hospitals > bc_hospitals.sql • shp2pgsql -i -I -s 3005 bc_municipality.shp bc_municipality > bc_municipality.sql • shp2pgsql -i -I -s 3005 bc_voting_areas.shp bc_voting_areas > bc_voting.sql • shp2pgsql –i -I -s 3005 bc_pubs.shp bc_pubs > bc_pubs.sql • shp2pgsql –i -I -s 3005 bc_roads.shp bc_roads > bc_roads.sql
  • 30. Manipulação dos Dados • psql –d postgis –U postgres –f bc_data.sql
  • 31. Manipulação dos Dados • Visualizando os dados no uDig
  • 32. Manipulação dos Dados • Visualizando os dados no uDig
  • 33. Manipulação dos Dados • Visualizando os dados no uDig
  • 34. Manipulação dos Dados • Exportando tabelas do PostGIS para Shapefile – pgsql2shp [<opções>] <nome do banco> <nome da tabela> – <nome do banco> nome do banco de origem – <nome da tabela> nome da tabela geográfica
  • 35. Manipulação dos Dados • Exportando tabelas do PostGIS para Shapefile – [<opções>] opções de configuração • -d: define o arquivo dump para 3D (padrão = 2D) • -f <filename>: nome do shape file (padrão = nome da tabela). • -h <host>: host onde está o banco de dados (padrão =localhost). • -p <port>: porta de conexão (padrão = 5432). • -P <password>: especifica a senha. • -u <user>: especifica o usuário. • -g <geometry_column> especifica a colunaGeo a ser exportada.
  • 36. Manipulação dos Dados • Exportando tabelas do PostGIS para Shapefile – Exemplos: • pgsql2shp -u postgres -P postgres postgis bc_hospitals • pgsql2shp -f Hospitals -u postgres -P postgres postgis bc_hospitals • pgsql2shp -f Hospitals -h localhost -p 5432 -u postgres -P postgres postgis bc_hospitals
  • 37. Manipulação dos Dados • No PostGIS a função ST_IsValid() é utilizada para verificar se a geometria está de acordo com a especificação SFS Válido Inválido
  • 38. Manipulação dos Dados • Como resolver o problema? Usando um truque… veja:
  • 39. Indexação • É a ferramenta que possibilita que o banco de dados trabalhe com grandes volumes de informação de uma forma mais eficiente; • O PostgreSQL utiliza 3 tipos de índices: – B-Tree – R-Tree – GiST
  • 40. Indexação • O GiST é utilizado para acelerar buscas em estruturas irregulares; • É uma boa prática, sempre após a criação de um indíce executar o seguinte comando:
  • 41. Funções Espaciais • ST_Area: Retorna a área de um polígono
  • 42. Funções Espaciais • ST_Contains: Retorna verdadeiro se A estiver contido em B (v) (f)
  • 43. Funções Espaciais • ST_Touches: Retorna verdadeiro se A apenas tocar B. (v) (v)
  • 44. Funções Espaciais • ST_Intersects: Retorna verdadeiro se houver algum tipo de intersecção
  • 45. Funções Espaciais • ST_Intersection: Retorna uma geometria que representa o conjunto de pontos de intersecção das geometrias.
  • 46. Funções Espaciais • ST_Transform: Retorna uma nova geometria com suas coordenadas transformadas para o sistema de referência espacial referenciado pelo parâmetro.
  • 47. Funções Espaciais • ST_Within: Retorna verdadeiro se a geometria A estiver completamente dentro da geometria B.
  • 48. Funções Espaciais • ST_DWithin: Retorna verdadeiro se as geometrias estão dentro da distância especificada.
  • 49. Funções Espaciais • ST_Centroid: Retorna o ponto central da geometria;
  • 50. Funções Espaciais • ST_Buffer: Cria um buffer, os cálculos são baseados no Sistema de Coordenadas.
  • 51. Funções Espaciais • ST_Union: Retorna uma geometria com a união das geometrias;
  • 52. Funções Espaciais • ST_Difference: Retorna geometria de A que não intersecta com B.
  • 53. Operadores Espaciais • && : Retorna TRUE se houver sobreposição;
  • 54. Operadores Espaciais • ~ : Retorna TRUE se as geometrias estiver completamente contida na outra;
  • 55. Operadores Espaciais • ~= : Retorna TRUE se as geometrias foram idênticas;
  • 56. Exercícios • 1) Qual é o comprimento total das estradas na província do BC em km? • 2) Qual o tamanho da cidade de Prince George, em hectares? • 3) Qual o maior município da Cidade? • 4) Qual o perímetro da cidade de ‘Vancouver’? • 5) Qual é a área total das áreas de votação?
  • 57. Exercícios • 1) Qual é o comprimento total das estradas na província do BC em km? • SELECT Sum( ST_Length( the_geom ) ) / 1000 AS km_roads FROM bc_roads;
  • 58. Exercícios • 2) Qual o tamanho da cidade de Prince George, em hectares? • SELECT ST_Area(the_geom)/10000 AS hectares FROM bc_municipality WHERE name = ‘PRINCE GEORGE’;
  • 59. Exercícios • 3) Qual o maior município da Cidade? • SELECT name, ST_Area(the_geom)/10000 AS hectares FROM bc_municipality ORDER BY hectares DESC LIMIT 1;
  • 60. Exercícios • 4) Qual o perímetro da cidade de ‘Vancouver’? • SELECT ST_Perimeter(the_geom) FROM bc_municipality WHERE name = 'VANCOUVER';
  • 61. Exercícios • 5) Qual é a área total das áreas de votação? • SELECT Sum(ST_Area(the_geom))/10000 AS hectares FROM bc_voting_areas;
  • 62. Exercícios • 1) Criar views para as tabelas importadas via shapefile, setando o SRID para 4326 • CREATE OR REPLACE VIEW vbc_hospitals as ( select gid, id, authority, name, st_transform(the_geom,4326) as the_geom from bc_hospitals );
  • 63. Exercícios • 2) Inserir as informações em Geometry_columns • INSERT INTO geometry_columns ( f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES ('','public','vbc_hospitals','the_geom',2,4326,'POINT');
  • 64. 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)
  • 65. Junções Espaciais • Relacione os bares que estão a 250 metros de um hospital • SELECT bc_hospitals.name, bc_pubs.name FROM bc_hospitals, bc_pubs WHERE ST_DWithin( bc_hospitals.the_geom, bc_pubs.the_geom, 250 );
  • 66. Junções Espaciais • Crie uma nova tabela com todas as área de votação de Prince George
  • 67. Junções Espaciais • CREATE TABLE pg_voting_areas AS SELECT ST_Intersection(v.the_geom, m.the_geom) AS intersection_geom, ST_Area(v.the_geom) AS va_area, v.*, m.name FROM bc_voting_areas v, bc_municipality m WHERE ST_Intersects(v.the_geom, m.the_geom) AND m.name = ‘PRINCE GEORGE’;
  • 68. Projeção de Coordenadas • Veja o SRID utilizando a função ST_SRID • SELECT ST_SRID(the_geom) FROM bc_roads LIMIT 1; • O que é “3005”? • SELECT srtext FROM spatial_ref_sys WHERE srid = 3005; • Ah, é “BC Albers”
  • 69. Projeção de Coordenadas • PROJCS[“NAD83 / BC Albers", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101]], PRIMEM["Greenwich",0], UNIT["degree",0.01745329251994328], AUTHORITY["EPSG","4269"]], PROJECTION["Albers_Conic_Equal_Area"], PARAMETER["latitude_of_center",45], PARAMETER["longitude_of_center",-126], PARAMETER["standard_parallel_1",50], PARAMETER["standard_parallel_2",58.5], PARAMETER["false_easting",1000000], PARAMETER["false_northing",0], UNIT["metre",1], AUTHORITY["EPSG","3005"]]
  • 70. Projeção de Coordenadas • SELECT proj4text FROM spatial_ref_sys WHERE srid = 3005; • +proj=aea +ellps=GRS80 +datum=NAD83 +lat_0=45.0 +lon_0=-126.0 +lat_1=50.0 +lat_2=58.5 +x_0=1000000 +y_0=0 • PROJ4 é a biblioteca de reprojeção usada pelo PostGIS
  • 71. Projeção de Coordenadas • Para usar a reprojeção de coordenadas utiliza- se a função ST_Transform() • SELECT ST_AsText(the_geom) FROM bc_roads LIMIT 1; • SELECT ST_AsText( ST_Transform(the_geom, 4326) ) FROM bc_roads LIMIT 1;
  • 72. Projeção de Coordenadas MULTILINESTRING(( 1004687.04355194 594291.053764096, 1004729.74799931 594258.821943696)) ST_Transform(the_geom) MULTILINESTRING(( -125.9341 50.3640700000001, -125.9335 50.36378))
  • 73. Exercícios • 1) Qual o tamanho em km de ‘Douglas St’ em Victoria? • 2) Quais os dois bares com mais adeptos do Partido Verde (campo green) no prazo de 500 metros deles? • 3) Qual é a latitude do hospital mais a sul, usando o SRID 4326? • 4) Quantos eleitores NDP vivem a 50 metros de 'Simcoe St' em Vitória? • 5) Listar todas as ruas dentro de Victoria
  • 74. Exercícios • 1) Qual o tamanho em km de ‘Douglas St’ em Victoria? • SELECT Sum(ST_Length(r.the_geom))/1000 AS kilometers FROM bc_roads r, bc_municipality m WHERE ST_Contains(m.the_geom, r.the_geom) AND r.name = 'Douglas St' AND m.name = 'VICTORIA';
  • 75. Exercícios • 2) Quais os dois bares com mais adeptos do Partido Verde no prazo de 500 metros deles? • SELECT p.name, p.city, Sum(v.green) AS greens FROM bc_pubs p, bc_voting_areas v WHERE ST_DWithin(v.the_geom, p.the_geom, 500) GROUP BY p.name, p.city ORDER BY greens DESC LIMIT 2;
  • 76. Exercícios • 3) Qual é a latitude do hospital mais a sul, usando o SRID 4326? • SELECT ST_Y(ST_Transform(the_geom,4326)) AS latitude FROM bc_hospitals ORDER BY latitude ASC LIMIT 1;
  • 77. Exercícios • 4) Quantos eleitores NDP vivem a 50 metros de 'Simcoe St' em Vitória? • SELECT Sum(v.ndp) AS ndp FROM bc_voting_areas v, bc_municipality m, bc_roads r WHERE ST_DWithin(r.the_geom, v.the_geom, 50) AND ST_Contains(m.the_geom, r.the_geom) AND r.name = 'Simcoe St' AND m.name = 'VICTORIA';
  • 78. Exercícios • 5) Listar todas as ruas dentro de Victoria • SELECT r.gid, r.the_geom FROM bc_roads r, bc_municipality m WHERE ST_Contains(m.the_geom, r.the_geom) AND m.name = ‘VICTORIA’
  • 79. Obrigado! Fernando Quadro contato@fernandoquadro.com.br