Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obliczanie, które punkty (szerokość, długość geograficzna) znajdują się w określonej odległości w mysql?

Jeśli szukasz algorytmu aproksymacyjnego, proponuję poszukać algorytmu k-średnich lub klastra hierarchicznego, zwłaszcza krzywej potwora lub krzywej wypełniania przestrzeni. Po pierwsze, możesz obliczyć minimalne drzewo opinające grafu, a następnie usunąć najdłuższe i najdroższe krawędzie. Następnie drzewo tworzy wiele małych drzewek i można użyć k-średnich do obliczenia grupy punktów, tj. skupień.

„Algorytm jednoogniwowego klastrowania k… jest dokładnie algorytmem Kruskala… równoważnym znalezieniu MST i usunięciu najdroższych krawędzi k-1”. Zobacz na przykład tutaj:https://stats.stackexchange.com/ pytania/1475/oprogramowanie-wizualizacyjne-do-klastrowania .

Dobrym przykładem krzywej potwora jest krzywa Hilberta. Podstawową formą tej krzywej jest kształt litery U i kopiując wiele z nich razem i obracając, krzywa wypełnia przestrzeń euklidyjską. Co zaskakujące, szary kod może pomóc w ustaleniu orientacji tego kształtu litery U. Możesz sprawdzić krzywą poczwórnego indeksu przestrzennego Nicka Hilberta artykuł na blogu zawierający więcej szczegółów . Zamiast tego, aby obliczyć indeks krzywej, możesz złożyć quadkey, jak w mapach Bing. Quadkey jest unikalny dla każdej współrzędnej i może być używany w normalnych operacjach na ciągach. Każda pozycja w klawiszu jest częścią krzywej w kształcie litery U, a zatem możesz wybrać ten obszar punktów z zaznaczenia częściowo od lewej do prawej z quadkey.

Na tym obrazku widać zielony wielokąt znaleziony za pomocą krzywej Hilberta:

Możesz znaleźć moje klasy php tutaj:http://www.phpclasses.org/package/6202-PHP-Generuj-punkty-krzywej-Hilberta.html




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:zagnieżdżony GROUP_CONCAT

  2. Czy w tym przypadku wymagana jest normalizacja?

  3. Jak przechowywać zaszyfrowane informacje AES w bazie danych MySQL?

  4. MySQL - Znajdź wiersze pasujące do wszystkich wierszy z połączonej tabeli

  5. Konwersja kolumny mysql z INT na TIMESTAMP