geo_line_densify()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Wandelt planare Linien oder mehrteilige Kanten in Geodätik um, indem Zwischenpunkte hinzugefügt werden.
Syntax
geo_line_densify(
lineString-Toleranz,
,
[ preserve_crossing ])
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
lineString | dynamic |
✔️ | Eine LineString- oder MultiLineString-Eigenschaft im GeoJSON-Format. |
tolerance | int, long oder real | Definiert den maximalen Abstand in Metern zwischen dem ursprünglichen planaren Rand und der konvertierten geodätischen Kantenkette. Unterstützte Werte befinden sich im Bereich [0,1, 10000]. Wenn nichts angegeben wird, wird der Standardwert 10 verwendet. |
|
preserve_crossing | bool |
Wenn true , behält den Rand, der über einTimeridian überschreitet. Wenn nichts angegeben wird, wird der Standardwert false verwendet. |
Gibt zurück
Verdichtete Zeile im GeoJSON-Format und eines dynamischen Datentyps. Wenn die Zeile oder Toleranz ungültig ist, erzeugt die Abfrage ein NULL-Ergebnis.
Hinweis
Die Geospatialkoordinaten werden durch das WGS-84-Koordinatenverweissystem interpretiert.
LineString-Definition
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]]})
- LineString-Koordinatenarray muss mindestens zwei Einträge enthalten.
- Die Koordinaten [Längengrad, Breitengrad] müssen gültig sein. Der Längengrad muss eine reelle Zahl im Bereich [-180, +180] sein, und der Breitengrad muss eine reelle Zahl im Bereich [-90, +90] sein.
- Die Kantenlänge muss kleiner als 180 Grad sein. Der kürzeste Rand zwischen den beiden Scheitelpunkten wird ausgewählt.
Einschränkungen
- Die maximale Anzahl von Punkten in der verdichteten Linie ist auf 10485760 beschränkt.
- Das Speichern von Zeilen im dynamischen Format weist Größenbeschränkungen auf.
Motivation
- Das GeoJSON-Format definiert einen Rand zwischen zwei Punkten als gerade kartesische Linie, während
geo_line_densify()
geodätisch verwendet wird. - Die Entscheidung, geodätische oder planare Kanten zu verwenden, hängt möglicherweise vom Dataset ab und ist besonders für lange Kanten relevant.
Beispiele
Im folgenden Beispiel wird eine Straße auf der Manhattan-Insel verdichtet. Der Rand ist kurz und der Abstand zwischen dem planaren Rand und seinem geodätischen Gegenstück ist kleiner als der durch Toleranz angegebene Abstand. Daher bleibt das Ergebnis unverändert.
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]]} |
Im folgenden Beispiel wird eine Kante von ~130 km Länge angegeben.
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.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50.875],[51,51]]} |
Im folgenden Beispiel wird ein NULL-Ergebnis aufgrund der ungültigen Koordinateneingabe zurückgegeben.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))
Output
densified_line |
---|
Im folgenden Beispiel wird ein NULL-Ergebnis aufgrund der ungültigen Toleranzeingabe zurückgegeben.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)
Output
densified_line |
---|