Tous les produits
Search
Centre de documentation

Tair (Redis® OSS-Compatible):SIG

Dernière mise à jour :Aug 08, 2026

TairGIS est une structure de données SIG basée sur des index R-tree qui permet de stocker et d'interroger des points, des linestrings et des polygones au format Well-Known Text (WKT). Contrairement aux commandes GEO natives de Redis — qui utilisent GeoHash et Sorted Set pour gérer uniquement les requêtes ponctuelles — TairGIS prend en charge les requêtes de relations spatiales (contains, within, intersects) et la recherche de proximité par rayon pour les trois types de géométries.

Le module est open source. Pour plus d'informations, consultez TairGIS.

Concepts clés

Requêtes de relations spatiales : contains, within et intersects

Ces trois commandes interrogent différentes relations directionnelles entre une géométrie fournie et les formes stockées dans une zone. La distinction est importante car GIS.CONTAINS et GIS.WITHIN peuvent sembler similaires, mais fonctionnent dans des directions opposées :

  • GIS.CONTAINS — identifie les formes stockées qui contiennent votre entrée. Utilisez cette commande lorsque vous disposez d'un point (comme la position GPS d'un utilisateur) et souhaitez savoir quelles régions stockées l'englobent. Par exemple : « Dans quelles zones de livraison cette adresse se situe-t-elle ? »

  • GIS.WITHIN — identifie les formes stockées qui se trouvent à l'intérieur de votre entrée. Utilisez cette commande lorsque vous disposez d'une grande forme englobante et souhaitez savoir quelles formes stockées y tiennent entièrement. Par exemple : « Quels parkings sont entièrement situés dans ce district ? »

  • GIS.INTERSECTS — identifie les formes stockées qui partagent des coordonnées avec votre entrée. Utilisez cette commande lorsqu'un chevauchement partiel suffit. Par exemple : « Quelles routes traversent cette zone de construction ? »

Types de géométrie WKT

TairGIS utilise le format Well-Known Text (WKT) pour décrire les géométries. Les trois types suivent le format TYPE (coordinates) :

Type Exemple WKT Contrainte
POINT 'POINT (120.086631 30.138141)' Longitude en premier, puis latitude
LINESTRING 'LINESTRING (30 10, 40 40)' Au moins deux paires de coordonnées
POLYGON 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' Trois paires de coordonnées ou plus ; la première et la dernière doivent correspondre

Plage de longitude valide : -180 à 180. Plage de latitude valide : -90 à 90.

Les types MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRY et COLLECTION ne sont pas pris en charge.

Le paramètre area

Chaque commande TairGIS accepte un argument area comme premier paramètre. Une area est un conteneur logique — une clé Redis — qui regroupe des géométries connexes. Toutes les formes ajoutées à la même area peuvent être interrogées ensemble.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Mettez à jour votre instance vers la dernière version mineure pour bénéficier de davantage de fonctionnalités et d'une stabilité accrue. Pour plus d'informations, consultez Mettre à jour la version mineure d'une instance . Pour les instances en cluster ou avec séparation lecture/écriture , mettez également à jour les nœuds proxy vers la dernière version mineure afin de garantir le bon fonctionnement de toutes les commandes.

Notes d'utilisation

Les données TairGIS sont stockées sur l'instance Tair.

Commandes prises en charge

Commande Syntaxe Description
GIS.ADD GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...] Ajoute une ou plusieurs géométries décrites en WKT à une area
GIS.GET GIS.GET area polygonName Récupère le WKT d'une géométrie nommée
GIS.GETALL GIS.GETALL area [WITHOUTWKT] Récupère tous les noms de géométrie (et éventuellement leur WKT) dans une area
GIS.CONTAINS GIS.CONTAINS area polygonWkt [WITHOUTWKT] Renvoie les géométries stockées qui contiennent la géométrie d'entrée
GIS.WITHIN GIS.WITHIN area polygonWkt [WITHOUTWKT] Renvoie les géométries stockées situées à l'intérieur de la géométrie d'entrée
GIS.INTERSECTS GIS.INTERSECTS area polygonWkt Renvoie les géométries stockées qui intersectent la géométrie d'entrée
GIS.SEARCH GIS.SEARCH area [RADIUS lon lat dist M|KM|FT|MI] [MEMBER field dist M|KM|FT|MI] [GEOM geom] [COUNT count] [ASC|DESC] [WITHDIST] [WITHOUTWKT] Interroge les points situés dans un rayon ou une limite polygonale
GIS.DEL GIS.DEL area polygonName Supprime une géométrie nommée d'une area
DEL DEL key [key ...] Supprime une ou plusieurs clés TairGIS (commande native Redis)

