Megosztás a következőn keresztül:


geo_intersects_2lines()

Kiszámítja, hogy két vonal vagy több vonal metszik-e egymást.

Syntax

geo_intersects_2lines(lineString1,lineString2)

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
lineString1 dynamic ✔️ Vonal vagy többsoros GeoJSON formátumban.
lineString2 dynamic ✔️ Vonal vagy többsoros GeoJSON formátumban.

Válaszok

Azt jelzi, hogy két vonal vagy többsoros metszi-e egymást. Ha a lineString vagy a multiLineString érvénytelen, a lekérdezés null eredményt ad.

Megjegyzés

  • A térinformatikai koordinátákat a WGS-84 koordináta-referenciarendszer képviseli.
  • A Föld távolságának mérésére használt geodéziai datum egy gömb. A vonalszélek geodéziaiak a gömbön.
  • Ha a bemeneti vonal élei egyenes cartesian vonalak, fontolja meg a geo_line_densify() használatát a planáris élek geodéziaiká alakításához.

LineString-definíció és megkötések

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

  • A LineString koordináta-tömbnek legalább két bejegyzést kell tartalmaznia.
  • A koordinátáknak [hosszúság, szélesség] érvényesnek kell lenniük, ha a hosszúság valós szám a(z) [-180, +180] tartományban, a szélesség pedig a [-90, +90] tartomány valós száma.
  • Az élhossznak 180 foknál kisebbnek kell lennie. A két csúcspont közötti legrövidebb él lesz kiválasztva.

Tipp

Használjon literál LineString vagy MultiLineString elemet a jobb teljesítmény érdekében.

Példák

Az alábbi példa azt ellenőrzi, hogy két literálvonal metszi-e egymást.

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)

Kimenet

metszet
Igaz

Az alábbi példa megkeresi a NYC GeoJSON úttáblában szereplő összes olyan utat, amely bizonyos érdeklődési körökkel metszi egymást.

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

Kimenet

name
Broadway
W 78th St
W 79th St
W 80th St
W 81st St

Az alábbi példa null eredményt ad vissza, mert az egyik sor érvénytelen.

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

Kimenet

print_0
Igaz