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!