polygon (POLYGON) est optimisé pour les requêtes de type point-dans-polygone, c’est-à-dire essentiellement des recherches de « géocodage inversé ».
À partir d’une coordonnée (latitude/longitude), il détermine efficacement quel polygone ou quelle région (parmi un grand nombre de polygones, comme des frontières de pays ou de régions) contient ce point.
Il est particulièrement adapté pour associer des coordonnées géographiques à leur région d’appartenance.
- DDL
- Fichier de configuration
Lors de la configuration du dictionnaire polygon, la clé doit être de l’un des deux types suivants :
- Un polygone simple. Il s’agit d’un tableau de points.
- MultiPolygon. Il s’agit d’un tableau de polygones. Chaque polygone est un tableau bidimensionnel de points. Le premier élément de ce tableau correspond à la limite extérieure du polygone, et les éléments suivants définissent les zones à en exclure.
| Layout | Description |
|---|---|
POLYGON_SIMPLE | Implémentation naïve. Un parcours linéaire de tous les polygones est effectué pour chaque requête, avec vérification de l’appartenance sans index supplémentaire. |
POLYGON_INDEX_EACH | Un index distinct est créé pour chaque polygone, ce qui permet des vérifications d’appartenance rapides dans la plupart des cas (optimisé pour les régions géographiques). Une grille est superposée à la zone, en divisant récursivement les cellules en 16 parties égales. La division s’arrête lorsque la profondeur de récursion atteint MAX_DEPTH ou qu’une cellule n’intersecte pas plus de MIN_INTERSECTIONS polygones. |
POLYGON_INDEX_CELL | Crée également la grille décrite ci-dessus avec les mêmes options. Pour chaque cellule feuille, un index est construit sur tous les fragments de polygones qu’elle contient, ce qui permet de répondre rapidement aux requêtes. |
POLYGON | Synonyme de POLYGON_INDEX_CELL. |
store_polygon_key_column = 1 dans la configuration du dictionnaire ou dans la requête DDL correspondante.
Query
Response