SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
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

AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나Amazon Web Services Korea
 
Introduction to Amazon Kinesis Analytics
Introduction to Amazon Kinesis AnalyticsIntroduction to Amazon Kinesis Analytics
Introduction to Amazon Kinesis AnalyticsAmazon Web Services
 
ABD304-R-Best Practices for Data Warehousing with Amazon Redshift & Spectrum
ABD304-R-Best Practices for Data Warehousing with Amazon Redshift & SpectrumABD304-R-Best Practices for Data Warehousing with Amazon Redshift & Spectrum
ABD304-R-Best Practices for Data Warehousing with Amazon Redshift & SpectrumAmazon Web Services
 
AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기I Goo Lee
 
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon Web Services Korea
 
EDB Postgres with Containers
EDB Postgres with ContainersEDB Postgres with Containers
EDB Postgres with ContainersEDB
 
공간정보거점대학 PostGIS 고급과정
공간정보거점대학 PostGIS 고급과정공간정보거점대학 PostGIS 고급과정
공간정보거점대학 PostGIS 고급과정JungHwan Yun
 
Redshift performance tuning
Redshift performance tuningRedshift performance tuning
Redshift performance tuningCarlos del Cacho
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어NHN FORWARD
 
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdfSK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdfDeukJin Jeon
 
Deep Dive - Amazon Elastic MapReduce (EMR)
Deep Dive - Amazon Elastic MapReduce (EMR)Deep Dive - Amazon Elastic MapReduce (EMR)
Deep Dive - Amazon Elastic MapReduce (EMR)Amazon Web Services
 
민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS
민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS
민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWSAmazon Web Services Korea
 
PostgreSQL + ZFS best practices
PostgreSQL + ZFS best practicesPostgreSQL + ZFS best practices
PostgreSQL + ZFS best practicesSean Chittenden
 
Optimizing RocksDB for Open-Channel SSDs
Optimizing RocksDB for Open-Channel SSDsOptimizing RocksDB for Open-Channel SSDs
Optimizing RocksDB for Open-Channel SSDsJavier González
 
AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用Amazon Web Services Japan
 
InnoDB Performance Optimisation
InnoDB Performance OptimisationInnoDB Performance Optimisation
InnoDB Performance OptimisationMydbops
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexingYoshinori Matsunobu
 

Mais procurados (20)

AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
AWS 기반 데이터 레이크(Datalake) 구축 및 분석 - 김민성 (AWS 솔루션즈아키텍트) : 8월 온라인 세미나
 
Introduction to Amazon Kinesis Analytics
Introduction to Amazon Kinesis AnalyticsIntroduction to Amazon Kinesis Analytics
Introduction to Amazon Kinesis Analytics
 
ABD304-R-Best Practices for Data Warehousing with Amazon Redshift & Spectrum
ABD304-R-Best Practices for Data Warehousing with Amazon Redshift & SpectrumABD304-R-Best Practices for Data Warehousing with Amazon Redshift & Spectrum
ABD304-R-Best Practices for Data Warehousing with Amazon Redshift & Spectrum
 
AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기
 
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
EDB Postgres with Containers
EDB Postgres with ContainersEDB Postgres with Containers
EDB Postgres with Containers
 
공간정보거점대학 PostGIS 고급과정
공간정보거점대학 PostGIS 고급과정공간정보거점대학 PostGIS 고급과정
공간정보거점대학 PostGIS 고급과정
 
Redshift performance tuning
Redshift performance tuningRedshift performance tuning
Redshift performance tuning
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdfSK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
 
Deep Dive - Amazon Elastic MapReduce (EMR)
Deep Dive - Amazon Elastic MapReduce (EMR)Deep Dive - Amazon Elastic MapReduce (EMR)
Deep Dive - Amazon Elastic MapReduce (EMR)
 
민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS
민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS
민첩하고 비용효율적인 Data Lake 구축 - 문종민 솔루션즈 아키텍트, AWS
 
PostgreSQL + ZFS best practices
PostgreSQL + ZFS best practicesPostgreSQL + ZFS best practices
PostgreSQL + ZFS best practices
 
Graphdatabases
GraphdatabasesGraphdatabases
Graphdatabases
 
Dynamodb ppt
Dynamodb pptDynamodb ppt
Dynamodb ppt
 
Optimizing RocksDB for Open-Channel SSDs
Optimizing RocksDB for Open-Channel SSDsOptimizing RocksDB for Open-Channel SSDs
Optimizing RocksDB for Open-Channel SSDs
 
AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用AWS初心者向けWebinar AWSでのNoSQLの活用
AWS初心者向けWebinar AWSでのNoSQLの活用
 
InnoDB Performance Optimisation
InnoDB Performance OptimisationInnoDB Performance Optimisation
InnoDB Performance Optimisation
 
More mastering the art of indexing
More mastering the art of indexingMore mastering the art of indexing
More mastering the art of indexing
 

Destaque

Geo server pt_br
Geo server pt_brGeo server pt_br
Geo server pt_brMarcos 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ânsitoGeorge Silva
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingJairo 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 unipjfelipe17
 
SLIDE GEOMETRIA - 7° ANO
SLIDE GEOMETRIA - 7° ANOSLIDE GEOMETRIA - 7° ANO
SLIDE GEOMETRIA - 7° ANOjonihson
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Fabrízio Mello
 
PostGIS - Conhecendo o Elefante Geoespacial
PostGIS - Conhecendo o Elefante GeoespacialPostGIS - Conhecendo o Elefante Geoespacial
PostGIS - Conhecendo o Elefante GeoespacialRodrigo Hjort
 
OL4JSF - Latinoware 2010
OL4JSF - Latinoware 2010OL4JSF - Latinoware 2010
OL4JSF - Latinoware 2010Robert Anderson
 
Demoiselle Spatial Latinoware 2011
Demoiselle Spatial Latinoware 2011Demoiselle Spatial Latinoware 2011
Demoiselle Spatial Latinoware 2011Rafael Soto
 
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 LivreFernando Quadro
 
Introdução ao OpenLayers
Introdução ao OpenLayersIntrodução ao OpenLayers
Introdução ao OpenLayersFernando 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 UruguaianaTchelinux
 
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 YIIEder 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çãoRafael 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

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á
 
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 EncerramentoSé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 geodatabasesResource 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 sourceMatheus 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 1Vitor Vieira Vasconcelos
 
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 documentoJulio Monteiro
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQLEuler Taveira
 
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áficospcollares
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano 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
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)Fabrízio Mello
 

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
 
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)
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
 

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