Conventions de syntaxe des commandes :

  • UPPERCASE : mot-clé de commande

  • *Italics* : variable

  • [options] : paramètre facultatif ; les paramètres sans crochets sont obligatoires

  • A|B : mutuellement exclusif — spécifiez-en un seul

  • ... : le paramètre précédent peut se répéter

GIS.ADD

Ajoute une ou plusieurs géométries décrites en WKT à une area.

Time complexity
Élément Détails
Syntaxe GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]
Complexité temporelle

O(log n)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
polygonName Le nom de la géométrie
polygonWkt La géométrie au format WKT. Types pris en charge : POINT, LINESTRING, POLYGON
WKT (Well-Known Text) est un langage de balisage textuel standard pour représenter des objets de géométrie vectorielle, des systèmes de référence spatiale et les transformations entre ces systèmes.

Valeur de retour

  • Succès : le nombre de géométries ajoutées ou mises à jour

  • Échec : un message d'erreur

Exemple

GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'

Sortie :

(integer) 1

GIS.GET

Récupère le WKT d'une géométrie nommée au sein d'une area.

Élément Détails
Syntaxe GIS.GET area polygonName
Complexité temporelle O(1)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
polygonName Le nom de la géométrie à récupérer

Valeur de retour

  • Succès : la représentation WKT de la géométrie

  • Introuvable (l'area ou la géométrie n'existe pas) : nil

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'.

GIS.GET hangzhou campus

Sortie :

'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'

GIS.GETALL

Récupère tous les noms de géométrie dans une area, avec leur WKT par défaut.

Élément Détails
Syntaxe GIS.GETALL area [WITHOUTWKT]
Complexité temporelle O(n)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
WITHOUTWKT (Facultatif) Si spécifié, renvoie uniquement les noms des géométries, sans leur WKT

Valeur de retour

  • Succès : les noms des géométries et leur WKT (ou uniquement les noms si WITHOUTWKT est spécifié)

  • Introuvable (l'area n'existe pas) : nil

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'.

GIS.GETALL hangzhou

Sortie :

1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.CONTAINS

Renvoie les géométries stockées dans une area qui contiennent la géométrie d'entrée.

Utilisez GIS.CONTAINS lorsque vous disposez d'une géométrie (comme un point de coordonnées) et souhaitez savoir quelles régions stockées l'englobent.

Élément Détails
Syntaxe GIS.CONTAINS area polygonWkt [WITHOUTWKT]
Complexité temporelle Optimal : O(log² n) ; pire cas : O(log n)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
polygonWkt La géométrie d'entrée au format WKT. Types pris en charge : POINT, LINESTRING, POLYGON
WITHOUTWKT (Facultatif) Si spécifié, renvoie uniquement les noms des géométries, sans leur WKT

Valeur de retour

  • Succès : le nombre et le WKT des géométries qui contiennent l'entrée

  • Introuvable (l'area n'existe pas) : empty list or set

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'.

L'exemple suivant vérifie quels polygones stockés contiennent le point situé aux coordonnées (30, 11) :

GIS.CONTAINS hangzhou 'POINT (30 11)'

Sortie :

1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.WITHIN

Renvoie les géométries stockées dans une area qui se trouvent entièrement à l'intérieur de la géométrie d'entrée.

Utilisez GIS.WITHIN lorsque vous disposez d'une limite (comme un polygone de district) et souhaitez savoir quelles formes stockées y sont complètement incluses.

Élément Détails
Syntaxe GIS.WITHIN area polygonWkt [WITHOUTWKT]
Complexité temporelle Optimal : O(log² n) ; pire cas : O(log n)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
polygonWkt La géométrie d'entrée au format WKT. Types pris en charge : POINT, LINESTRING, POLYGON
WITHOUTWKT (Facultatif) Si spécifié, renvoie uniquement les noms des géométries, sans leur WKT
Les types MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRY et COLLECTION ne sont pas pris en charge.

Valeur de retour

  • Succès : le nombre et le WKT des géométries situées à l'intérieur de l'entrée

  • Introuvable (l'area n'existe pas) : empty list or set

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'.

