geo_line_buffer()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Berechnet Polygone oder Multipolygons, die alle Punkte innerhalb des angegebenen Radius der Eingabelinie oder mehrzeiligen Erde enthalten.
Syntax
geo_line_buffer(
LineString-Radiustoleranz,
,
)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
lineString | dynamic |
✔️ | Eine LineString- oder MultiLineString-Eigenschaft im GeoJSON-Format. |
Radius | real |
✔️ | Pufferradius in Metern. Der gültige Wert muss positiv sein. |
tolerance | real |
Definiert die Toleranz in Metern, die bestimmt, wie viel ein Polygon vom idealen Radius abweichen kann. Wenn nichts angegeben wird, wird der Standardwert 10 verwendet. Die Toleranz sollte nicht unter 0,0001 % des Radius liegen. Die Angabe der Toleranz, die größer als der Radius ist, verringert die Toleranz auf den größten möglichen Wert unterhalb des Radius. |
Gibt zurück
Polygon oder MultiPolygon um die Eingabe lineString oder MultiLineString. Wenn die Koordinaten oder Radius oder Toleranz ungültig sind, erzeugt die Abfrage ein NULL-Ergebnis.
Hinweis
- Die Geospatialkoordinaten werden durch das WGS-84-Koordinatenverweissystem interpretiert.
- Das geodetische Datum , das zum Messen der Entfernung auf der Erde verwendet wird, ist eine Kugel.
- Wenn Eingabelinien gerade kartesische Linien sind, sollten Sie geo_line_densify() verwenden, um planare Kanten in geodätische Ränder zu konvertieren.
- Endcaps der Linien sind rund.
- Beide Seiten der Linien werden gepuffert.
LineString-Definition und -Einschränkungen
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.
- Koordinaten [Längengrad, Breitengrad] müssen gültig sein, wobei Längengrad eine reelle Zahl im Bereich [-180, +180] und Breitengrad eine reelle Zahl im Bereich [-90, +90] ist.
- Die Kantenlänge muss kleiner als 180 Grad sein. Der kürzeste Rand zwischen den beiden Scheitelpunkten wird ausgewählt.
Beispiele
Die folgende Abfrage berechnet Polygon um Linie mit Radius von 4 Metern und 0,1 Meter Toleranz
let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
Puffer |
---|
{"type": "Polygon", "Coordinates": [ ... ]} |
Die folgende Abfrage berechnet Puffer um jede Zeile und ordnet das Ergebnis an.
datatable(line:dynamic)
[
dynamic({"type":"LineString","coordinates":[[14.429214068940496,50.10043066548272],[14.431184174126173,50.10046525983731]]}),
dynamic({"type":"LineString","coordinates":[[14.43030222687753,50.100780677801936],[14.4303847111523,50.10020274910934]]})
]
| project buffer = geo_line_buffer(line, 2, 0.1)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
result |
---|
{"type": "Polygon","coordinates": [ ... ]} |
Im folgenden Beispiel wird "true" aufgrund einer ungültigen Zeile zurückgegeben.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
Puffer |
---|
True |
Das folgende Beispiel gibt "true" aufgrund eines ungültigen Radius zurück.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
Puffer |
---|
True |