Como agrupar locais próximos de latitude e longitude armazenados em SQL
Estou tentando analisar dados de acidentes de ciclo no Reino Unido para encontrar pontos negros estatísticos. Aqui está o exemplo dos dados de outro site.http://www.cycleinjury.co.uk/map
Atualmente estou usando SQLite para ~ 100k armazenar lat / lon locais. Quero agrupar locais próximos juntos. Esta tarefa é chamadaanálise de cluster.
Eu gostaria de simplificar o conjunto de dados, ignorando incidentes isolados e, em vez disso, mostrando apenas a origem dos clusters, onde mais de um acidente ocorreu em uma pequena área.
Existem 3 problemas que preciso superar.
atuação - Como garanto que encontrar pontos próximos é rápido. Devo usarImplementação do SQLite de umR-Tree por exemplo?
Correntes - Como evito pegar cadeias de pontos próximos?
Densidade - Como levar em consideração a densidade populacional do ciclo? Há uma densidade populacional muito maior de ciclistas em Londres e depois Bristol, portanto, parece haver um número maior de paradas em Londres.
Eu gostaria de evitar cenários de 'encadeamento' como este:
Em vez disso, gostaria de encontrar clusters:
Screenshot London (eu desenhei alguns clusters) ...
Screenshot Bristol - Muito menor densidade - o mesmo programa percorreu esta área pode não encontrar quaisquer pontos negros se a densidade relativa não foi levada em conta.
Qualquer ponteiro seria ótimo!