Megosztás a következőn keresztül:


geo_polygon_perimeter()

Kiszámítja egy sokszög vagy többpolygó határának hosszát a Földön.

Syntax

geo_polygon_perimeter(Sokszög)

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
Sokszög dynamic ✔️ Sokszög vagy többpógony GeoJSON formátumban.

Válaszok

A sokszög vagy a többpógony határának hossza méterben, a Földön. Ha a sokszög vagy a többpógony érvénytelen, a lekérdezés null eredményt ad.

Megjegyzés

  • A térinformatikai koordinátákat a WGS-84 koordináta-referenciarendszer képviseli.
  • A Föld méréseihez használt geodéziai datum egy gömb. A sokszög élek geodéziaiak a gömbön.
  • Ha a bemeneti sokszögélek egyenes cartesian vonalak, fontolja meg a geo_polygon_densify() használatát a planáris élek geodéziává alakításához.
  • Ha a bemenet többpógonyú, és több sokszöget tartalmaz, az eredmény a sokszögek egyesítő határának hossza lesz.

Sokszög definíciója és megkötései

dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})

dynamic({"type": "MultiPolygon","coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})

  • A LinearRingShell a(z) [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] rendezett tömbje.counterclockwise Csak egy rendszerhéj lehet.
  • A LinearRingHole nem kötelező, és koordináták rendezett tömbjeként clockwise van definiálva [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Bármilyen számú belső gyűrű és lyuk lehet.
  • A LinearRing csúcsainak legalább három koordinátával kell különbözniük. Az első koordinátának meg kell egyeznie az utolsóval. Legalább négy bejegyzésre van szükség.
  • A koordinátáknak [hosszúság, szélesség] érvényesnek kell lenniük. A hosszúságnak valós számnak kell lennie a(z) [-180, +180] tartományban, a szélességnek pedig valós számnak kell lennie a tartományban [-90, +90].
  • A LinearRingShell a gömb legfeljebb felét magában foglalja. A LinearRing két régióra osztja a gömböt. A rendszer a két régió közül a kisebbet választja ki.
  • A LinearRing élhosszának 180 foknál rövidebbnek kell lennie. A két csúcs között a legrövidebb él lesz kiválasztva.
  • A LinearRings nem lehet kereszt, és nem oszthatja meg az éleket. A LinearRingek csúcspontjai megoszthatók.

Példák

Az alábbi példa az NYC Central Park kerületét számítja ki méterben.

let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print perimeter = geo_polygon_perimeter(central_park)

Kimenet

Kerület
9930.30149604938

Az alábbi példa a többpógonos sokszögek egyesítését hajtja végre, és kiszámítja az egyesített sokszög kerületét.

let polygons = dynamic({"type":"MultiPolygon","coordinates":[[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]],[[[-73.94262313842773,40.775991804565585],[-73.98107528686523,40.791849155467695],[-73.99600982666016,40.77092185281977],[-73.96150588989258,40.75609977566361],[-73.94262313842773,40.775991804565585]]]]});
print perimeter = geo_polygon_perimeter(polygons)

Kimenet

Kerület
15943.5384578745

Az alábbi példa igaz értéket ad vissza az érvénytelen sokszög miatt.

print is_invalid = isnull(geo_polygon_perimeter(dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))

Kimenet

is_invalid
Igaz