geo_polygon_perimeter()
Calcule la longueur de la limite d’un polygone ou d’un multipolygon sur Terre.
Syntax
geo_polygon_perimeter(
Polygone)
Découvrez les conventions de syntaxe.
Paramètres
Nom | Type | Obligatoire | Description |
---|---|---|---|
Polygone | dynamic |
✔️ | Polygone ou multipolygon au format GeoJSON. |
Retours
Longueur de la limite d’un polygone ou d’un multipolygon, en mètres, sur Terre. Si polygone ou multipolygon n’est pas valide, la requête génère un résultat null.
Notes
- Les coordonnées géospatiales sont interprétées comme représentées par le système de référence de coordonnées WGS-84 .
- La donnée géodésique utilisée pour les mesures sur Terre est une sphère. Les bords de polygones sont géodésiques sur la sphère.
- Si les bords de polygones d’entrée sont des lignes cartésiennes droites, envisagez d’utiliser geo_polygon_densify() pour convertir des bords planaires en bords géodésiques.
- Si l’entrée est un multipolygon et contient plusieurs polygones, le résultat sera la longueur de la limite de l’union de polygones.
Définition et contraintes de polygone
dynamic({"type » : « Polygon »,"coordinates » : [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type » : « MultiPolygon »,"coordinates » : [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell est obligatoire et défini comme un
counterclockwise
tableau ordonné de coordonnées [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Il ne peut y avoir qu’un seul interpréteur de commandes. - LinearRingHole est facultatif et défini comme un
clockwise
tableau ordonné de coordonnées [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Il peut y avoir n’importe quel nombre d’anneaux intérieurs et de trous. - Les sommets LinearRing doivent être distincts avec au moins trois coordonnées. La première coordonnée doit être égale à la dernière. Au moins quatre entrées sont requises.
- Les coordonnées [longitude, latitude] doivent être valides. La longitude doit être un nombre réel dans la plage [-180, +180] et la latitude doit être un nombre réel dans la plage [-90, +90].
- LinearRingShell entoure au plus la moitié de la sphère. LinearRing divise la sphère en deux régions. La plus petite des deux régions sera choisie.
- La longueur du bord LinearRing doit être inférieure à 180 degrés. Le bord le plus court entre les deux sommets sera choisi.
- LinearRings ne doit pas se croiser et ne doit pas partager des arêtes. LinearRings peut partager des sommets.
Exemples
L’exemple suivant calcule le périmètre de New York Central Park, en mètres.
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)
Sortie
Périmètre |
---|
9930.30149604938 |
L’exemple suivant effectue l’union de polygones dans le multipolygon et calcule le périmètre du polygone unifié.
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)
Sortie
Périmètre |
---|
15943.5384578745 |
L’exemple suivant retourne True en raison du polygone non valide.
print is_invalid = isnull(geo_polygon_perimeter(dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))
Sortie
is_invalid |
---|
True |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour