Biểu trưng OpenStreetMap OpenStreetMap

Analisando dias atípicos e changesets suspeitos

Do naoliv đăng vào 25 tháng 04 năm 2015 bằng Brazilian Portuguese (Português do Brasil). Cập nhật lần cuối cùng vào 10 tháng 06 năm 2015.

Para quem não conhece, temos um site com bastante tipo de estatísticas e visualizações de dados em http://resultmaps.neis-one.org/
Uma delas é a parte que mostra as estatísticas diárias de um determinado país, como a do Brasil

Dando uma breve olhada nos gráficos a gente acaba reparado em alguns picos bem atípicos para o padrão de edição em nosso país: Atípico

O pico maior de adição de nós ocorreu em 27 de fevereiro de 2014 (mais de 1 ano atrás), com 89404 nós adicionados (seguido de várias remoções).
Os dois próximos picos em verde ocorrem em 19 de janeiro desse ano, com 50133 nós adicionados, e em 9 de março, com 50862 nós.

Mas como encontrar o que foi alterado nesse dia sem precisar baixar o mundo inteiro ou ter uma base histórica do Brasil inteiro?
Através da API do OSM (devo uma cerveja pro pnorman pela sugestão)

Para obter os changesets de uma área precisamos do bbox e do período que desejamos.
O bbox conseguimos de forma bem fácil através do JOSM:

  • baixar a relação do Brasil
  • selecioná-la
  • Ctrl+i
  • pegar o bbox calculado: -73.9830625,-33.8689056,0.0,5.2842873

A data também temos (dia 27 de fevereiro de 2014), só precisando alterá-la para um formato reconhecido pela API.

Com um simples GET "http://api.openstreetmap.org/api/0.6/changesets/?bbox=-73.9830625,-33.8689056,0.0,5.2842873&time=20140226T000000,20140227T000000&closed=true" temos então todos os changesets no Brasil de 00:00 do dia 26 de fevereiro de 2014 até 00:00 do dia 27 de fevereiro de 2014. Ou melhor, deveríamos ter…

A API retorna apenas 100 resultados (portanto se o período tiver mais de 100 edições, não retornará todas).

Quebrando as requisições em períodos menores, de 1 hora (ou, em alguns casos, de meia hora), temos então todos os changesets de um dia inteiro.

Com cada id de changeset fica fácil obter os dados deles e analisar o que aconteceu: quem editou no Brasil, que horas, qual editor utilizou, quantos objetos adicionou, removeu, modificou, etc.

O bom disso é que abre muitas possibilidades: podemos analisar qualquer dia anterior onde há picos no gráfico (seja por adição ou remoção de objetos) ou então, futuramente, analisar os dados diariamente na busca, também, de edições suspeitas.

Não é nada complicado e dá para ser todo automatizado o processo.

Por essa pequena análise pudemos ver que um usuário alemão é muito ativo no Brasil (ou era naquela época, pelo menos), que houve uma modificação automatizada de nomes de ruas e também, infelizmente, uma importação…

A importação precisará ser analisada, junto com os outros changesets do usuário.
Outros dias atípicos também serão verificados na medida do possível.

Aceito correções de ortografia, Português e pedidos para explicar algo melhor, desde que saiba explicar :-)

Biểu tượng thư điện tử Biểu tượng Bluesky Biểu tượng Facebook Biểu tượng LinkedIn Biểu tượng Mastodon Biểu tượng Telegram Biểu tượng X

Thảo luận

Bình luận của pizzaiolo vào 25 tháng 4 năm 2015 lúc 02:58

Bacana! Bom saber.

Bình luận của Alexandre Magno vào 2 tháng 5 năm 2015 lúc 20:14

Gráfico abrangendo meses

Como você obteve esse gráfico abrangendo vários meses?

Eu só consigo isto:
http://osmstats.neis-one.org/?item=countries&country=Brazil&date=2-4-2014

Bình luận của naoliv vào 2 tháng 5 năm 2015 lúc 20:20

Passa para a direita ou esquerda o segundo gráfico que chega nessa visualização.

Bình luận của Alexandre Magno vào 2 tháng 5 năm 2015 lúc 20:23

O bom disso é que abre muitas possibilidades: podemos analisar qualquer dia anterior onde há picos no gráfico (seja por adição ou remoção de objetos) ou então, futuramente, analisar os dados diariamente na busca, também, de edições suspeitas.

Não é nada complicado e dá para ser todo automatizado o processo.

Na sua opinião, qual seria um critério quantificador adequado para detectar os picos? Olhando visualmente o gráfico, eu compreendo o que são os picos. Matematicamente, podemos ensaiar uma algoritmo na issue #3 do osmdetective.

Bình luận của naoliv vào 2 tháng 5 năm 2015 lúc 20:25

Vão ser analizados todos os changesets, independente de ser pico ou não.

Bình luận của Alexandre Magno vào 2 tháng 5 năm 2015 lúc 20:39

Será que Pascal Neis não retornaria os hashmaps data do #graph10 que ele plota por Javascript?

Pois isto aqui tem tudo que a mais simples análise automatizada precisaria:
var plot = $.plot($("#graph10"),[ { data: [[1320019201000,8041], ...

Bình luận của Alexandre Magno vào 2 tháng 5 năm 2015 lúc 20:40

Que tipo de coisas você quer perguntar nessa análise?

Bình luận của Alexandre Magno vào 2 tháng 5 năm 2015 lúc 22:07

Em Python, datetime.datetime.fromtimestamp(1320019201000/1000).strftime('%Y-%m-%d %H:%M:%S') retorna '2011-10-30 21:00:01'.

Đăng nhập để nhận xét