Udostępnij za pośrednictwem


geo_polygon_buffer()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Oblicza wielokąt lub wielokąt, który zawiera wszystkie punkty w danym promieniu wielokąta wejściowego lub wielopolygonu na Ziemi.

Składnia

geo_polygon_buffer(tolerancja promieni, wielokąta, )

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
wielokąt dynamic ✔️ Wielokąt lub multipolygon w formacie GeoJSON.
promień real ✔️ Promień buforu w metrach. Prawidłowa wartość musi być dodatnia.
tolerancja real Definiuje tolerancję w metrach, która określa, ile wielokąt może odbiegać od idealnego promienia. Jeśli nie określono, zostanie użyta wartość 10 domyślna. Tolerancja nie powinna być niższa niż 0,0001% promienia. Określenie tolerancji większej niż promień obniży tolerancję największej możliwej wartości poniżej promienia.

Zwraca

Wielokąt lub MultiPolygon wokół wejściowego wielokąta lub wielopolygonu. Jeśli współrzędne lub promień lub tolerancja są nieprawidłowe, zapytanie zwróci wynik o wartości null.

Uwaga

Definicja i ograniczenia wielokątne

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

dynamic({"type": "MultiPolygon","współrzędne": [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})

  • Program LinearRingShell jest wymagany i zdefiniowany jako uporządkowana tablica współrzędnych counterclockwise [[lng_1,lat_1], ..., [lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Może istnieć tylko jedna powłoka.
  • LinearRingHole jest opcjonalny i zdefiniowany jako uporządkowana tablica współrzędnych clockwise [[lng_1,lat_1], ...,[lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Może istnieć dowolna liczba pierścieni i otworów wewnętrznych.
  • Wierzchołki liniowe muszą być odrębne z co najmniej trzema współrzędnymi. Pierwsza współrzędna musi być równa ostatniej. Wymagane są co najmniej cztery wpisy.
  • Współrzędne [długość geograficzna, szerokość geograficzna] muszą być prawidłowe. Długość geograficzna musi być liczbą rzeczywistą w zakresie [-180, +180], a szerokość geograficzna musi być liczbą rzeczywistą w zakresie [-90, +90].
  • LinearRingShell otacza co najwyżej połowę kuli. Funkcja LinearRing dzieli sferę na dwa regiony. Zostaną wybrane mniejsze z dwóch regionów.
  • Długość krawędzi liniowej musi być mniejsza niż 180 stopni. Zostanie wybrana najkrótsza krawędź między dwoma wierzchołkami.
  • Wyrażenia liniowe nie mogą być krzyżowe i nie mogą współużytkować krawędzi. LinearRingi mogą współdzielić wierzchołki.
  • Wielokąt zawiera wierzchołki.

Przykłady

Poniższe zapytanie oblicza wielokąt wokół wielokąta wejściowego z promieniem 10 km.

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)
bufor
{"type": "Wielokąt","współrzędne": [ ... ]}

Poniższe zapytanie oblicza bufor wokół każdego wielokąta i unifies wynik

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": "Wielokąt","współrzędne": [ ... ]}

Poniższy przykład zwróci wartość true z powodu nieprawidłowego wielokąta.

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

Poniższy przykład zwróci wartość true z powodu nieprawidłowego promienia.

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