geo_intersection_2lines()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Berechnet die Schnittmenge von zwei Linien oder Mehrlinien.
Syntax
geo_intersection_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
Schnittmenge im GeoJSON-Format und eines dynamischen Datentyps. 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 die Schnittmenge zwischen zwei Zeilen berechnet. In diesem Fall ist das Ergebnis ein Punkt.
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 intersection = geo_intersection_2lines(lineString1, lineString2)
Output
intersection |
---|
{"type": "Point","coordinates": [-73.979837116670978,40.78398928928972165]} |
Im folgenden Beispiel wird die Schnittmenge zwischen zwei Zeilen berechnet. In diesem Fall ist das Ergebnis eine Linie.
let line = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
print intersection = geo_intersection_2lines(line, line)
Output
intersection |
---|
{"type": "LineString","coordinates": [[ -73.978929, 40.785155],[ -73.980903, 40.782621]]} |
Die folgenden beiden Zeilen schneiden sich nicht.
let lineString1 = dynamic({"type":"LineString","coordinates":[[1, 1],[2, 2]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[3, 3],[4, 4]]});
print intersection = geo_intersection_2lines(lineString1, lineString2)
Output
intersection |
---|
{"type": "GeometryCollection", "geometries": []} |
Im folgenden Beispiel wird ein NULL-Ergebnis zurückgegeben, da eine zeile ungültig ist.
let lineString1 = dynamic({"type":"LineString","coordinates":[[1, 1],[2, 2]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[3, 3]]});
print invalid = isnull(geo_intersection_2lines(lineString1, lineString2))
Output
Ungültig |
---|
1 |