L'exemple suivant vérifie quels polygones stockés se trouvent à l'intérieur du grand polygone englobant :

GIS.WITHIN hangzhou 'POLYGON ((30 5, 50 50, 20 50, 5 20, 30 5))'

Sortie :

1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.INTERSECTS

Renvoie les géométries stockées dans une area qui partagent des coordonnées avec la géométrie d'entrée.

Utilisez GIS.INTERSECTS lorsqu'un chevauchement partiel suffit, par exemple pour trouver toutes les routes qui traversent une zone de construction.

Élément Détails
Syntaxe GIS.INTERSECTS area polygonWkt
Complexité temporelle Optimal : O(log² n) ; pire cas : O(log n)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
polygonWkt La géométrie d'entrée au format WKT. Types pris en charge : POINT, LINESTRING, POLYGON
WITHOUTWKT (Facultatif) Si spécifié, renvoie uniquement les noms des géométries, sans leur WKT

Valeur de retour

  • Succès : le nombre et le WKT des géométries qui intersectent l'entrée

  • Introuvable (l'area n'existe pas) : empty list or set

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'.

L'exemple suivant vérifie quels polygones stockés intersectent la linestring allant de (30, 10) à (40, 40) :

GIS.INTERSECTS hangzhou 'LINESTRING (30 10, 40 40)'

Sortie :

1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.SEARCH

Interroge les géométries ponctuelles dans une area qui se situent dans un rayon donné ou une limite polygonale. Cette commande est l'équivalent TairGIS de la commande native Redis GEORADIUS.

Spécifiez exactement l'une des options RADIUS, MEMBER ou GEOM pour définir la limite de recherche.

Élément Détails
Syntaxe GIS.SEARCH area [RADIUS lon lat dist M|KM|FT|MI] [MEMBER field dist M|KM|FT|MI] [GEOM geom] [COUNT count] [ASC|DESC] [WITHDIST] [WITHOUTWKT]
Complexité temporelle Optimal : O(log² n) ; pire cas : O(log n)

Options de limite de recherche (spécifiez-en exactement une)

Option Description Exemple
RADIUS lon lat dist unit Recherche dans un rayon de dist autour de la longitude et de la latitude données. Unités : M (mètre), KM (kilomètre), FT (pied), MI (mile) RADIUS 15 37 200 KM
MEMBER field dist unit Utilise un point stocké comme centre et recherche dans un rayon de dist autour de celui-ci MEMBER Agrigento 100 KM
GEOM geom Recherche à l'intérieur du polygone défini par une chaîne WKT GEOM 'POLYGON((10 30,20 30,20 40,10 40))'

Options supplémentaires

Option Description
COUNT count Limite le nombre de résultats renvoyés. Exemple : COUNT 3
ASC Renvoie les résultats triés par distance, du plus proche au plus éloigné
DESC Renvoie les résultats triés par distance, du plus éloigné au plus proche
WITHDIST Renvoie la distance entre chaque point de résultat et le point central spécifié
WITHOUTWKT Renvoie uniquement les noms des géométries, sans leur WKT

Valeur de retour

  • Succès : le nombre et le WKT des points correspondants

  • Introuvable (l'area n'existe pas) : empty list or set

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD Sicily "Palermo" "POINT (13.361389 38.115556)" "Catania" "POINT(15.087269 37.502669)".

L'exemple suivant trouve tous les points dans l'area Sicily situés dans un rayon de 200 km autour de (15, 37), triés par distance :

GIS.SEARCH Sicily RADIUS 15 37 200 km WITHDIST ASC

Sortie :

1) (integer) 2
2) 1) "Catania"
   2) "POINT(15.087269 37.502669)"
   3) "56.4413"
   4) "Palermo"
   5) "POINT(13.361389 38.115556)"
   6) "190.4424"

GIS.DEL

Supprime une géométrie nommée d'une area.

Élément Détails
Syntaxe GIS.DEL area polygonName
Complexité temporelle O(log n)

Paramètres

Paramètre Description
area L'area (clé) qui regroupe les géométries connexes
polygonName Le nom de la géométrie à supprimer

Valeur de retour

  • Succès : OK

  • Introuvable (l'area ou la géométrie n'existe pas) : nil

  • Échec : un message d'erreur

Exemple

Prérequis : exécutez GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'.

GIS.DEL hangzhou campus

Sortie :

OK

Étapes suivantes