geo_intersects_2polygons()

İki çokgen veya çok köşeligenlerin kesişip kesişmeyeceğini hesaplar.

Syntax

geo_intersects_2polygons(çokgen1,çokgen1)

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

Parametreler

Ad Tür Gerekli Açıklama
çokgen1 dynamic ✔️ GeoJSON biçiminde çokgen veya çok köşeligen.
çokgen2 dynamic ✔️ GeoJSON biçiminde çokgen veya çok köşeligen.

Döndürülenler

İki çokgenin mi yoksa çok kutuplu mu kesiştiği gösterir. Polygon veya MultiPolygon 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'da ölçümler için kullanılan jeodetik datum bir küredir. Çokgen kenarlar küre üzerindeki jeodeziklerdir .
  • Giriş çokgen kenarları düz kartezyen çizgilerse, planar kenarları jeodeziklere dönüştürmek için geo_polygon_densify() kullanmayı göz önünde bulundurun.

Çokgen tanımı ve kısıtlamaları

dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})

dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})

  • LinearRingShell gereklidir ve [[lng_1,lat_1], ..., [lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]] sıralı bir counterclockwise dizi olarak tanımlanır. Tek bir kabuk olabilir.
  • LinearRingHole isteğe bağlıdır ve [[lng_1,lat_1], ...,[lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]] sıralı bir clockwise dizi olarak tanımlanır. Herhangi bir sayıda iç halka ve delik olabilir.
  • LinearRing köşeleri en az üç koordinatla ayrı olmalıdır. İlk koordinat son koordinata eşit olmalıdır. En az dört giriş gereklidir.
  • Koordinatlar [boylam, enlem] geçerli olmalıdır. Boylam [-180, +180] aralığında gerçek bir sayı, enlem ise [-90, +90] aralığında gerçek bir sayı olmalıdır.
  • LinearRingShell, kürenin büyük bir kısmını çevreler. LinearRing, küreyi iki bölgeye böler. İki bölgeden küçük olan seçilir.
  • LinearRing kenar uzunluğu 180 dereceden az olmalıdır. İki köşe arasındaki en kısa kenar seçilir.
  • LinearRing'ler çapraz olmamalıdır ve kenarları paylaşmamalıdır. LinearRing'ler köşeleri paylaşabilir.
  • Çokgen köşelerini içerir.

İpucu

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

Örnekler

Aşağıdaki örnek, bazı iki sabit çokgenin kesişip kesişmediğini denetler.

let polygon1 = dynamic({"type":"Polygon","coordinates":[[[-73.9630937576294,40.77498840732385],[-73.963565826416,40.774383111780914],[-73.96205306053162,40.773745311181585],[-73.96160781383514,40.7743912365898],[-73.9630937576294,40.77498840732385]]]});
let polygon2 = dynamic({"type":"Polygon","coordinates":[[[-73.96213352680206,40.775045280447145],[-73.9631313085556,40.774578106920345],[-73.96207988262177,40.77416780398293],[-73.96213352680206,40.775045280447145]]]});
print geo_intersects_2polygons(polygon1, polygon2)

Çıkış

print_0
Doğru

Aşağıdaki örnek, ABD'de ilgi alanı değişmez çokgeniyle kesişen tüm ilçeleri bulur.

let area_of_interest = dynamic({"type":"Polygon","coordinates":[[[-73.96213352680206,40.775045280447145],[-73.9631313085556,40.774578106920345],[-73.96207988262177,40.77416780398293],[-73.96213352680206,40.775045280447145]]]});
US_Counties
| project name = features.properties.NAME, county = features.geometry
| where geo_intersects_2polygons(county, area_of_interest)
| project name

Çıkış

name
New Yok

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

let central_park_polygon = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
let invalid_polygon = dynamic({"type":"Polygon"});
print isnull(geo_intersects_2polygons(invalid_polygon, central_park_polygon))

Çıkış

print_0
Doğru