Maison  >  Article  >  base de données  >  Comment utiliser le type de données spécial Redis Géospatial

Comment utiliser le type de données spécial Redis Géospatial

PHPz
PHPzavant
2023-05-26 14:55:06565parcourir

Type de données spécial Redis Géospatial

Celui-ci a été lancé dans la version 3.2 de Redis. Il peut être utilisé pour calculer des informations de localisation géographique, la distance entre deux lieux, les personnes qui l'entourent et d'autres scénarios.

1. geoadd

Ajoute l'emplacement géospatial spécifié (latitude, longitude, nom) à la clé spécifiée.

Ici, vous pouvez utiliser certains outils de requête de latitude et de longitude en ligne pour obtenir des données.

geoadd china:city 121.472644 31.231706 shanghai
geoadd china:city 120.619585 31.299379 suzhou
geoadd china:city 116.405285 39.904989 beijing
geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu

Allez sur la clé china:city et ajoutez la longitude et la latitude de 5 lieux : Shanghai, Suzhou, Pékin, Guangzhou et le district de Haizhu de Guangzhou. china:city这个key里,添加了5个地方的经纬度:上海、苏州、北京、广州、广州海珠区。

Comment utiliser le type de données spécial Redis Géospatial

二、geopos

从key里返回所有给定位置元素的位置(经度和纬度)。

geopos china:city suzhou shanghai

返回位置的坐标。

Comment utiliser le type de données spécial Redis Géospatial

三、geodist

返回两个给定位置之间的距离。

如果两个位置之间的其中一个不存在, 那么命令返回空值。

指定单位的参数 unit 必须是以下单位的其中一个:

  • m 表示单位为米(默认)。

  • km 表示单位为千米。

  • mi 表示单位为英里。

  • ft 表示单位为英尺。

geodist china:city suzhou shanghai km

Comment utiliser le type de données spécial Redis Géospatial

四、georadius

以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

georadius china:city 121.49295 31.22337 30 km

我以 上海黄浦区的坐标121.49295 31.22337为中心,寻找30km之内的城市。

Comment utiliser le type de données spécial Redis Géospatial

再远点,100km之内,还可以找到suzhou,加上withdist显示出距离。

加上withcoord可以返回经纬度。

Comment utiliser le type de données spécial Redis Géospatial

再加上count,只返回我指定的数量。

georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1

Comment utiliser le type de données spécial Redis Géospatial

五、georadiusbymember

这个命令和 georadius命令一样, 都可以找出位于指定范围内的元素。

但是这里不是指定中心点坐标,而是指定以哪个元素为中心点。

georadiusbymember china:city suzhou 100 km withdist

这里以元素suzhou

Comment utiliser le type de données spécial Redis Geospatial

Comment utiliser le type de données spécial Redis Géospatial2. geopos

Renvoie la position (longitude et latitude) de tous les éléments de position donnés à partir de la clé.

geohash china:city suzhou shanghai

Renvoie les coordonnées de l'emplacement.

Comment utiliser le type de données spécial Redis GeospatialComment utiliser le type de données spécial Redis Géospatial

3. géodiste

Renvoie la distance entre deux emplacements donnés.

Si l'une des deux positions n'existe pas, la commande renvoie une valeur nulle.

L'unité du paramètre spécifiant l'unité doit être l'une des unités suivantes :

  • Comment utiliser le type de données spécial Redis Géospatialm signifie que l'unité est le mètre (par défaut).
  • 🎜km signifie que l'unité est le kilomètre. 🎜
  • 🎜mi signifie miles. 🎜
  • 🎜ft signifie pieds. 🎜
zrem china:city haizhuqu
🎜Comment utiliser les données spéciales Redis tapez Geospatial 🎜🎜4. georadius🎜🎜 En prenant la longitude et la latitude données comme centre, renvoie tous les éléments de position dont la distance par rapport au centre ne dépasse pas la distance maximale donnée parmi les éléments de position contenus dans la touche retour. 🎜rrreee🎜Je recherche des villes dans un rayon de 30 km en fonction des coordonnées du district de Shanghai Huangpu 121.49295 31.22337. 🎜🎜Comment utiliser le type de données spécial Redis Geospatial🎜🎜Restez plus loin , Dans un rayon de 100 km, vous pouvez également trouver suzhou et ajouter withdist pour afficher la distance. 🎜🎜Ajoutez withcoord pour renvoyer la latitude et la longitude. 🎜🎜Comment utiliser le type de données spécial Redis Geospatial🎜🎜Pluscount, renvoie uniquement le montant que je spécifie. 🎜rrreee🎜Comment utiliser le type de données spécial Redis Geospatial🎜🎜5 . georadiusbymember 🎜🎜Cette commande est la même que la commande georadius, qui peut trouver des éléments dans la plage spécifiée. 🎜🎜Mais ici nous ne précisons pas les coordonnées du point central, mais précisons quel élément est le point central. 🎜rrreee🎜Ici, en prenant l'élément suzhou comme point central, trouvez d'autres éléments dans un rayon de 100 km vendredi. 🎜🎜🎜🎜🎜 6. geohash🎜🎜Un ou plusieurs éléments positionnels, représentés par un hachage. 🎜rrreee🎜🎜🎜🎜Renvoie une chaîne Geohash de 11 caractères, qui représente la latitude et la longitude actuelles. Elle change la forme et convertit la longitude et la latitude bidimensionnelles en une chaîne unidimensionnelle. 🎜🎜Si plus les deux cordes dans la structure ci-dessus sont proches, plus la distance entre les deux positions sera proche. Comprenez simplement ceci. 🎜🎜Le principe sous-jacent de la géo est toujours zset Nous pouvons utiliser la commande zset pour faire fonctionner la géo, par exemple en supprimant des villes de la géo. 🎜rrreee🎜🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer