Jak grupować pobliskie lokalizacje szerokości i długości geograficznej zapisane w SQL

Próbuję analizować dane z wypadków rowerowych w Wielkiej Brytanii w celu znalezienia czarnych punktów statystycznych. Oto przykład danych z innej strony internetowej.http://www.cycleinjury.co.uk/map

Obecnie używam SQLite do ~ 100 tys. Lokalizacji lat / lon. Chcę grupować pobliskie lokalizacje razem. To zadanie jest wywoływaneanaliza skupień.

Chciałbym uprościć zbiór danych, ignorując pojedyncze incydenty i pokazując jedynie pochodzenie klastrów, w których więcej niż jeden wypadek miał miejsce na małym obszarze.

Muszę pokonać 3 problemy.

Wydajność - Jak zapewnić szybkie znajdowanie pobliskich punktów. Powinienem użyćImplementacja SQLite zR-Tree na przykład?

Więzy - Jak uniknąć podnoszenia łańcuchów pobliskich punktów?

Gęstość - Jak wziąć pod uwagę gęstość zaludnienia cyklu? W Londynie jest znacznie większa gęstość zaludnienia rowerzystów niż w Bristolu, dlatego wydaje się, że w Londynie jest większa liczba blokad.

Chciałbym uniknąć takich scenariuszy „łańcuchowych”:

Zamiast tego chciałbym znaleźć klastry:

Zrzut ekranu z Londynu (wyciągnąłem kilka klastrów) ...

Zrzut ekranu z Bristolu - Znacznie niższa gęstość - ten sam program przebiegał nad tym obszarem, aby nie znaleźć żadnych czarnych punktów, jeśli nie uwzględniono gęstości względnej.

Wszelkie wskazówki byłyby świetne!

questionAnswers(2)

yourAnswerToTheQuestion