Sdílet prostřednictvím


geo_polygon_densify()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Převede mnohoúhelník nebo multipolygon planární hrany na geodesics přidáním přechodných bodů.

Syntaxe

geo_polygon_densify(polygon, tolerance, [ preserve_crossing ])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
mnohoúhelník dynamic ✔️ Mnohoúhelník nebo multipolygon ve formátu GeoJSON.
tolerance int, long nebo real Definuje maximální vzdálenost v metrech mezi původním planárním okrajem a převedeným geodesickým hraničním řetězcem. Podporované hodnoty jsou v rozsahu [0,1, 10000]. Pokud není zadáno, výchozí hodnota je 10.
preserve_crossing bool Pokud true, zachová hrany přechod přes antimeridian. Pokud není zadáno, použije se výchozí hodnota false .

Definice mnohoúhelníku

dynamic({"type": "Mnohoúhelník";"souřadnice": [ LinearRingShell, LinearRingHole_1; ..., LinearRingHole_N ]})

dynamic({"type": "MultiPolygon";"souřadnice": [[ LinearRingShell, LinearRingHole_1; ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1; ..., LinearRingHole_M]]})

  • LinearRingShell je povinný a definovaný jako seřazené counterclockwise pole souřadnic [[lng_1;lat_1],...,[lng_i;lat_i],...,[lng_j;lat_j],...,[lng_1;lat_1]]. Může existovat pouze jedno prostředí.
  • LinearRingHole je nepovinný a definovaný jako clockwise uspořádané pole souřadnic [[lng_1;lat_1],...,[lng_i;lat_i],...,[lng_j,lat_j],...,[lng_1;lat_1]]. Může existovat libovolný počet vnitřních kroužků a otvorů.
  • LinearRing vrcholy musí být odlišné s alespoň třemi souřadnicemi. První souřadnice musí být rovna poslední. Vyžaduje se aspoň čtyři položky.
  • Souřadnice [zeměpisná délka, zeměpisná šířka] musí být platné. Zeměpisná délka musí být reálné číslo v oblasti [-180, +180] a zeměpisná šířka musí být reálné číslo v oblasti [-90, +90].
  • LinearRingShell uzavře na většinu poloviny koule. LinearRing rozdělí sféru do dvou oblastí. Zvolí se menší ze dvou oblastí.
  • LinearRing délka okraje musí být menší než 180 stupňů. Vybere se nejkratší hrana mezi dvěma vrcholy.

Omezení

  • Maximální počet bodů v densifikovaném mnohoúhelníku je omezen na 10485760.
  • Ukládání mnohoúhelníku v dynamickém formátu má omezení velikosti.
  • Zrušení platného mnohoúhelníku může zneplatnit mnohoúhelník. Algoritmus přidává body nejednotným způsobem, a proto může způsobit vzájemné propletené hrany.

Motivace

  • Formát GeoJSON definuje hranu mezi dvěma body jako přímku kartézské přímky při geo_polygon_densify() použití geodesické čáry.
  • Rozhodnutí o použití geodesických nebo planárních hran může záviset na datové sadě a je zvlášť relevantní v dlouhých hranách.

Návraty

Densified polygon in the GeoJSON format and of a dynamic data type. Pokud je mnohoúhelník nebo tolerance neplatný, dotaz vytvoří výsledek null.

Poznámka:

Geoprostorové souřadnice jsou interpretovány jako reprezentované referenčním systémem souřadnic WGS-84 .

Příklady

Následující příklad označuje polygon Manhattan Central Park. Hrany jsou krátké a vzdálenost mezi planárními hrany a jejich geodesickými protějšky je menší než vzdálenost určená tolerancem. Výsledek tak zůstane beze změny.

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

Výstup

densified_polygon
{"type":"Mnohoúhelník";"souřadnice":[[-73.958244,40,800719],[-73,949146,40,79695],[-73.1973093,40.764226],[-73.982062,40,768159],[-73.958244,40.800719]]]}

Následující příklad označuje dvě hrany mnohoúhelníku. Délka densifikovaných hran je ~110 km

print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))

Výstup

densified_polygon
{"type":"Mnohoúhelník";"souřadnice":[[[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]]]}

Následující příklad vrátí výsledek null z důvodu neplatného vstupu souřadnic.

print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))

Výstup

densified_polygon

Následující příklad vrátí výsledek null z důvodu neplatného vstupu tolerance.

print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)

Výstup

densified_polygon