Aracılığıyla paylaş


geo_polygon_buffer()

Dünya'da giriş çokgeninin veya çok kutuplugenin verilen yarıçapı içindeki tüm noktaları içeren çokgen veya çok kutupluyu hesaplar.

Sözdizimi

geo_polygon_buffer(çokgen, yarıçap toleransı, )

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

Parametreler

Ad Tür Zorunlu Açıklama
çokgen dynamic ✔️ GeoJSON biçiminde çokgen veya çok kutuplu.
yarıçap real ✔️ Metre olarak arabellek yarıçapı. Geçerli değer pozitif olmalıdır.
hoşgörü real Bir çokgenin ideal yarıçaptan ne kadar sapabileceğini belirleyen ölçümlerdeki toleransı tanımlar. Belirtilmezse, varsayılan değer 10 kullanılır. Tolerans, yarıçapın %0,0001'inden düşük olmamalıdır. Yarıçaptan daha büyük tolerans belirtmek, yarıçapın altındaki mümkün olan en büyük değere toleransı düşürür.

Döndürülenler

Giriş Çokgen veya çok kutuplu etrafında çokgen veya MultiPolygon. Koordinatlar, yarıçap veya tolerans geçersizse, sorgu null bir sonuç üretir.

Not

Ç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ı ve enlem [-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ölgenin küçük kısmı seçilir.
  • Doğrusal 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.

Örnekler

Aşağıdaki sorgu, 10km yarıçapı ile giriş çokgeninin etrafındaki çokgeni hesaplar.

let polygon = dynamic({"type":"Polygon","coordinates":[[[139.813757,35.719666],[139.72558,35.71813],[139.727471,35.653231],[139.818721,35.657264],[139.813757,35.719666]]]});
print buffer = geo_polygon_buffer(polygon, 10000)
arabellek
{"type": "Polygon","coordinates": [ ... ]}

Aşağıdaki sorgu her çokgen etrafındaki arabelleği hesaplar ve sonucu birlandırır

datatable(polygon:dynamic, radius:real )
[
    dynamic({"type":"Polygon","coordinates":[[[12.451218693639277,41.906457003556625],[12.445753852969375,41.90160968881543],[12.453514425793855,41.90361551885886],[12.451218693639277,41.906457003556625]]]}), 100,
    dynamic({"type":"Polygon","coordinates":[[[12.4566086734784,41.905119850039995],[12.453913683559591,41.903652663265234],[12.455485761012113,41.90146110630562],[12.4566086734784,41.905119850039995]]]}), 20
]
| project buffer = geo_polygon_buffer(polygon, radius)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
result
{"type": "Polygon","coordinates": [ ... ]}

Aşağıdaki örnek, geçersiz çokgen nedeniyle true döndürür.

print buffer = isnull(geo_polygon_buffer(dynamic({"type":"p"}), 1))
arabellek
True

Aşağıdaki örnek, geçersiz yarıçap nedeniyle true döndürür.

print buffer = isnull(geo_polygon_buffer(dynamic({"type":"Polygon","coordinates":[[[10,10],[0,10],[0,0],[10,10]]]}), 0))
arabellek
True