geo_line_densify()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Converte linee planari o bordi multilinea in geodesici aggiungendo punti intermedi.
Sintassi
geo_line_densify(
lineString,
tolerance,
[ preserve_crossing ])
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
lineString | dynamic |
✔️ | LineString o MultiLineString nel formato GeoJSON. |
tolerance | int, long o real | Definisce la distanza massima in metri tra il bordo planare originale e la catena perimetrale geodesica convertita. I valori supportati sono compresi nell'intervallo [0.1, 10000]. Se non specificato, viene usato il valore predefinito 10 . |
|
preserve_crossing | bool |
Se true , mantiene l'attraversamento dei bordi sull'antimeridiano. Se non specificato, viene usato il valore predefinito false . |
Valori restituiti
Riga densificata nel formato GeoJSON e di un tipo di dati dinamico . Se la riga o la tolleranza non è valida, la query genererà un risultato Null.
Nota
Le coordinate geospaziali vengono interpretate come rappresentate dal sistema di riferimento di coordinate WGS-84 .
Definizione 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 matrice di coordinate LineString deve contenere almeno due voci.
- Le coordinate [longitudine, latitudine] devono essere valide. La longitudine deve essere un numero reale nell'intervallo [-180, +180] e la latitudine deve essere un numero reale nell'intervallo [-90, +90].
- La lunghezza del bordo deve essere inferiore a 180 gradi. Verrà scelto il bordo più corto tra i due vertici.
Vincoli
- Il numero massimo di punti nella linea densificata è limitato a 10485760.
- L'archiviazione delle righe in formato dinamico presenta limiti di dimensioni.
Motivazione
- Il formato GeoJSON definisce un bordo tra due punti come linea cartesiana retta, mentre
geo_line_densify()
usa la geodesica. - La decisione di usare bordi geodesici o planari può dipendere dal set di dati ed è particolarmente rilevante nei bordi lunghi.
Esempi
L'esempio seguente densifica una strada nell'isola di Manhattan. Il bordo è corto e la distanza tra il bordo planare e la controparte geodesica è minore della distanza specificata dalla tolleranza. Di conseguenza, il risultato rimane invariato.
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[-73.949247, 40.796860],[-73.973017, 40.764323]]})))
Output
densified_line |
---|
{"type":"LineString","coordinates":[[-73.949247, 40.796860], [-73.973017, 40.764323]]} |
L'esempio seguente densifica un bordo di circa 130 km di lunghezza
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[50, 50], [51, 51]]})))
Output
densified_line |
---|
{"type":"LineString","coordinates":[[50,50],[50.125,50.125],[50.25,50.25],[50.375,50.375],[50.375],[50 50.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50.875],[51,51]]} |
Nell'esempio seguente viene restituito un risultato Null a causa dell'input di coordinate non valido.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))
Output
densified_line |
---|
Nell'esempio seguente viene restituito un risultato Null a causa dell'input di tolleranza non valido.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)
Output
densified_line |
---|