Your SlideShare is downloading. ×
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito

5,676
views

Published on

Esta palestra foi apresentada no 3 PgCon Br.

Esta palestra foi apresentada no 3 PgCon Br.

Published in: Technology, Travel

0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,676
On Slideshare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1.  
  • 2.
    • Sobre o autor:
    • Geógrafo (Universidade Federal de Uberlândia)
    • Experiência anterior
      • Contato com SGBDs teórico e prático;
      • Quatro anos de experiência em Sistemas de Informações Geográficas e Geoprocessamento;
      • Atualmente trabalha com exploração mineral;
  • 3.
    • Sobre o trabalho:
    • Desenvolvido em ambiente Windows com PostgreSQL 8.3 , PostGIS 1.3;
    • Tempo empreendido: 1 ano, em diversas etapas e ritmos de trabalho;
    • Tema de monografia, defendido em 2009;
  • 4.
    • Objetivos:
    • Demonstrar a utilização do PostGIS em aplicações de saúde e segurança pública;
    • Implementar um algoritmo geocodificador capaz de lidar com vários formatos de endereçamento;
    • Promover softwares livres em ambientes corporativos, como o de uma prefeitura;
  • 5.
    • Sumário:
    • O que são sistemas de informações geográficas?
    • O que é o PostGIS? Quais são suas capacidades?
    • Acidentes de trânsito e a segurança pública;
    • Modelo de dados;
    • Geocodificação;
    • Automatizando a geocodificação;
    • Testando o algoritmo;
  • 6. O que são Sistemas de Informações Geográficas?
  • 7.
    • O que são Sistemas de Informações Geográficas (SIG / GIS)?
    • É um sistema computacional capaz de criar, armazenar e manipular dados geográficos;
    • É uma ferramenta ampla, envolvendo diversos ramos da ciência e áreas do conhecimento;
    • Utiliza objetos espaciais para representar a realidade (pontos, linhas, polígonos, superfícies, etc.);
    • Difere de um sistema CAD (Computer Aided Design): cada objeto, dentro de um SIG armazena informações do mundo real, ao passo que para um CAD estes objetos não significado algum, são apenas objetos;
  • 8.
    • O que são Sistemas de Informações Geográficas (SIG / GIS)?
    • Áreas do conhecimento que são, geralmente, utilizadas por um SIG:
    Sistema de Informações Geográficas (SIG ou GIS) Sensoriamento Remoto Cartografia e Geodésia Banco de Dados Análise Espacial
  • 9.
    • Para que servem os Sistemas de Informações Geográficas?
    • Os SIGs são extremamente úteis na manipulação e visualização de informação espacial.
    • Tarefas difíceis, como a construção de mapas temáticos precisos, cruzamento de informações espaciais e outras tarefas são simplificadas com o uso de um pacote SIG;
    • São agregadores de funções. São a junção de todas as áreas explicitadas acima. Ao mesmo tempo que lidamos com Sensoriamento Remoto, lidamos com Bancos de Dados e Cartografia;
  • 10.
    • Então, o que é o PostGIS?
    • É uma extensão que habilita o PostgreSQL à tratar dados espaciais;
    • Atualmente se encontra na versão 1.4;
    • É a extensão espacial mais completa do mercado;
    • Segue o padrão internacional OGC (Open Geospatial Consortium), o que significa interoperabilidade e facilidade para integrar dados de diversas fontes;
    • Utiliza a SQL para trabalhar com os dados. Não existe necessidade de se aprender uma nova linguagem de consulta. Ela é a mesma utilizada pelo PostgreSQL;
  • 11.
    • O que o PostGIS pode fazer?
    • Suporta diversos tipos de geometrias e suas coleções: ponto, linha, polígono, multi* e coleções de geometrias. Suporte total à geometrias 3D;
    • Suporte completo à centenas de projeções cartográficas e suas transformações. Permite representar a realidade de forma mais precisa . Fornecido pela biblioteca Proj4;
    • Suporte a diversas operações espaciais, como: interseção, união, toca, contém, está contido por, interpolação linear, etc;
    • Utiliza índices GisT (Generalized Search Tree) para indexar dados espaciais.
  • 12.
    • Sobre os acidentes de trânsito:
    • É um evento inesperado, envolvendo um ou mais veículos e ou pedestres, resultando em danos à integridade do indivíduo ou à bens materiais;
    • No Brasil são mais de 350 mil acidentes anuais, com mais de 33 mil óbitos e 400 mil feridos ou incapacitados;
    • Consiste em um grave problema nas cidades de médio e grande porte de todo o mundo ;
    • Gera enorme custo para a sociedade: uma vítima ferida em um acidente de trânsito custa em média R$36.305,00 (IPEA, 2006);
    • É um assunto de saúde e segurança pública ;
  • 13. O modelo de dados
  • 14.
    • Modelo de dados
    • Quando uma pessoa lhe relata um acidente de trânsito, quais são as coisas mais comuns que lhe perguntamos?
    • Estado de saúde, se houveram ferimentos, etc;
    • Onde o acidente ocorreu?
    • Quando ocorreu?
    • Como ocorreu? Estava chovendo? Qual era o estado de saúde do outro motorista? A pista estava danificada ou mal sinalizada?
  • 15.
    • Modelo de dados
    • No cadastro de acidentes de trânsito, as perguntas acima representam:
    • Severidade;
    • Um endereço e um par de coordenadas;
    • Data e Hora;
    • Característica do acidente;
    • Informações sobre os veículos (placa, ano de fabricação, tipo do veículo, etc) e informações sobre os condutores (estado físico, comportamento, situação da habilitação, idade, sexo, etc);
  • 16.
    • Modelo de dados
    • Todo o sistema é composto de 3 tabelas principais, onde todos os registros são inseridos. São elas:
    • Acidentes
    • Veículos
    • Condutores
    • Além de diversas tabelas auxiliares ( lookup tables), como possíveis valores de tipos de veículos, tipos de acidentes, características de acidentes, etc;
  • 17.
    • Modelo de dados
    • A única tabela que possui
    • geometria é a tabela acidentes;
    • Relação 1:M entre acidentes
    • e veículos;
    • Relação 1:1 entre veículos e
    • condutores;
    • Relação 1:1 entre acidentes
    • e condutores;
    • O modelo conta com as tabelas auxiliares para
    • validar a entrada de informações e para sua extensão,
    • se preciso;
  • 18. Modelo de dados
  • 19. Modelo de dados
  • 20. Modelo de dados
  • 21. Geocodificação
  • 22. O que é Geocodificação? É o processo de associar uma localização na forma de um par de coordenadas, à um endereço, através da comparação de seus elementos com uma base de referência. Existem diversos geocodificadores online: Google Maps, Apontador.com.br, entre outros;
  • 23.
    • Pré-requisitos para geocodificação:
    • Existem alguns pré-requisitos à serem cumpridos, para que um algoritmo possa localizar e pontuar efetivamente um endereço.
    • Uma base de referência georreferenciada, composta pelas linhas centrais de cada logradouro. A base de referência necessita possuir os seguintes atributos: geometria, tipo logradouro, nome logradouro, numeração inicial e final, interseção anterior e posterior;
    • Um serviço geocodificador , capaz de orientar o algoritmo através da base de referência;
  • 24. Base de referência (vista em software SIG):
  • 25. Base de referência (vista tabular) Atributo geometria Numeração Inicial e Final
  • 26.  
  • 27.
    • Como funciona a geocodificação:
    • Inserção do endereço alvo;
    • Quebra do endereço em elementos;
    • Abreviação e padronização dos elementos (Regex e metaphone);
    • Comparação com a base de referência;
    • Cálculo de registros mais prováveis;
    • Retorno dos resultados;
  • 28.
    • Tipos de geocodificação:
    • Existem três tipos de geocodificação neste conjunto de ferramentas. Dois foram desenvolvidos especificamente para este trabalho, e o outro, mais complexo, adaptado para trabalhar com endereços no sistema brasileiro;
    • Interpolada
    • Entre interseções viárias
    • Em cruzamentos
  • 29.
    • Geocodificação interpolada:
    • Funciona conforme descrito acima. Algoritmo adaptado de David Bitner;
    • Utiliza uma simples regra de três e a função ST_LINE_INTERPOLATE_POINT (geometria, double precision) para localizar um ponto;
    • ((NumFinal – NumInicial)*NumPesquisado)/100 -> determina o valor do segundo parâmetro
  • 30.
    • Geocodificação interpolada:
    • A geocodificação interpolada retorna uma série de registros, derivados de um tipo de usuário, chamado geocode_result;
    • Este exemplo acima é de uma query adhoc , somente para testes. Note que o geocode_result retorna a geometria do trecho de logradouro e a geometria pontual localizada, além de outros atributos, como o endereço completo do local (formato norte-americano);
    geometria do logradouro geometria pontual localizada ranking de probabilidade (5 sendo a maior nota) tempo de resposta
  • 31.
    • Geocodificação entre interseções viárias
    • Localiza o logradouro de acordo com seu nome, interseção anterior e interseção posterior;
    • SELECT * FROM logradouros WHERE nome_logradouro = ‘x’ and intersecao_anterior = ‘y’ and intersecao_posterior = ‘z’;
    • Também utiliza a função ST_LINE_INTERPOLATE_POINT, mas com um valor de .5, determinando o ponto médio do logradouro;
  • 32.
    • Geocodificação Em Cruzamentos
    • Localiza o logradouro de acordo com seu nome e interseção posterior;
    • SELECT * FROM logradouros WHERE nome_logradouro = ‘x’ and intersecao_posterior = ‘y’;
    • Também utiliza a função ST_LINE_INTERPOLATE_POINT, mas com um valor de .99, determinando o final do logradouro principal;
  • 33.
    • Serviço Geocodificador
    • O serviço geocodificador é composto basicamente de três tabelas: geocoders, types e dirs;
    • A tabela geocoders armazena todas as informações necessárias para direcionar o algoritmo de acordo com determinada base de referência
    Bases de referência algoritmo geocoders types dirs
  • 34.
    • Serviço Geocodificador
    • Tabela types: armazena valores de comparação aos tipos de logradouros. Possui uma coluna com o valor descritivo e outra com uma string de expressão regular;
    • Tabela dirs: armazena valores de comparação às direções que cada logradouro toma. Este tipo sistema é muito utilizado em outros países, como Estados Unidos, mas no Brasil, não mostra muita utilidade.
    • Neste caso, ao invés de direções, esta tabela atua como um repositório de nomes de logradouros, para facilitar a identificação das interseções anteriores e posteriores de cada trecho. Também possui uma coluna para o valor descritivo e outra para uma string de expressão regular, utilizada no momento da comparação;
  • 35.
    • Serviço Geocodificador
    • Qual é a vantagem de termos um serviço geocodificador?
    • Separamos o algoritmo de nossas bases de dados. Basta inserir um novo registro na tabela geocoders e apontar os campos necessários e já podemos localizar endereços, utilizando outras bases de referência;
    • Podemos ter várias tabelas do tipo dirs e types, já que as mesmas também são referenciadas em geocoders;
    • Podemos, à qualquer momento, escolher qual base de referência iremos utilizar para a geocodificação;
  • 36.
    • Automatizando a geocodificação
    • A geocodificação é disparada por três funções pl/pgsql (conforme citado acima)
    • Um trigger AFTER INSERT foi construída na tabela acidentes, que dispara uma das funções correspondentes com os dados inseridos;
    dados inseridos trigger Possui número viário? Geocodificação interpolada Possui ambas interseções? Possui interseção posterior? Geocodificação entre interseções Geocodificação em cruzamento SIM SIM SIM NÃO NÃO UPDATE the_geom
  • 37.
    • Porque automatizar a geocodificação?
    • A idéia por trás deste trabalho foi tirar a “responsabilidade” das mãos de um usuário leigo em geoprocessamento e SQL. Usuários proficientes nestas tecnologias devem executar outras funções;
    • Não há perda de perfomance significativa para inserção de registros um a um. O tempo médio da geocodificação interpolada é de 90ms;
    • A vantagem é termos a garantia da geocodificação estar sendo executada em cada registro, sem a necessidade de posteriormente processar todos endereços de um só vez. Diminui a chance de erros;
    • Dados espaciais em “tempo real”. Acidente inserido é acidente geocodificado. Ideal para um futuro serviço de mapas;
  • 38.
    • Testando o algoritmo
    • Era imperativo testar o algoritmo e suas chances de sucesso contra a base de referência construída.
    • Não foi testada a precisão posicional de cada resultado. A posição de cada ponto localizado depende inteiramente da acurácia da base de referência, levantada basicamente por trabalhos de campo e com o uso de um Guia Sei, sendo bastante apurada;
    • Os testes principais envolviam a capacidade do algoritmo localizar ou não um endereço passado ao mesmo. Todas as formas de geocodificação foram testadas, através de um gerador aleatório de acidentes;
    • O algoritmo gera aleatoriamente veículos e condutores, ideal para construir uma base de dados para testes com consultas, views, etc;
  • 39. Gerador de Acidentes
  • 40.
    • Testando o algoritmo
    • Foram gerados 500 mil acidentes, em lotes de 100 mil, e aferida a taxa de acerto do algoritmo;
    • Um acerto significa que a função disparada pelo trigger retornou um ponto e atualizou o campo geometria da tabela acidentes;
    • Uma falha significa que a função disparada pelo trigger não conseguiu retornar um ponto e não atualizou o campo geometria;
    • A média de acerto do algoritmo, nestes cinco testes, foi de 98%;
    • A principal causa destes erros foi o intervalo numérico entre o fim e início de determinados logradouros. Nem sempre um trecho de logradouro que termina em 100 se inicia novamente em 101, deixando “janelas” na malha (são número viários não existentes e não serão cadastrados em uma situação real);
  • 41.
    • Conclusões
    • O trabalho foi bem sucedido nas proposições;
    • O algoritmo funciona como esperado e sem overhead para o servidor;
    • O algoritmo é capaz de localizar a maioria dos endereços “atirados à ele”. Uma inspeção posterior pode apontar pontos falhos na base de referência e em produção os erros devem ser menores;
    • O modelo de dados para o cadastro de acidentes é funcional, permite adaptação e consegue responder diversas perguntas de forma simples. Existe margem para melhoras, mas o desempenho e flexibilidade foram satisfatórias;
  • 42. Obrigado pela atenção! Dúvidas? George Rodrigues da Cunha Silva [email_address] http://sextantegeo2.blogspot.com