Aracılığıyla paylaş


geo_intersects_2lines()

İki satırın mı yoksa çok satırlı mı kesişip kesişmeyeceğini hesaplar.

Syntax

geo_intersects_2lines(lineString1,lineString2)

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Gerekli Açıklama
lineString1 dynamic ✔️ GeoJSON biçiminde bir satır veya çok satırlı.
lineString2 dynamic ✔️ GeoJSON biçiminde bir satır veya çok satırlı.

Döndürülenler

İki satırın mı yoksa çok satırlı mı kesiştiği gösterir. lineString veya multiLineString geçersizse, sorgu null sonuç üretir.

Not

  • Jeo-uzamsal koordinatlar , WGS-84 koordinat başvuru sistemi tarafından temsil edilen şekilde yorumlanır.
  • Dünya üzerindeki mesafeyi ölçmek için kullanılan jeodetik datum bir küredir. Çizgi kenarları küre üzerinde jeodeziktir .
  • Giriş çizgisi kenarları düz kartezyen çizgilerse, planlı kenarları jeodeziklere dönüştürmek için geo_line_densify() kullanmayı göz önünde bulundurun.

LineString tanımı ve kısıtlamaları

dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})

dynamic({"type": "MultiLineString","koordinatlar": [[line_1, line_2, ..., line_N]]})

  • LineString koordinatları dizisi en az iki giriş içermelidir.
  • Koordinatlar [boylam, enlem] geçerli olmalıdır; burada boylam [-180, +180] aralığında gerçek bir sayıdır ve enlem [-90, +90] aralığında gerçek bir sayıdır.
  • Kenar uzunluğu 180 dereceden az olmalıdır. İki köşe arasındaki en kısa kenar seçilir.

İpucu

Daha iyi performans için sabit LineString veya MultiLineString kullanın.

Örnekler

Aşağıdaki örnek, bazı iki değişmez değer çizgisinin kesişip kesişmediğini denetler.

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)

Çıkış

Kestiği
Doğru

Aşağıdaki örnek, NYC GeoJSON yollar tablosundaki bazı ilgi alanlarıyla kesişen tüm yolları bulur.

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

Çıkış

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

Aşağıdaki örnek, satırlardan biri geçersiz olduğundan null sonuç döndürür.

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

Çıkış

print_0
Doğru