geo_polygon_buffer()
Beräknar polygon eller multipolygon som innehåller alla punkter inom den angivna radien för den inmatade polygonen eller multipolygonen på jorden.
Syntax
geo_polygon_buffer(
Polygon,
Radie,
Tolerans)
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
Polygon | dynamic |
✔️ | Polygon eller multipolygon 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 indatapolygonen eller multipolygonen. 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 mätningar på jorden är en sfär. Polygonkanter är geodesiker på sfären.
- Om indatapolygonkanter är raka kartesiska linjer bör du överväga att använda geo_polygon_densify() för att konvertera planära kanter till geodesik.
Polygondefinition och begränsningar
dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})
dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell krävs och definieras som en
counterclockwise
ordnad matris med koordinater [[lng_1,lat_1], ..., [lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Det kan bara finnas ett gränssnitt. - LinearRingHole är valfritt och definieras som en
clockwise
ordnad matris med koordinater [[lng_1,lat_1], ...,[lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]. Det kan finnas valfritt antal inre ringar och hål. - Linjära hörn måste vara distinkta med minst tre koordinater. Den första koordinaten måste vara lika med den sista. Minst fyra poster krävs.
- Koordinaterna [longitud, latitud] måste vara giltiga. Longitud måste vara ett reellt tal i intervallet [-180, +180] och latitud måste vara ett reellt tal i intervallet [-90, +90].
- LinearRingShell omger högst hälften av sfären. LinearRing delar upp sfären i två regioner. Den mindre av de två regionerna väljs.
- Linjär Kantlängd måste vara mindre än 180 grader. Den kortaste kanten mellan de två hörnen väljs.
- LinearRings får inte korsa och får inte dela kanter. LinearRings kan dela hörn.
- Polygon innehåller dess hörn.
Exempel
Följande fråga beräknar polygon runt indatapolygon, med en radie på 10 km.
let polygon = dynamic({"type":"Polygon","coordinates":[[[139.813757,35.719666],[139.72558,35.71813],[139.727471,35.653231],[139.818721,35.657264],[139.813757,35.719666]]]});
print buffer = geo_polygon_buffer(polygon, 10000)
Buffert |
---|
{"type": "Polygon","coordinates": [ ... ]} |
Följande fråga beräknar bufferten runt varje polygon och förenar resultatet
datatable(polygon:dynamic, radius:real )
[
dynamic({"type":"Polygon","coordinates":[[[12.451218693639277,41.906457003556625],[12.445753852969375,41.90160968881543],[12.453514425793855,41.90361551885886],[12.451218693639277,41.906457003556625]]]}), 100,
dynamic({"type":"Polygon","coordinates":[[[12.4566086734784,41.905119850039995],[12.453913683559591,41.903652663265234],[12.455485761012113,41.90146110630562],[12.4566086734784,41.905119850039995]]]}), 20
]
| project buffer = geo_polygon_buffer(polygon, radius)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
resultat |
---|
{"type": "Polygon","coordinates": [ ... ]} |
Följande exempel returnerar true på grund av ogiltig polygon.
print buffer = isnull(geo_polygon_buffer(dynamic({"type":"p"}), 1))
Buffert |
---|
Sant |
Följande exempel returnerar true på grund av en ogiltig radie.
print buffer = isnull(geo_polygon_buffer(dynamic({"type":"Polygon","coordinates":[[[10,10],[0,10],[0,0],[10,10]]]}), 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