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
Konwertuje wielokąt lub wielobiegunowe krawędzie planarne na geodesyki przez dodanie punktów pośrednich.
Składnia
geo_polygon_densify(
tolerancja wielokątna,, [ preserve_crossing ])
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 maksymalną odległość w metrach między oryginalną krawędzią planarną a przekształconym łańcuchem krawędzi geodesowych. Obsługiwane wartości znajdują się w zakresie [0.1, 10000]. Jeśli nie określono, wartość domyślna to 10. |
|
| preserve_crossing | bool |
Jeśli trueparametr zachowuje przekraczanie krawędzi przez antymeryka. Jeśli nie określono, zostanie użyta wartość false domyślna. |
Definicja wielokąta
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]]})
-
LinearRingShelljest wymagany i zdefiniowany jako uporządkowana tablica współrzędnychcounterclockwise[[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Może istnieć tylko jedna powłoka. -
LinearRingHolejest opcjonalny i zdefiniowany jako uporządkowana tablicaclockwisewspółrzędnych [[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. -
LinearRingwierzchołki 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].
-
LinearRingShellotacza najwyżej połowę sfery. Funkcja LinearRing dzieli sferę na dwa regiony. Zostaną wybrane mniejsze z dwóch regionów. -
LinearRingdługość krawędzi musi być mniejsza niż 180 stopni. Zostanie wybrana najkrótsza krawędź między dwoma wierzchołkami.
Ograniczenia
- Maksymalna liczba punktów w zagnieżdżonym wielokącie jest ograniczona do 10485760.
- Przechowywanie wielokątów w formacie dynamicznym ma limity rozmiaru.
- Zagęszczenie prawidłowego wielokąta może unieważnić wielokąt. Algorytm dodaje punkty w sposób nieujeżny, a w związku z tym może spowodować przeplatenie krawędzi ze sobą.
Motywacja
-
Format GeoJSON definiuje krawędź między dwoma punktami jako prostą linią kartezjańską, podczas gdy
geo_polygon_densify()używa geodezji. - Decyzja o korzystaniu z krawędzi geodesowych lub planarnych może zależeć od zestawu danych i jest szczególnie istotna w przypadku długich krawędzi.
Zwraca
Zagnieżdżony wielokąt w formacie GeoJSON i dynamiczny typ danych. Jeśli wielokąt lub tolerancja jest nieprawidłowa, zapytanie generuje wynik o wartości null.
Uwaga
Współrzędne geoprzestrzenne są interpretowane jako reprezentowane przez system odniesienia współrzędnych WGS-84 .
Przykłady
Poniższy przykład zagnieża wielokąt Manhattan Central Park. Krawędzie są krótkie, a odległość między krawędziami planarnych a ich odpowiednikami geodesowymi jest mniejsza niż odległość określona przez tolerancję. W związku z tym wynik pozostaje niezmieniony.
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]})))
Wyjście
| densified_polygon |
|---|
| {"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]}} |
Poniższy przykład zagęszcza dwa krawędzie wielokąta. Długość zagęsznionych krawędzi wynosi ok. 110 km
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))
Wyjście
| densified_polygon |
|---|
| {"type":"Polygon","coordinates":[[[10,10],[10.25,10],[10.5,10],[10.75,10],[11,10],[11,11],[10.75,11],[10.5,11],[10.25,11],[10,11],[10,10]]]}} |
Poniższy przykład zwraca wynik o wartości null z powodu nieprawidłowych danych wejściowych współrzędnych.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))
Wyjście
| densified_polygon |
|---|
Poniższy przykład zwraca wynik o wartości null z powodu nieprawidłowej tolerancji danych wejściowych.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)
Wyjście
| densified_polygon |
|---|