geo_line_densify()
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Convierte líneas planar o bordes multilínea en geodesics agregando puntos intermedios.
Sintaxis
geo_line_densify(
tolerancia,
lineString,
[ preserve_crossing ])
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
lineString | dynamic |
✔️ | LineString o MultiLineString 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 true es , conserva el cruce de bordes sobre untimeridiano. Si no se especifica, se usa el valor predeterminado false . |
Devoluciones
Línea densificada en el formato GeoJSON y de un tipo de datos dinámico . Si la línea 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 .
Definición de LineString
dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})
dynamic({"type": "MultiLineString","coordinates": [[line_1, line_2, ..., line_N]]})
- La matriz de coordenadas LineString debe contener al menos dos 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].
- La 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 de la línea densificada se limita a 10485760.
- El almacenamiento de líneas en formato dinámico tiene límites de tamaño.
Motivación
- El formato GeoJSON define un borde entre dos puntos como una línea cartesiana recta mientras
geo_line_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.
Ejemplos
En el ejemplo siguiente se densifica una carretera en la isla de Manhattan. El borde es corto y la distancia entre el borde planar y su homólogo geodesico es menor que la distancia especificada por tolerancia. Por lo tanto, el resultado permanece sin cambios.
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[-73.949247, 40.796860],[-73.973017, 40.764323]]})))
Salida
densified_line |
---|
{"type":"LineString","coordinates":[[-73.949247, 40.796860], [-73.973017, 40.764323]]]} |
En el ejemplo siguiente se densifica un borde de aproximadamente 130 km de longitud.
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[50, 50], [51, 51]]})))
Salida
densified_line |
---|
{"type":"LineString","coordinates":[[50,50],[50.125,50.125],[50.25,50.25],[50.375,50.375],[[50.375],[[ 50.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50.875],[51,51]]}. |
En el ejemplo siguiente se devuelve un resultado NULO debido a la entrada de coordenadas no válida.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))
Salida
densified_line |
---|
En el ejemplo siguiente se devuelve un resultado NULO debido a la entrada de tolerancia no válida.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)
Salida
densified_line |
---|