Comment obtenir le géohash d'une boîte englobante?

8

Je stocke une grande collection de valeurs de géohash de 5 mx 5 m. Je veux pouvoir interroger cette collection et trouver toutes les valeurs de geohash qui relèvent d'un géorect particulier - qui est défini par 2 points de latitude - un point NW et un point SW.

Ce que je ne comprends pas, c'est ceci: disons que j'ai tous mes emplacements dans le magasin de données (avec une latitude, une longitude et un geohash (avec une grande précision) de chaque emplacement.)

Je sais que je devrais utiliser le préfixe du geohash (pour faire correspondre les emplacements à l'intérieur), mais comment calculer un geohash d'une boîte englobante? Étant donné que le cadre de délimitation est composé de deux points, le nord-est et le sud-ouest, je ne comprends pas comment procéder.

Pour que je puisse interroger les emplacements à renvoyer pour la zone de délimitation actuellement visible, j'ai besoin du géohash de la zone de délimitation visible / visible - Maintenant, je sais que je peux géohash la position centrale sur la carte visible, mais je ne sais pas comment de nombreuses lettres à couper (pour réduire la précision) pour obtenir un «ajustement» à la zone de délimitation réelle. (Ou peut-être que ce n'est pas ainsi ...?)

Que faites-vous lorsque le conteneur de boîte englobante à geohashes? (comme au milieu de la zone visible, il se divise entre 'dqcjr0' et 'dqcjqb')

Supposons également que j'ai un geohash à 5 lettres, comment puis-je le convertir en boîte englobante visible? ou en d'autres termes, comment savoir ce qui est «inclus» dans le hachage et ce qui se trouve dans les hachages adjacents?

jcm
la source

Réponses:

2

Voici l'une des solutions que j'ai pu trouver.

Il y a 12 niveaux d'un geohash. La taille varie de 5
009,4 km x 4 992,6 km au niveau 1 à
3,7 cm x 1,9 cm au niveau 12 .

Tout d'abord, vous devez fixer un niveau.

Obtenez le point central du cadre de sélection. Une fois que vous avez la distance maximale du centre et la taille du géohash, trouvez les points de la grille à l'intérieur de la boîte à distance (la taille du geohash).

Convertissez les points de la grille en geohash.

Partage le lien de mon projet open source qui fait quelque chose de similaire. (A besoin d'améliorations avant de pousser le code :-))

Sur votre deuxième question, la conversion d'un geohash en une paire nous donne le centre de la zone de geohash * (une zone rectangulaire) *.

Compte tenu de la taille du geohash à ce niveau, vous pouvez vous procurer une boîte englobante.

J'espère que cela t'aides.

Ashwin Nair
la source