Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Calcula el polígono o el multipolygon que contiene todos los puntos dentro del radio especificado del polígono de entrada o multipolygon en la Tierra.
Sintaxis
geo_polygon_buffer(
,
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| polígono | dynamic |
✔️ | Polígono o multipolygon en formato GeoJSON. |
| radio | real |
✔️ | Radio de búfer en metros. El valor válido debe ser positivo. |
| tolerancia | real |
Define la tolerancia en medidores que determina cuánto un polígono puede desviarse del radio ideal. Si no se especifica, se usa el valor predeterminado 10. La tolerancia no debe ser inferior al 0,0001 % del radio. La especificación de tolerancia mayor que radius reducirá la tolerancia al valor más grande posible por debajo del radio. |
Devoluciones
Polígono o MultiPolygon alrededor del polígono de entrada o multipolygon. Si las coordenadas o el radio o la tolerancia no son válidas, la consulta generará un resultado nulo.
Nota:
- Las coordenadas geoespaciales se interpretan como representadas por el sistema de referencia de coordenadas WGS-84 .
- La referencia geodética utilizada para las mediciones en la Tierra es una esfera. Los bordes de polígono son geodesics en la esfera.
- Si los bordes de polígono de entrada son líneas cartesianas rectas, considere la posibilidad de usar geo_polygon_densify() para convertir bordes planar a geodesics.
Definición y restricciones de polígono
dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})
dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell es necesario y se define como una
counterclockwisematriz ordenada de coordenadas [[lng_1,lat_1], ..., [lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Solo puede haber un shell. - LinearRingHole es opcional y se define como una
clockwisematriz ordenada de coordenadas [[lng_1,lat_1], ...,[lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Puede haber cualquier número de anillos interiores y agujeros. - Los vértices linearRing deben ser distintos con al menos tres coordenadas. La primera coordenada debe ser igual a la última. Se requieren al menos cuatro entradas.
- Las coordenadas [longitud, latitud] deben ser válidas. La longitud debe ser un número real en el intervalo [-180, +180] y la latitud debe ser un número real en el intervalo [-90, +90].
- LinearRingShell incluye como máximo la mitad de la esfera. LinearRing divide la esfera en dos regiones. Se elegirá el menor de las dos regiones.
- La longitud del borde LinearRing debe ser inferior a 180 grados. Se elegirá el borde más corto entre los dos vértices.
- LinearRings no debe cruzar y no debe compartir bordes. LinearRings puede compartir vértices.
- Polygon contiene sus vértices.
Ejemplos
En el ejemplo siguiente se calcula el polígono alrededor del polígono de entrada, con radio de 10km.
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)
| búfer |
|---|
| {"type": "Polygon","coordinates": [ ... ]} |
La consulta siguiente calcula el búfer alrededor de cada polígono y unifica el resultado.
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)
| resultado |
|---|
| {"type": "Polygon","coordinates": [ ... ]} |
En el ejemplo siguiente se devolverá true, debido a un polígono no válido.
print buffer = isnull(geo_polygon_buffer(dynamic({"type":"p"}), 1))
| búfer |
|---|
| Cierto |
En el ejemplo siguiente se devolverá true, debido a un radio no válido.
print buffer = isnull(geo_polygon_buffer(dynamic({"type":"Polygon","coordinates":[[[10,10],[0,10],[0,0],[10,10]]]}), 0))
| búfer |
|---|
| Cierto |