Passer au contenu principal

greatCircleDistance

Calcule la distance entre deux points à la surface de la Terre à l’aide de la formule du grand cercle.
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Paramètres d’entrée
  • lon1Deg — Longitude du premier point, en degrés. Intervalle : [-180°, 180°].
  • lat1Deg — Latitude du premier point, en degrés. Intervalle : [-90°, 90°].
  • lon2Deg — Longitude du deuxième point, en degrés. Intervalle : [-180°, 180°].
  • lat2Deg — Latitude du deuxième point, en degrés. Intervalle : [-90°, 90°].
Les valeurs positives correspondent aux latitudes nord et aux longitudes est, et les valeurs négatives aux latitudes sud et aux longitudes ouest. Valeur renvoyée La distance entre deux points à la surface de la Terre, en mètres. Déclenche une exception si les valeurs des paramètres d’entrée sont hors de cet intervalle. Exemple
SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673) AS greatCircleDistance
┌─greatCircleDistance─┐
│            14128352 │
└─────────────────────┘

geoDistance

Semblable à greatCircleDistance, mais calcule la distance sur l’ellipsoïde WGS-84 plutôt que sur la sphère. Il s’agit d’une approximation plus précise du géoïde terrestre. Les performances sont les mêmes que pour greatCircleDistance (sans perte de performances). Il est recommandé d’utiliser geoDistance pour calculer les distances à la surface de la Terre. Note technique : pour des points suffisamment proches, nous calculons la distance à l’aide d’une approximation plane, avec la métrique du plan tangent au milieu des coordonnées.
geoDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Paramètres d’entrée
  • lon1Deg — Longitude du premier point en degrés. Intervalle : [-180°, 180°].
  • lat1Deg — Latitude du premier point en degrés. Intervalle : [-90°, 90°].
  • lon2Deg — Longitude du deuxième point en degrés. Intervalle : [-180°, 180°].
  • lat2Deg — Latitude du deuxième point en degrés. Intervalle : [-90°, 90°].
Les valeurs positives correspondent à la latitude nord et à la longitude est, tandis que les valeurs négatives correspondent à la latitude sud et à la longitude ouest. Valeur renvoyée La distance entre deux points à la surface de la Terre, en mètres. Génère une exception si les valeurs des paramètres d’entrée sont en dehors de cet intervalle. Exemple
SELECT geoDistance(38.8976, -77.0366, 39.9496, -75.1503) AS geoDistance
┌─geoDistance─┐
│   212458.73 │
└─────────────┘

greatCircleAngle

Calcule l’angle au centre entre deux points situés à la surface de la Terre à l’aide de la formule du grand cercle.
greatCircleAngle(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Paramètres d’entrée
  • lon1Deg — Longitude du premier point en degrés.
  • lat1Deg — Latitude du premier point en degrés.
  • lon2Deg — Longitude du deuxième point en degrés.
  • lat2Deg — Latitude du deuxième point en degrés.
Valeur renvoyée L’angle central entre deux points, en degrés. Exemple
SELECT greatCircleAngle(0, 0, 45, 0) AS arc
┌─arc─┐
│  45 │
└─────┘

pointInEllipses

Vérifie si le point appartient à au moins une des ellipses. Les coordonnées sont géométriques dans le système de coordonnées cartésien.
pointInEllipses(x, y, x₀, y₀, a₀, b₀,...,xₙ, yₙ, aₙ, bₙ)
Paramètres d’entrée
  • x, y — Coordonnées d’un point dans le plan.
  • xᵢ, yᵢ — Coordonnées du centre de la i-ième ellipse.
  • aᵢ, bᵢ — Axes de la i-ième ellipse, dans les unités des coordonnées x et y.
Le nombre de paramètres d’entrée doit être de 2+4⋅n, où n est le nombre d’ellipses. Valeurs renvoyées 1 si le point se trouve à l’intérieur d’au moins une ellipse ; 0 dans le cas contraire. Exemple
SELECT pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)
┌─pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)─┐
│                                               1 │
└─────────────────────────────────────────────────┘

pointInPolygon

Vérifie si le point appartient au polygone dans le plan.
pointInPolygon((x, y), [(a, b), (c, d) ...], ...)
Valeurs d’entrée
  • (x, y) — Coordonnées d’un point dans le plan. Type de données — Tuple — un tuple de deux nombres.
  • [(a, b), (c, d) ...] — Sommets du polygone. Type de données — Array. Chaque sommet est représenté par une paire de coordonnées (a, b). Les sommets doivent être indiqués dans le sens horaire ou antihoraire. Le nombre minimum de sommets est de 3. Le polygone doit être constant.
  • La fonction prend également en charge les polygones avec des trous (zones évidées). Type de données — Polygon. Passez soit le Polygon entier comme deuxième argument, soit l’anneau extérieur d’abord, puis chaque trou comme argument supplémentaire distinct.
  • La fonction prend également en charge les multipolygones. Type de données — MultiPolygon. Passez soit le MultiPolygon entier comme deuxième argument, soit chaque polygone qui le compose comme argument distinct.
Valeurs renvoyées 1 si le point est à l’intérieur du polygone, 0 sinon. Si le point se trouve sur le bord du polygone, la fonction peut renvoyer 0 ou 1. Exemple
SELECT pointInPolygon((3., 3.), [(6, 0), (8, 4), (5, 8), (0, 2)]) AS res
┌─res─┐
│   1 │
└─────┘
Remarque • Vous pouvez définir validate_polygons = 0 pour contourner la validation de la géométrie. • pointInPolygon suppose que chaque polygone est bien formé. Si l’entrée se recoupe, comporte des anneaux mal ordonnés ou des arêtes qui se chevauchent, les résultats deviennent peu fiables, en particulier pour les points situés exactement sur une arête, un sommet ou à l’intérieur d’une auto-intersection, où la notion de “à l’intérieur” ou “à l’extérieur” n’est pas définie. • Lorsque l’argument polygone est constant et que le point est exprimé à l’aide de colonnes de clé indexées (par exemple, pointInPolygon((x, y), constant_polygon) sur une table où x, y font partie de la PRIMARY KEY ou sont couverts par un index minmax), ClickHouse peut utiliser à la fois la clé primaire et les index de data-skipping minmax pour écarter les granules non pertinentes.
Dernière modification le 25 juin 2026