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
- 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ı 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 |
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin