geo_polygon_densify()
Převede mnohoúhelník nebo vícepolygonové planární hrany na geodézie přidáním mezilehlých bodů.
Syntax
geo_polygon_densify(
Mnohoúhelník,
Tolerance,
[ preserve_crossing ])
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyž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 geodetickým řetězcem okrajů. Podporované hodnoty jsou v rozsahu [0,1, 10000]. Pokud není zadáno, výchozí hodnota je 10 . |
|
preserve_crossing | bool |
Pokud true , zachová hraniční přechod přes antimeridian. Pokud není zadáno, použije se výchozí hodnota false . |
Definice mnohoúhelníku
dynamic({"type": "Polygon";"coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon";"coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
LinearRingShell
je povinný a definovaný jako uspořádanécounterclockwise
pole souřadnic [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Může existovat jenom jedno prostředí.LinearRingHole
je nepovinný a definovaný jako uspořádanéclockwise
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é alespoň třemi souřadnicemi. První souřadnice musí být rovna poslední. Vyžadují se alespoň č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 rozsahu [-90, +90].
LinearRingShell
uzavře maximálně polovinu koule. LinearRing rozdělí kouli na dvě oblasti. Zvolí se menší z těchto dvou oblastí.LinearRing
délka hrany musí být menší než 180 stupňů. Zvolí 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.
- Zatěžování platného mnohoúhelníku může mnohoúhelník zneplatnit. Algoritmus přidává body nejednotným způsobem a jako takový může způsobit, že se hrany vzájemně prolínají.
Motivace
- Formát GeoJSON definuje hranu mezi dvěma body jako rovnou kartézskou čáru, zatímco
geo_polygon_densify()
používá geodetické. - Rozhodnutí o použití geodetických nebo planárních okrajů může záviset na datové sadě a je důležité zejména u dlouhých okrajů.
Návraty
Densifikovaný mnohoúhelník ve formátu GeoJSON a dynamického datového typu. Pokud je mnohoúhelník nebo tolerance neplatný, dotaz vytvoří výsledek null.
Poznámka
Geoprostorové souřadnice jsou interpretovány jako reprezentované systémem souřadnic WGS-84 .
Příklady
Následující příklad znespravuje polygon Manhattan Central Park. Hrany jsou krátké a vzdálenost mezi planárními hrany a jejich geodetickými protějšky je menší než vzdálenost určená tolerancí. Výsledek 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.79695;[-73.1973093,40,764226],[-73.982062,40.768159],[-73.958244,40.800719]]]} |
Následující příklad zatěžuje dva okraje mnohoúhelníku. Délka denifikovaných okrajů 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 |
---|
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro