Leer en inglés

Compartir a través de


geo_polygon_area()

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Calcula el área de un polígono o un multipolygon en la Tierra.

Sintaxis

geo_polygon_area(polígono)

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
polígono dynamic ✔️ Polígono o multipolygon en formato GeoJSON.

Devoluciones

El área de un polígono o un multipolygon, en metros cuadrados, en la Tierra. Si el polígono o el multipolygon no son válidos, 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.
  • Si la entrada es un multipolygon y contiene más de un polígono, el resultado será el área de unión de polígonos.

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 counterclockwise matriz 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 clockwise matriz 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.

Ejemplos

En el ejemplo siguiente se calcula el área del parque central de Nueva York.

Kusto
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print area = geo_polygon_area(central_park)

Salida

area
3475207.28346606

En el ejemplo siguiente se realiza la unión de polígonos en multipolygon y se calcula el área en el polígono unificado.

Kusto
let polygons = dynamic({"type":"MultiPolygon","coordinates":[[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]],[[[-73.94262313842773,40.775991804565585],[-73.98107528686523,40.791849155467695],[-73.99600982666016,40.77092185281977],[-73.96150588989258,40.75609977566361],[-73.94262313842773,40.775991804565585]]]]});
print polygons_union_area = geo_polygon_area(polygons)

Salida

polygons_union_area
10889971.5343487

En el ejemplo siguiente se calculan los cinco estados más grandes de EE. UU. por área.

Kusto
US_States
| project name = features.properties.NAME, polygon = geo_polygon_densify(features.geometry)
| project name, area = geo_polygon_area(polygon)
| top 5 by area desc

Salida

nombre area
Alaska 1550934810070.61
Texas 693231378868.483
California 410339536449.521
Montana 379583933973.436
Nuevo México 314979912310.579

En el ejemplo siguiente se devuelve True debido al polígono no válido.

Kusto
print isnull(geo_polygon_area(dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))

Salida

print_0
True