geo_simplify_polygons_array()

Kısa kenarlardan oluşan neredeyse düz zincirleri Dünya'da tek bir uzun kenarla değiştirerek çokgenleri basitleştirir.

Syntax

geo_simplify_polygons_array(Çokgen,Tolerans)

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öşeligen.
Tolerans int, long veya real İki köşe arasındaki metre cinsinden minimum uzaklığı tanımlar. Desteklenen değerler [0, ~7.800.000 metre] aralığındadır. Belirtilmemişse, varsayılan değer 10 kullanılır.

Döndürülenler

GeoJSON biçiminde ve dinamik veri türünde basitleştirilmiş çokgen veya çok köşeli, toleranstan daha az uzaklığı olan iki köşesi yoktur. Çokgen veya tolerans geçersizse sorgu null sonuç üretir.

Not

  • Giriş tek bir çokgense bkz. geo_polygon_simplify().
  • 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.
  • Giriş çok kutupluysa ve birden fazla çokgen içeriyorsa, sonuç çokgenler birleşiminin alanı olur.
  • Yüksek tolerans küçük çokgenlerin kaybolmasına neden olabilir.

Ç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, birbirinden 100 metre uzaklıkta olan köşeleri kaldırarak karşılıklı kenarlıklı çokgenleri (ABD durumları) basitleştirir.

US_States
| project polygon = features.geometry
| summarize lst = make_list(polygon)
| project polygons = geo_simplify_polygons_array(lst, 100)

Çıkış

Çokgen
{ "type": "MultiPolygon", "koordinatlar": [ ... ]]}

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]]]}),
    dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_invalid_polygon = isnull(geo_simplify_polygons_array(arr))

Çıkış

is_invalid_polygon
1

Aşağıdaki örnek, geçersiz tolerans nedeniyle 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],[-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 arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, -1))

Çıkış

is_null
1

Aşağıdaki örnek, yüksek tolerans çokgenin kaybolmasına neden 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],[-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 arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, 10000))

Çıkış

is_null
1