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!

questionAnswers(2)

yourAnswerToTheQuestion