<ul><li>Sobre o autor: </li></ul><ul><li>Geógrafo (Universidade Federal de Uberlândia) </li></ul><ul><li>Experiência anter...
<ul><li>Sobre o trabalho: </li></ul><ul><li>Desenvolvido em ambiente Windows com PostgreSQL 8.3 , PostGIS 1.3; </li></ul><...
<ul><li>Objetivos: </li></ul><ul><li>Demonstrar a utilização do PostGIS em aplicações  de saúde e segurança pública; </li>...
<ul><li>Sumário: </li></ul><ul><li>O que são sistemas de informações geográficas?  </li></ul><ul><li>O que é o PostGIS? Qu...
O que são Sistemas de Informações Geográficas?
<ul><li>O que são Sistemas de Informações Geográficas (SIG /  GIS)? </li></ul><ul><li>É um sistema computacional capaz de ...
<ul><li>O que são Sistemas de Informações Geográficas (SIG /  GIS)? </li></ul><ul><li>Áreas do conhecimento que são, geral...
<ul><li>Para que servem os Sistemas de Informações Geográficas? </li></ul><ul><li>Os SIGs são extremamente úteis na manipu...
<ul><li>Então, o que é o PostGIS? </li></ul><ul><li>É uma extensão que habilita o PostgreSQL à tratar dados espaciais; </l...
<ul><li>O que o PostGIS pode fazer? </li></ul><ul><li>Suporta diversos tipos de geometrias e suas coleções: ponto, linha, ...
<ul><li>Sobre os acidentes de trânsito: </li></ul><ul><li>É um evento inesperado, envolvendo um ou mais veículos e ou pede...
O modelo de dados
<ul><li>Modelo de dados </li></ul><ul><li>Quando uma pessoa lhe relata um acidente de trânsito, quais são as coisas mais c...
<ul><li>Modelo de dados </li></ul><ul><li>No cadastro de acidentes de trânsito, as perguntas acima representam: </li></ul>...
<ul><li>Modelo de dados </li></ul><ul><li>Todo o sistema é composto de 3 tabelas principais, onde todos os registros são i...
<ul><li>Modelo de dados </li></ul><ul><li>A única tabela que possui  </li></ul><ul><li>geometria é a tabela acidentes; </l...
Modelo de dados
Modelo de dados
Modelo de dados
Geocodificação
O que é Geocodificação? É o processo de associar uma localização na forma de um par de coordenadas, à um endereço, através...
<ul><li>Pré-requisitos para geocodificação: </li></ul><ul><li>Existem alguns pré-requisitos à serem cumpridos, para que um...
Base de referência (vista em software SIG):
Base de referência (vista tabular) Atributo geometria Numeração Inicial e Final
 
