geo_intersects_2lines()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Calcule si deux lignes ou plusieurs lignes se croisent.
Syntaxe
geo_intersects_2lines(
lineString1,
lineString2)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
lineString1 | dynamic |
✔️ | Ligne ou multiligne au format GeoJSON. |
lineString2 | dynamic |
✔️ | Ligne ou multiligne au format GeoJSON. |
Retours
Indique si deux lignes ou plusieurs lignes se croisent. Si lineString ou multiLineString n’est pas valide, la requête produit un résultat null.
Remarque
- Les coordonnées géospatiales sont interprétées comme représentées par le système de référence de coordonnées WGS-84 .
- La référence géodésique utilisée pour mesurer la distance sur terre est une sphère. Les bords de ligne sont géodésiques sur la sphère.
- Si les bords de ligne d’entrée sont des lignes cartésiennes droites, envisagez d’utiliser geo_line_densify() pour convertir les bords planaires en géodésiques.
Définition et contraintes LineString
dynamic({"type » : « LineString »,"coordinates » : [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]})
dynamic({"type » : « MultiLineString »,"coordinates » : [[line_1, line_2, ..., line_N]})
- Le tableau de coordonnées LineString doit contenir au moins deux entrées.
- Les coordonnées [longitude, latitude] doivent être valides, où la longitude est un nombre réel dans la plage [-180, +180] et la latitude est un nombre réel dans la plage [-90, +90].
- La longueur du bord doit être inférieure à 180 degrés. Le bord le plus court entre les deux sommets sera choisi.
Conseil
Utilisez LineString littéral ou MultiLineString pour améliorer les performances.
Exemples
L’exemple suivant vérifie si deux lignes littérales se croisent.
let lineString1 = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[-73.985195,40.788275],[-73.974552,40.779761]]});
print intersects = geo_intersects_2lines(lineString1, lineString2)
Sortie
Croise |
---|
True |
L’exemple suivant recherche toutes les routes de la table de routes NyC GeoJSON qui croise certaines lignes d’intérêt.
let my_road = dynamic({"type":"LineString","coordinates":[[-73.97892951965332,40.78515573551921],[-73.98090362548828,40.78262115769851]]});
NY_Manhattan_Roads
| project name = features.properties.Label, road = features.geometry
| where geo_intersects_2lines(road, my_road)
| project name
Sortie
name |
---|
Broadway |
W 78th St |
W 79th St |
W 80th St |
W 81st St |
L’exemple suivant retourne un résultat Null, car l’une des lignes n’est pas valide.
let lineString1 = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[-73.985195,40.788275]]});
print isnull(geo_intersects_2lines(lineString1, lineString2))
Sortie
print_0 |
---|
True |