Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przełączanie usług przy użyciu listy rozwijanej Wersja . Dowiedz się więcej o nawigacji.
Dotyczy: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Upraszcza wielokąty, zastępując prawie proste łańcuchy krótkich krawędzi pojedynczą długą krawędzią na Ziemi.
Składnia
geo_simplify_polygons_array(
tolerancja wielokątów,)
Dowiedz się więcej na temat konwencji składni.
Parametry
| Nazwisko | Typ | Wymagania | opis |
|---|---|---|---|
| wielokąt | dynamic |
✔️ | Wielokąt lub multipolygon w formacie GeoJSON. |
| tolerancja | int, long lub real | Definiuje minimalną odległość w metrach między dowolnymi dwoma wierzchołkami. Obsługiwane wartości znajdują się w zakresie [0, ~7 800 000 metrów]. Jeśli nie określono, zostanie użyta wartość 10 domyślna. |
Zwraca
Uproszczony wielokąt lub multipolygon w formacie GeoJSON i dynamiczny typ danych bez dwóch wierzchołków o odległości mniejszej niż tolerancja. Jeśli wielokąt lub tolerancja jest nieprawidłowa, zapytanie zwróci wynik o wartości null.
Uwaga
- Jeśli dane wejściowe są pojedynczym wielokątem, zobacz geo_polygon_simplify().
- Współrzędne geoprzestrzenne są interpretowane jako reprezentowane przez system odniesienia współrzędnych WGS-84 .
- Geodetyczne datum używane do pomiarów na Ziemi jest sferą. Krawędzie wielokątne są geodesykami na sferze.
- Jeśli krawędzie wielokąta wejściowe są liniami kartezjańskimi, rozważ użycie geo_polygon_densify() w celu przekonwertowania krawędzi planarnych na geodesyki.
- Jeśli dane wejściowe są wielokątne i zawierają więcej niż jeden wielokąt, wynik będzie obszarem unii wielokątów.
- Wysoka tolerancja może spowodować zniknięcie małego wielokąta.
Definicja i ograniczenia wielokątne
dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","współrzędne": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- Program LinearRingShell jest wymagany i zdefiniowany jako uporządkowana tablica współrzędnych
counterclockwise[[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Może istnieć tylko jedna powłoka. - Funkcja LinearRingHole jest opcjonalna i zdefiniowana jako uporządkowana tablica współrzędnych
clockwise[[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Może istnieć dowolna liczba pierścieni i otworów wewnętrznych. - Wierzchołki liniowe muszą być odrębne z co najmniej trzema współrzędnymi. Pierwsza współrzędna musi być równa ostatniej. Wymagane są co najmniej cztery wpisy.
- Współrzędne [długość geograficzna, szerokość geograficzna] muszą być prawidłowe. Długość geograficzna musi być liczbą rzeczywistą w zakresie [-180, +180], a szerokość geograficzna musi być liczbą rzeczywistą w zakresie [-90, +90].
- LinearRingShell otacza co najwyżej połowę kuli. Funkcja LinearRing dzieli sferę na dwa regiony. Zostaną wybrane mniejsze z dwóch regionów.
- Długość krawędzi liniowej musi być mniejsza niż 180 stopni. Zostanie wybrana najkrótsza krawędź między dwoma wierzchołkami.
- Wyrażenia liniowe nie mogą być krzyżowe i nie mogą współużytkować krawędzi. LinearRingi mogą współdzielić wierzchołki.
Przykłady
Poniższy przykład upraszcza wielokąty z wzajemnymi granicami (stany USA), usuwając wierzchołki znajdujące się w odległości 100 metrów od siebie.
US_States
| project polygon = features.geometry
| summarize lst = make_list(polygon)
| project polygons = geo_simplify_polygons_array(lst, 100)
Wyjście
| Wielokątów |
|---|
| { "type": "MultiPolygon", "współrzędne": [ ... ]]} |
Poniższy przykład zwraca wartość True, ponieważ jeden z wielokątów jest nieprawidłowy.
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))
Wyjście
| is_invalid_polygon |
|---|
| 1 |
Poniższy przykład zwraca wartość True z powodu nieprawidłowej tolerancji.
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))
Wyjście
| is_null |
|---|
| 1 |
Poniższy przykład zwraca wartość True, ponieważ wysoka tolerancja powoduje zniknięcie wielokąta.
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))
Wyjście
| is_null |
|---|
| 1 |