geo_line_buffer()
Beräknar polygon eller multipolygon som innehåller alla punkter inom den angivna radien för indatalinjen eller multiline på jorden.
Syntax
geo_line_buffer(
lineString,
Radie,
Tolerans)
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
lineString | dynamic |
✔️ | En LineString eller MultiLineString i GeoJSON-format. |
Radie | real |
✔️ | Buffertradie i meter. Giltigt värde måste vara positivt. |
Tolerans | real |
Definierar toleransen i mätare som avgör hur mycket en polygon kan avvika från den idealiska radien. Om det är ospecificerat används standardvärdet 10 . Toleransen får inte vara lägre än 0,0001 % av radien. Om du anger tolerans som är större än radien sänks toleransen till största möjliga värde under radien. |
Returer
Polygon eller MultiPolygon runt indata LineString eller MultiLineString. Om koordinaterna, radien eller toleransen är ogiltiga genererar frågan ett null-resultat.
Anteckning
- Geospatiala koordinater tolkas som de representeras av WGS-84-koordinatreferenssystemet .
- Det geodetiska datum som används för att mäta avståndet på jorden är en sfär.
- Om indatalinjens kanter är raka kartesiska linjer bör du överväga att använda geo_line_densify() för att konvertera planära kanter till geodesik.
- Linjernas ändkapslar är runda.
- Båda sidor av linjerna är buffrade.
LineString-definition och begränsningar
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]]})
- Matrisen LineString-koordinater måste innehålla minst två poster.
- Koordinaterna [longitud, latitud] måste vara giltiga där longitud är ett reellt tal i intervallet [-180, +180] och latitud är ett reellt tal i intervallet [-90, +90].
- Kantlängden måste vara mindre än 180 grader. Den kortaste kanten mellan de två hörnen väljs.
Exempel
Följande fråga beräknar polygon runt linjen, med radie på 4 meter och 0,1 meter tolerans
let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
Buffert |
---|
{"type": "Polygon", "coordinates": [ ... ]} |
Följande fråga beräknar bufferten runt varje rad och förenar resultatet
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)
resultat |
---|
{"type": "Polygon","coordinates": [ ... ]} |
Följande exempel returnerar true på grund av en ogiltig rad.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
Buffert |
---|
Sant |
Följande exempel returnerar true på grund av en ogiltig radie.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
Buffert |
---|
Sant |
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för