Geohash to bardzo prosty i skuteczny sposób indeksowania obiektów przestrzennych, w szczególności obiektów punktowych. Indeksowanie linii i wielokątów jest trudniejsze do indeksowania, ale można to zrobić. Geohash to statyczna, hierarchiczna siatka o stałym rozmiarze, nakładana na powierzchnię ziemi. Komórki siatki tego samego poziomu hierarchicznego nie nakładają się. R-Tree to dynamiczna siatka, której lokalizacja i rozmiar komórki zmieniają się w zależności od indeksowanych funkcji. Indeksy R-Tree zawierają ramki i komórki zmieniające się za każdym razem, gdy wstawiasz i aktualizujesz dane. Geohash jest najczęściej używany do indeksowania obiektów punktowych, a komórki nie zmieniają się przy każdej wstawce i aktualizacji danych. Komórki Geohash nie dostosowują się do funkcji takich jak w przypadku R-drzewa.
Niektóre zalety geohash (w porównaniu do r-drzewa) mogą być:
- łatwa implementacja
- brak spadku wydajności przy rosnącej liczbie funkcji
- wyszukiwania bliskości (częściowo prawdziwe)
Niektóre z wad geohash (w porównaniu do r-drzewa) mogą być:
- dowolna precyzja siatki
- trudniejsze do indeksowania (i zapytania) cechy linii i wielokątów
- rozmiar indeksu może być duży przy niektórych metodach indeksowania linii i wielokątów
- według specyfikacji można go stosować tylko z układem współrzędnych długości / szerokości geograficznej, chociaż tę samą metodę można zastosować również w przypadku innych układów współrzędnych
Te produkty (bazy danych), o których wspomniałeś, używają geohash, ponieważ geohash jest używany głównie do indeksowania punktów i istnieje wiele aplikacji, które potrzebują takiej funkcji. Linie i wielokąty nie są tak często używane (z wyjątkiem oczywiście aplikacji GIS), więc po co się tym przejmować. Innym powodem jest oczywiście łatwość wdrożenia. Geohash przekształca współrzędną dwuwymiarową na wartość jednowymiarową. Nazywa się to redukcją wymiarów. Jednowymiarową wartość można łatwo zindeksować za pomocą standardowego drzewa B, które jest najczęściej stosowane w tych produktach.
Muszę wspomnieć, że istnieją podobne algorytmy do geohash, ale większość z nich jest zastrzeżona i wymaga licencji. Geohash jest własnością publiczną. Może to być również przyczyną tak dużego wykorzystania w ostatnich latach.
Prawdopodobnie są też inne zalety i wady, ale te pierwsze przychodzą mi do głowy. Mam nadzieję, że moje wyjaśnienie trochę pomoże.