Freigeben über


geo_intersects_2lines()

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Berechnet, ob sich zwei Linien oder mehrere Linien schneiden.

Syntax

geo_intersects_2lines(lineString1,lineString2)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
lineString1 dynamic ✔️ Eine Linie oder mehrere Zeilen im GeoJSON-Format.
lineString2 dynamic ✔️ Eine Linie oder mehrere Zeilen im GeoJSON-Format.

Gibt zurück

Gibt an, ob zwei Linien oder Multilinien überschneiden. Wenn lineString oder multiLineString ungültig sind, erzeugt die Abfrage ein NULL-Ergebnis.

Hinweis

  • Die Geospatialkoordinaten werden durch das WGS-84-Koordinatenverweissystem interpretiert.
  • Das geodetische Datum , das zum Messen der Entfernung auf der Erde verwendet wird, ist eine Kugel. Linienränder sind geodätische Ränder auf der Kugel.
  • Wenn Eingabelinien gerade kartesische Linien sind, sollten Sie geo_line_densify() verwenden, um planare Kanten in geodätische Ränder zu konvertieren.

LineString-Definition und -Einschränkungen

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]]})

  • LineString-Koordinatenarray muss mindestens zwei Einträge enthalten.
  • Koordinaten [Längengrad, Breitengrad] müssen gültig sein, wobei Längengrad eine reelle Zahl im Bereich [-180, +180] und Breitengrad eine reelle Zahl im Bereich [-90, +90] ist.
  • Die Kantenlänge muss kleiner als 180 Grad sein. Der kürzeste Rand zwischen den beiden Scheitelpunkten wird ausgewählt.

Tipp

Verwenden Sie Literal LineString oder MultiLineString, um eine bessere Leistung zu erzielen.

Beispiele

Im folgenden Beispiel wird überprüft, ob sich einige zwei Literallinien überschneiden.

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)

Output

Schneidet
True

Im folgenden Beispiel werden alle Straßen im NyC GeoJSON Straßentabelle gefunden, die sich mit einigen interessanten Linien überschneiden.

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

Output

name
Museumsmeile
W 78. St
W 79. St.
W 80. St.
W 81st St

Im folgenden Beispiel wird ein NULL-Ergebnis zurückgegeben, da eine zeile ungültig ist.

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))

Output

print_0
True