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
Convierte los bordes planos de polígono o multipolígono en líneas geodésicas agregando puntos intermedios.
Sintaxis
geo_polygon_densify(tolerancia a polígonos, [ preserve_crossing ],)
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. |
| tolerance | int, long o real | Define la distancia máxima en metros entre el borde plano original y la cadena de borde geodesic convertida. Los valores admitidos están en el intervalo [0.1, 10000]. Si no se especifica, se usa el valor predeterminado 10. |
|
| preserve_crossing | bool |
Si truees , conserva el cruce de bordes sobre untimeridiano. Si no se especifica, se usa el valor predeterminado false. |
Definición 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]]})
LinearRingShellse requiere y se define como unacounterclockwisematriz ordenada de coordenadas [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Solo puede haber un shell.LinearRingHolees opcional y se define como unaclockwisematriz 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.LinearRingLos vértices 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].
LinearRingShellencierra como máximo la mitad de la esfera. LinearRing divide la esfera en dos regiones. Se elegirá el menor de las dos regiones.LinearRingLa longitud del borde debe ser inferior a 180 grados. Se elegirá el borde más corto entre los dos vértices.
Restricciones
- El número máximo de puntos del polígono densificado se limita a 10485760.
- El almacenamiento de polígonos en formato dinámico tiene límites de tamaño.
- Densificar un polígono válido puede invalidar el polígono. El algoritmo agrega puntos de forma no uniforme y, como tal, puede hacer que los bordes se entrelazan entre sí.
Motivación
- El formato GeoJSON define un borde entre dos puntos como una línea cartesiana recta mientras
geo_polygon_densify()usa geodesic. - La decisión de usar bordes geodesic o planar puede depender del conjunto de datos y es especialmente relevante en bordes largos.
Devoluciones
Polígono densificado en formato GeoJSON y de un tipo de datos dinámico . Si el polígono o la tolerancia no son válidos, la consulta genera un resultado NULO.
Nota:
Las coordenadas geoespaciales se interpretan como representadas por el sistema de referencia de coordenadas WGS-84 .
Ejemplos
En el ejemplo siguiente se densifica el polígono de Manhattan Central Park. Los bordes son cortos y la distancia entre los bordes planares y sus homólogos geodesicos es menor que la distancia especificada por tolerancia. Por lo tanto, el resultado permanece sin cambios.
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]})))
Salida
| densified_polygon |
|---|
| {"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]} |
En el ejemplo siguiente se densifican dos bordes del polígono. La longitud de bordes densificados es de aproximadamente 110 km
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))
Salida
| densified_polygon |
|---|
| {"type":"Polygon","coordinates":[[[10,10],[10.25,10],[10.5,10],[10.75,10],[11,10 ],[11,11],[10.75,11],[10.5,11],[10.25,11],[10,11],[10,10]]]} |
En el ejemplo siguiente se devuelve un resultado NULO debido a la entrada de coordenadas no válida.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))
Salida
| densified_polygon |
|---|
En el ejemplo siguiente se devuelve un resultado NULO debido a la entrada de tolerancia no válida.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)
Salida
| densified_polygon |
|---|