geo_intersection_2lines()

Berechnet die Schnittmenge von zwei Linien oder Mehrlinien.

Syntax

geo_intersection_2lines(lineString1,lineString2)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
lineString1 dynamic ✔️ Eine Linie oder mehrzeilige Im GeoJSON-Format.
lineString2 dynamic ✔️ Eine Linie oder mehrzeilige Im GeoJSON-Format.

Gibt zurück

Schnittmenge im GeoJSON-Format und eines dynamischen Datentyps. Wenn LineString oder ein MultiLineString ungültig sind, erzeugt die Abfrage ein NULL-Ergebnis.

Hinweis

  • Die georäumlichen Koordinaten werden so interpretiert, wie sie durch das Koordinatenreferenzsystem WGS-84 dargestellt werden.
  • Das geodätische Datum, das zum Messen der Entfernung auf der Erde verwendet wird, ist eine Kugel. Linienränder sind Geodätik auf der Kugel.
  • Wenn Eingabelinienränder gerade kartesische Linien sind, sollten Sie geo_line_densify() verwenden, um planare Kanten in Geodätik 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, wenn der 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. Die kürzeste Kante zwischen den beiden Scheitelpunkten wird ausgewählt.

Tipp

Verwenden Sie literale LineString oder MultiLineString für eine bessere Leistung.

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)

Ausgabe

Schnittmenge
{"type": "Point","coordinates": [-73.979837116670978,40.783989289772165]}

Im folgenden Beispiel wird die Schnittmenge zwischen zwei Zeilen berechnet. In diesem Fall ist das Ergebnis eine Zeile.

let line = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
print intersection = geo_intersection_2lines(line, line)

Ausgabe

Schnittmenge
{"type": "LineString","coordinates": [[ -73.978929, 40.785155],[ -73.980903, 40.782621]]}

Die folgenden beiden Zeilen überschneiden 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)

Ausgabe

Schnittmenge
{"type": "GeometryCollection", "geometries": []}

Im folgenden Beispiel wird ein NULL-Ergebnis zurückgegeben, da eine der Zeilen 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))

Ausgabe

ungültig
1