<ul><li>Como funciona a geocodificação: </li></ul><ul><li>Inserção do endereço alvo; </li></ul><ul><li>Quebra do endereço ...
<ul><li>Tipos de geocodificação: </li></ul><ul><li>Existem três tipos de geocodificação neste conjunto de ferramentas. Doi...
<ul><li>Geocodificação interpolada: </li></ul><ul><li>Funciona conforme descrito acima. Algoritmo adaptado de David Bitner...
<ul><li>Geocodificação interpolada: </li></ul><ul><li>A geocodificação interpolada retorna uma série de registros, derivad...
<ul><li>Geocodificação entre interseções viárias </li></ul><ul><li>Localiza o logradouro de acordo com seu nome, interseçã...
<ul><li>Geocodificação Em Cruzamentos </li></ul><ul><li>Localiza o logradouro de acordo com seu nome e interseção posterio...
<ul><li>Serviço Geocodificador </li></ul><ul><li>O serviço geocodificador é composto basicamente de três tabelas: geocoder...
<ul><li>Serviço Geocodificador </li></ul><ul><li>Tabela types: armazena valores de comparação aos tipos de logradouros. Po...
<ul><li>Serviço Geocodificador </li></ul><ul><li>Qual é a vantagem de termos um serviço geocodificador? </li></ul><ul><li>...
<ul><li>Automatizando a geocodificação </li></ul><ul><li>A geocodificação é disparada por três funções pl/pgsql (conforme ...
<ul><li>Porque automatizar a geocodificação? </li></ul><ul><li>A idéia por trás deste trabalho foi tirar a “responsabilida...
<ul><li>Testando o algoritmo </li></ul><ul><li>Era imperativo testar o algoritmo e suas chances de sucesso contra a base d...
Gerador de Acidentes
<ul><li>Testando o algoritmo </li></ul><ul><li>Foram gerados 500 mil acidentes, em lotes de 100 mil, e aferida a taxa de a...
<ul><li>Conclusões </li></ul><ul><li>O trabalho foi bem sucedido nas proposições; </li></ul><ul><li>O algoritmo funciona c...
Obrigado pela atenção! Dúvidas? George Rodrigues da Cunha Silva [email_address] http://sextantegeo2.blogspot.com
Próximos SlideShares
Carregando em…5
×

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

6.696 visualizações

Publicada em

Esta palestra foi apresentada no 3 PgCon Br.

Publicada em: Tecnologia, Turismo
0 comentários
11 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.696
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.544
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
11
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 2. <ul><li>Sobre o autor: </li></ul><ul><li>Geógrafo (Universidade Federal de Uberlândia) </li></ul><ul><li>Experiência anterior </li></ul><ul><ul><li>Contato com SGBDs teórico e prático; </li></ul></ul><ul><ul><li>Quatro anos de experiência em Sistemas de Informações Geográficas e Geoprocessamento; </li></ul></ul><ul><ul><li>Atualmente trabalha com exploração mineral; </li></ul></ul>
  2. 3. <ul><li>Sobre o trabalho: </li></ul><ul><li>Desenvolvido em ambiente Windows com PostgreSQL 8.3 , PostGIS 1.3; </li></ul><ul><li>Tempo empreendido: 1 ano, em diversas etapas e ritmos de trabalho; </li></ul><ul><li>Tema de monografia, defendido em 2009; </li></ul>
  3. 4. <ul><li>Objetivos: </li></ul><ul><li>Demonstrar a utilização do PostGIS em aplicações de saúde e segurança pública; </li></ul><ul><li>Implementar um algoritmo geocodificador capaz de lidar com vários formatos de endereçamento; </li></ul><ul><li>Promover softwares livres em ambientes corporativos, como o de uma prefeitura; </li></ul>
  4. 5. <ul><li>Sumário: </li></ul><ul><li>O que são sistemas de informações geográficas? </li></ul><ul><li>O que é o PostGIS? Quais são suas capacidades? </li></ul><ul><li>Acidentes de trânsito e a segurança pública; </li></ul><ul><li>Modelo de dados; </li></ul><ul><li>Geocodificação; </li></ul><ul><li>Automatizando a geocodificação; </li></ul><ul><li>Testando o algoritmo; </li></ul>
  5. 6. O que são Sistemas de Informações Geográficas?
  6. 7. <ul><li>O que são Sistemas de Informações Geográficas (SIG / GIS)? </li></ul><ul><li>É um sistema computacional capaz de criar, armazenar e manipular dados geográficos; </li></ul><ul><li>É uma ferramenta ampla, envolvendo diversos ramos da ciência e áreas do conhecimento; </li></ul><ul><li>Utiliza objetos espaciais para representar a realidade (pontos, linhas, polígonos, superfícies, etc.); </li></ul><ul><li>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; </li></ul>
  7. 8. <ul><li>O que são Sistemas de Informações Geográficas (SIG / GIS)? </li></ul><ul><li>Áreas do conhecimento que são, geralmente, utilizadas por um SIG: </li></ul>Sistema de Informações Geográficas (SIG ou GIS) Sensoriamento Remoto Cartografia e Geodésia Banco de Dados Análise Espacial
  8. 9. <ul><li>Para que servem os Sistemas de Informações Geográficas? </li></ul><ul><li>Os SIGs são extremamente úteis na manipulação e visualização de informação espacial. </li></ul><ul><li>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; </li></ul><ul><li>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; </li></ul>
  9. 10. <ul><li>Então, o que é o PostGIS? </li></ul><ul><li>É uma extensão que habilita o PostgreSQL à tratar dados espaciais; </li></ul><ul><li>Atualmente se encontra na versão 1.4; </li></ul><ul><li>É a extensão espacial mais completa do mercado; </li></ul><ul><li>Segue o padrão internacional OGC (Open Geospatial Consortium), o que significa interoperabilidade e facilidade para integrar dados de diversas fontes; </li></ul><ul><li>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; </li></ul>
  10. 11. <ul><li>O que o PostGIS pode fazer? </li></ul><ul><li>Suporta diversos tipos de geometrias e suas coleções: ponto, linha, polígono, multi* e coleções de geometrias. Suporte total à geometrias 3D; </li></ul><ul><li>Suporte completo à centenas de projeções cartográficas e suas transformações. Permite representar a realidade de forma mais precisa . Fornecido pela biblioteca Proj4; </li></ul><ul><li>Suporte a diversas operações espaciais, como: interseção, união, toca, contém, está contido por, interpolação linear, etc; </li></ul><ul><li>Utiliza índices GisT (Generalized Search Tree) para indexar dados espaciais. </li></ul>
  11. 12. <ul><li>Sobre os acidentes de trânsito: </li></ul><ul><li>É um evento inesperado, envolvendo um ou mais veículos e ou pedestres, resultando em danos à integridade do indivíduo ou à bens materiais; </li></ul><ul><li>No Brasil são mais de 350 mil acidentes anuais, com mais de 33 mil óbitos e 400 mil feridos ou incapacitados; </li></ul><ul><li>Consiste em um grave problema nas cidades de médio e grande porte de todo o mundo ; </li></ul><ul><li>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); </li></ul><ul><li>É um assunto de saúde e segurança pública ; </li></ul>
  12. 13. O modelo de dados
  13. 14. <ul><li>Modelo de dados </li></ul><ul><li>Quando uma pessoa lhe relata um acidente de trânsito, quais são as coisas mais comuns que lhe perguntamos? </li></ul><ul><li>Estado de saúde, se houveram ferimentos, etc; </li></ul><ul><li>Onde o acidente ocorreu? </li></ul><ul><li>Quando ocorreu? </li></ul><ul><li>Como ocorreu? Estava chovendo? Qual era o estado de saúde do outro motorista? A pista estava danificada ou mal sinalizada? </li></ul>
  14. 15. <ul><li>Modelo de dados </li></ul><ul><li>No cadastro de acidentes de trânsito, as perguntas acima representam: </li></ul><ul><li>Severidade; </li></ul><ul><li>Um endereço e um par de coordenadas; </li></ul><ul><li>Data e Hora; </li></ul><ul><li>Característica do acidente; </li></ul><ul><li>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); </li></ul>
  15. 16. <ul><li>Modelo de dados </li></ul><ul><li>Todo o sistema é composto de 3 tabelas principais, onde todos os registros são inseridos. São elas: </li></ul><ul><li>Acidentes </li></ul><ul><li>Veículos </li></ul><ul><li>Condutores </li></ul><ul><li>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; </li></ul>
  16. 17. <ul><li>Modelo de dados </li></ul><ul><li>A única tabela que possui </li></ul><ul><li>geometria é a tabela acidentes; </li></ul><ul><li>Relação 1:M entre acidentes </li></ul><ul><li>e veículos; </li></ul><ul><li>Relação 1:1 entre veículos e </li></ul><ul><li>condutores; </li></ul><ul><li>Relação 1:1 entre acidentes </li></ul><ul><li>e condutores; </li></ul><ul><li>O modelo conta com as tabelas auxiliares para </li></ul><ul><li>validar a entrada de informações e para sua extensão, </li></ul><ul><li>se preciso; </li></ul>
  17. 18. Modelo de dados
  18. 19. Modelo de dados
  19. 20. Modelo de dados
  20. 21. Geocodificação
  21. 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;
  22. 23. <ul><li>Pré-requisitos para geocodificação: </li></ul><ul><li>Existem alguns pré-requisitos à serem cumpridos, para que um algoritmo possa localizar e pontuar efetivamente um endereço. </li></ul><ul><li>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; </li></ul><ul><li>Um serviço geocodificador , capaz de orientar o algoritmo através da base de referência; </li></ul>
  23. 24. Base de referência (vista em software SIG):
  24. 25. Base de referência (vista tabular) Atributo geometria Numeração Inicial e Final
  25. 27. <ul><li>Como funciona a geocodificação: </li></ul><ul><li>Inserção do endereço alvo; </li></ul><ul><li>Quebra do endereço em elementos; </li></ul><ul><li>Abreviação e padronização dos elementos (Regex e metaphone); </li></ul><ul><li>Comparação com a base de referência; </li></ul><ul><li>Cálculo de registros mais prováveis; </li></ul><ul><li>Retorno dos resultados; </li></ul>
  26. 28. <ul><li>Tipos de geocodificação: </li></ul><ul><li>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; </li></ul><ul><li>Interpolada </li></ul><ul><li>Entre interseções viárias </li></ul><ul><li>Em cruzamentos </li></ul>
  27. 29. <ul><li>Geocodificação interpolada: </li></ul><ul><li>Funciona conforme descrito acima. Algoritmo adaptado de David Bitner; </li></ul><ul><li>Utiliza uma simples regra de três e a função ST_LINE_INTERPOLATE_POINT (geometria, double precision) para localizar um ponto; </li></ul><ul><li>((NumFinal – NumInicial)*NumPesquisado)/100 -> determina o valor do segundo parâmetro </li></ul>
  28. 30. <ul><li>Geocodificação interpolada: </li></ul><ul><li>A geocodificação interpolada retorna uma série de registros, derivados de um tipo de usuário, chamado geocode_result; </li></ul><ul><li>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); </li></ul>geometria do logradouro geometria pontual localizada ranking de probabilidade (5 sendo a maior nota) tempo de resposta
  29. 31. <ul><li>Geocodificação entre interseções viárias </li></ul><ul><li>Localiza o logradouro de acordo com seu nome, interseção anterior e interseção posterior; </li></ul><ul><li>SELECT * FROM logradouros WHERE nome_logradouro = ‘x’ and intersecao_anterior = ‘y’ and intersecao_posterior = ‘z’; </li></ul><ul><li>Também utiliza a função ST_LINE_INTERPOLATE_POINT, mas com um valor de .5, determinando o ponto médio do logradouro; </li></ul>
  30. 32. <ul><li>Geocodificação Em Cruzamentos </li></ul><ul><li>Localiza o logradouro de acordo com seu nome e interseção posterior; </li></ul><ul><li>SELECT * FROM logradouros WHERE nome_logradouro = ‘x’ and intersecao_posterior = ‘y’; </li></ul><ul><li>Também utiliza a função ST_LINE_INTERPOLATE_POINT, mas com um valor de .99, determinando o final do logradouro principal; </li></ul>
  31. 33. <ul><li>Serviço Geocodificador </li></ul><ul><li>O serviço geocodificador é composto basicamente de três tabelas: geocoders, types e dirs; </li></ul><ul><li>A tabela geocoders armazena todas as informações necessárias para direcionar o algoritmo de acordo com determinada base de referência </li></ul>Bases de referência algoritmo geocoders types dirs
  32. 34. <ul><li>Serviço Geocodificador </li></ul><ul><li>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; </li></ul><ul><li>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. </li></ul><ul><li>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; </li></ul>
  33. 35. <ul><li>Serviço Geocodificador </li></ul><ul><li>Qual é a vantagem de termos um serviço geocodificador? </li></ul><ul><li>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; </li></ul><ul><li>Podemos ter várias tabelas do tipo dirs e types, já que as mesmas também são referenciadas em geocoders; </li></ul><ul><li>Podemos, à qualquer momento, escolher qual base de referência iremos utilizar para a geocodificação; </li></ul>
  34. 36. <ul><li>Automatizando a geocodificação </li></ul><ul><li>A geocodificação é disparada por três funções pl/pgsql (conforme citado acima) </li></ul><ul><li>Um trigger AFTER INSERT foi construída na tabela acidentes, que dispara uma das funções correspondentes com os dados inseridos; </li></ul>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
  35. 37. <ul><li>Porque automatizar a geocodificação? </li></ul><ul><li>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; </li></ul><ul><li>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; </li></ul><ul><li>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; </li></ul><ul><li>Dados espaciais em “tempo real”. Acidente inserido é acidente geocodificado. Ideal para um futuro serviço de mapas; </li></ul>
  36. 38. <ul><li>Testando o algoritmo </li></ul><ul><li>Era imperativo testar o algoritmo e suas chances de sucesso contra a base de referência construída. </li></ul><ul><li>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; </li></ul><ul><li>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; </li></ul><ul><li>O algoritmo gera aleatoriamente veículos e condutores, ideal para construir uma base de dados para testes com consultas, views, etc; </li></ul>
  37. 39. Gerador de Acidentes
  38. 40. <ul><li>Testando o algoritmo </li></ul><ul><li>Foram gerados 500 mil acidentes, em lotes de 100 mil, e aferida a taxa de acerto do algoritmo; </li></ul><ul><li>Um acerto significa que a função disparada pelo trigger retornou um ponto e atualizou o campo geometria da tabela acidentes; </li></ul><ul><li>Uma falha significa que a função disparada pelo trigger não conseguiu retornar um ponto e não atualizou o campo geometria; </li></ul><ul><li>A média de acerto do algoritmo, nestes cinco testes, foi de 98%; </li></ul><ul><li>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); </li></ul>
  39. 41. <ul><li>Conclusões </li></ul><ul><li>O trabalho foi bem sucedido nas proposições; </li></ul><ul><li>O algoritmo funciona como esperado e sem overhead para o servidor; </li></ul><ul><li>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; </li></ul><ul><li>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; </li></ul>
  40. 42. Obrigado pela atenção! Dúvidas? George Rodrigues da Cunha Silva [email_address] http://sextantegeo2.blogspot.com

×