geo_union_polygons_array()

Dünya'da çokgenlerin veya çok kutupluların birleşimini hesaplar.

Syntax

geo_union_polygons_array(Çokgen)

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

Parametreler

Ad Tür Gerekli Açıklama
Çokgen dynamic ✔️ GeoJSON biçiminde çokgen veya çok köşeli bir dizi.

Döndürülenler

GeoJSON Biçiminde ve dinamik veri türünde çokgen veya çok köşeligen. Sağlanan çokgenlerden veya çok kutuplulardan herhangi biri geçersizse, sorgu null bir 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 koordinat dizisi 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 koordinat dizisi 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.

Örnekler

Aşağıdaki örnek, çokgen satırlarda jeo-uzamsal birleşim gerçekleştirir.

datatable(polygons:dynamic)
[
    dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
    dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249],[-73.96888,40.79282],[-73.9577,40.7789],[-73.94622,40.79249]]]}),
    dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize polygons_arr = make_list(polygons)
| project polygons_union = geo_union_polygons_array(polygons_arr)

Çıkış

polygons_union
{"type":"Polygon","coordinates":[[[-73.972599326729608,40.765330371902991],[-73.960302383706178,40.782140794645024],[-73.9577,40.7789],[-73.94622,40.79249],[-73.9526593223173,40.792584227716468],[-73.9495,40.7969],[-73.95807,40.80068],[-73.9639277517478,40.792748258673875],[-73.96888,40.792819999999992],[-73.9662719791645,40.7895734224338],[-73.9803360309571,40.770518810606404],[-73.9936,40.7663],[-73.97171,40.756550000000004],[- 73.972599326729608,40.765330371902991]]]}

Aşağıdaki örnek, çokgen sütunlarda jeo-uzamsal birleşim gerçekleştirir.

datatable(polygon1:dynamic, polygon2:dynamic)
[
    dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}), dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249],[-73.96888,40.79282],[-73.9577,40.7789],[-73.94622,40.79249]]]})
]
| project polygons_arr = pack_array(polygon1, polygon2)
| project polygons_union = geo_union_polygons_array(polygons_arr)

Çıkış

polygons_union
{"type":"Polygon","coordinates":[[-73.9495,40.7969],[-73.95807,40.80068],[-73.9639277517478,40.792748258673875],[-73.96888,40.792819999999992],[-73.9662719791645,40.7895734224338],[-73.98201,73.98201,440.76825],[-73.97317,40.76455],[-73.960302383706178,40.782140794645024],[-73.9577,40.7789],[-73.94622,40.79249],[-73.9526593223173,40.792584227716468],[-73.9495,40.7969]]]}

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

datatable(polygons:dynamic)
[
    dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
    dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249]]]})
]
| summarize polygons_arr = make_list(polygons)
| project invalid_union = isnull(geo_union_polygons_array(polygons_arr))

Çıkış

invalid_union
Doğru