Megosztás a következőn keresztül:


geo_line_buffer()

Kiszámítja a sokszöget vagy többpógonyt, amely a bemeneti vonal vagy a többsoros vonal adott sugarán belüli összes pontot tartalmazza a Földön.

Syntax

geo_line_buffer(lineString,Sugár,Tolerancia)

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
lineString dynamic ✔️ Egy LineString vagy MultiLineString GeoJSON formátumban.
Sugár real ✔️ Puffer sugara méterben. Az érvényes értéknek pozitívnak kell lennie.
Tolerancia real Meghatározza a mérők tűréshatárát, amely meghatározza, hogy egy sokszög mennyiben térhet el az ideális sugártól. Ha nincs meghatározva, a rendszer az alapértelmezett értéket 10 használja. A tűrés nem lehet kisebb, mint a sugár 0,0001%-a. Ha a radius-nál nagyobb tűrést ad meg, a lehető legnagyobb értékre csökkenti a tűréshatárt a sugár alatt.

Válaszok

Sokszög vagy többpolygon a bemeneti LineString vagy MultiLineString körül. Ha a koordináták vagy a sugár vagy a tűrés érvénytelen, a lekérdezés null eredményt ad.

Megjegyzés

  • A térinformatikai koordinátákat a WGS-84 koordináta-referenciarendszer képviseli.
  • A Föld távolságának mérésére használt geodéziai datum egy gömb.
  • Ha a bemeneti vonal élei egyenes cartesian vonalak, fontolja meg a geo_line_densify() használatát a planáris élek geodéziaiká alakításához.
  • A vonalak végfejei kerekek.
  • A sorok mindkét oldala pufferelt.

LineString-definíció és megkötések

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]]})

  • A LineString koordináta-tömbnek legalább két bejegyzést kell tartalmaznia.
  • A koordinátáknak [hosszúság, szélesség] érvényesnek kell lenniük, ha a hosszúság valós szám a(z) [-180, +180] tartományban, a szélesség pedig a [-90, +90] tartomány valós száma.
  • Az élhossznak 180 foknál kisebbnek kell lennie. A két csúcspont közötti legrövidebb él lesz kiválasztva.

Példák

A következő lekérdezés a vonal körüli sokszöget számítja ki 4 méter sugarú és 0,1 méteres tűréssel

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": "Sokszög", "koordináták": [ ... ]}

Az alábbi lekérdezés kiszámítja a puffert az egyes sorok körül, és egyesíti az eredményeket

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": "Sokszög","koordináták": [ ... ]}

Az alábbi példa igaz értéket ad vissza érvénytelen sor miatt.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
Puffer
Igaz

Az alábbi példa igaz értéket ad vissza érvénytelen sugár miatt.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
Puffer
Igaz