Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Vereinfacht Polygone, indem nahezu gerade Ketten von kurzen Kanten durch einen einzigen langen Rand auf der Erde ersetzt werden.
Syntax
geo_simplify_polygons_array(, Polygontoleranz)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
| Name | Type | Erforderlich | Beschreibung |
|---|---|---|---|
| Polygon | dynamic |
✔️ | Polygon oder Multipolygon im GeoJSON-Format. |
| tolerance | int, long oder real | Definiert den Mindestabstand in Metern zwischen zwei Scheitelpunkten. Unterstützte Werte befinden sich im Bereich [0, ~7.800.000 Meter]. Wenn nichts angegeben wird, wird der Standardwert 10 verwendet. |
Gibt zurück
Vereinfachtes Polygon oder ein Multipolygon im GeoJSON-Format und eines dynamischen Datentyps, ohne zwei Scheitelpunkte mit abstand kleiner als Toleranz. Wenn das Polygon oder die Toleranz ungültig ist, erzeugt die Abfrage ein NULL-Ergebnis.
Hinweis
- Wenn die Eingabe ein einzelnes Polygon ist, lesen Sie bitte geo_polygon_simplify().
- Die Geospatialkoordinaten werden durch das WGS-84-Koordinatenverweissystem interpretiert.
- Das geodetische Datum , das für Messungen auf der Erde verwendet wird, ist eine Kugel. Polygonränder sind geodätische Ränder auf der Kugel.
- Wenn eingabe polygonale Kanten gerade kartesische Linien sind, sollten Sie geo_polygon_densify() verwenden, um planare Kanten in Geodästik zu konvertieren.
- Wenn die Eingabe ein Multipolygon ist und mehr als ein Polygon enthält, entspricht das Ergebnis dem Bereich der Polygone-Vereinigung.
- Hohe Toleranz kann dazu führen, dass kleine Polygone verschwinden.
Polygondefinition und Einschränkungen
dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell ist erforderlich und definiert als ein
counterclockwisesortiertes Array von Koordinaten [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Es kann nur eine Shell vorhanden sein. - LinearRingHole ist optional und definiert als ein
clockwisesortiertes Array von Koordinaten [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Es kann eine beliebige Anzahl von Innenringen und Löchern geben. - LinearRing-Scheitelpunkte müssen mit mindestens drei Koordinaten unterschieden werden. Die erste Koordinate muss mit der letzten koordinate gleich sein. Mindestens vier Einträge sind erforderlich.
- Koordinaten [Längengrad, Breitengrad] müssen gültig sein. Längengrad muss eine reelle Zahl im Bereich [-180, +180] sein, und breitengrad muss eine reelle Zahl im Bereich [-90, +90] sein.
- LinearRingShell schließt höchstens die Hälfte der Kugel ein. LinearRing teilt die Kugel in zwei Bereiche auf. Die kleineren der beiden Regionen werden ausgewählt.
- Die Länge des LinearRing-Rands muss kleiner als 180 Grad sein. Der kürzeste Rand zwischen den beiden Scheitelpunkten wird ausgewählt.
- LinearRinge dürfen nicht kreuzen und dürfen keine Kanten teilen. LinearRinge können Scheitelpunkte teilen.
Beispiele
Im folgenden Beispiel werden Polygone mit gegenseitigen Grenzen (USA-Staaten) vereinfacht, indem Scheitelpunkte entfernt werden, die sich innerhalb eines Abstands von 100 Metern voneinander befinden.
US_States
| project polygon = features.geometry
| summarize lst = make_list(polygon)
| project polygons = geo_simplify_polygons_array(lst, 100)
Output
| Polygone |
|---|
| { "type": "MultiPolygon", "coordinates": [ ... ]]} |
Im folgenden Beispiel wird True zurückgegeben, da eines der Polygone ungültig ist.
datatable(polygons:dynamic)
[
dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_invalid_polygon = isnull(geo_simplify_polygons_array(arr))
Output
| is_invalid_polygon |
|---|
| 1 |
Im folgenden Beispiel wird "True" aufgrund der ungültigen Toleranz zurückgegeben.
datatable(polygons:dynamic)
[
dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249],[-73.96888,40.79282],[-73.9577,40.7789],[-73.94622,40.79249]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, -1))
Output
| is_null |
|---|
| 1 |
Im folgenden Beispiel wird True zurückgegeben, da viele Polygone nicht mehr angezeigt werden.
datatable(polygons:dynamic)
[
dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249],[-73.96888,40.79282],[-73.9577,40.7789],[-73.94622,40.79249]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, 10000))
Output
| is_null |
|---|
| 1 |