Formules ajoutées dans Calc

L’extension Apache SIS pour Open/LibreOffice fournit de nouvelles fonctions réparties dans 2 catégories : Texte et Add-in. Le principe de base des fonctions de la catégorie Add-in est le suivant : chaque système de référence des coordonnées est identifié par un code numérique de la base de données géodesiques EPSG ou d’une autre autorité. La base de donnnées EPSG recense plus de 6000 systèmes en usage sur la planète, ainsi que des paramètres permettant d’effectuer des transformations d’un système vers un autre. Certaines fonctions permettent d’obtenir des informations sur un système de référence en particulier, par exemple son domaine de validité. Ces fonctions n’attendent qu’un seul code EPSG en paramètre. D’autres fonctions agissent non pas à partir d’un système de référence seul, mais plutôt à partir d’une transformation passant d’un système vers un autre. Ces fonctions attendent deux codes EPSG en paramètres, chacun correspondant à un système de référence différent. Le premier code définit le système source, et le second code définit le système destination. L’opération est définie par l’algorithme permettant de passer des coordonnées du système source vers celles du système destination.

Les définitions officielles des codes EPSG peuvent être explorées en-ligne avec le registre EPSG. Cette extension pour Open/LibreOffice est toutefois livrée avec sa propre copie (dans un format binaire) de la base de données EPSG, dont l’utilisation est soumise à des conditions. Apache SIS étend cette liste avec quelques codes définis en dehors d’EPSG, notamment par l’OGC. Un sommaire des codes embarqués par Apache SIS est donné ici. La syntaxe des codes acceptés est décrite dans la Javadoc de Apache SIS. Par exemple, tous les codes suivants sont considérés équivalents à "EPSG:4326" :

La plupart des fonctions opérant sur des coordonnées sont des fonctions matricielles. Leurs sorties nécessitent plusieurs colonnes, autant qu’il y a de dimensions dans le système de référence utilisé. Par exemple si une fonction doit retourner une coordonnée à trois dimensions, alors il faut sélectionner trois colonnes avant d’entrer la fonction et valider cette dernière en appuyant sur [Ctrl] + [Shift] + [Entrée].

Bien qu’il soit possible d’utiliser une fonction par ligne et de la recopier sur de nouvelles lignes autant de fois qu’il y a de points à transformer, il est beaucoup plus efficace de profiter là aussi du caractère matriciel des fonctions. En plus d’avoir sélectionné le nombre de colonnes nécessaires, sélectionnez autant de lignes qu’il y a de points à transformer. Cela permet à Apache SIS de récupérer les informations associées aux codes EPSG une seule fois pour toutes les lignes de la matrice résultante, plutôt que de recommencer cette opération pour chaque fonction recopiée.

(en anglais : TEXT.ANGLE)

TEXTE.ANGLE

Convertit une valeur numérique en chaîne de caractères représentant un angle. La valeur numérique doit être un angle en degrés décimaux (par exemple 12,5 pour 12°30′). La chaîne retournée peut être un angle sexagésimal, en fonction du modèle donné en argument. Ce modèle comprend quelques caractères spéciaux décrits dans la Javadoc de Apache SIS, dont les principaux sont : D, M, S, d, m et s. Le caractère D représente la partie entière des degrés, et d la partie fractionnaire. Le symbole M représente la partie entière des minutes, et m la partie fractionnaire. Enfin le symbole S représente la partie entière des secondes, et s la partie fractionnaire.

Exemples
Formule Résultat
=TEXTE.ANGLE(167,1590; "DD°") 167°
=TEXTE.ANGLE(167,1590; "DD°MM′") 167°10′
=TEXTE.ANGLE(167,1590; "DD°MM′SS″") 167°09′32″
=TEXTE.ANGLE(167,1590; "DD°MM′SS.s″") 167°09′32,4″
(en anglais : VALUE.ANGLE)

VALEUR.ANGLE

Convertit en valeur numérique une chaîne de caractères représentant un angle. Cette fonction est l’inverse de TEXTE.ANGLE. La chaîne de caractères peut représenter un angle sexagésimal, à la condition que les symboles °, ′ et ″ soient correctement utilisés pour identifier les degrés, minutes et secondes respectivement. L’hémisphère (N, S, E ou W) est optionnel. L’angle retourné est toujours exprimé en degrés décimaux.

Les symboles °, ′ et ″ n’ont pas besoin d’être tous présents. Ils peuvent être complètement omis si un modèle approprié est donné en argument. Par exemple si le modèle est DDMM, alors cette fonction convertira le texte "0430" en la valeur numérique 4,5. Excepté pour de tels cas où les symboles différentiateurs de champs sont complètement absents, le modèle donné à la fonction VALEUR.ANGLE est plutôt à titre indicatif. Cette fonction est assez tolérante et devrait interpréter correctement des chaînes de caractères qui ne correspondent pas exactement au modèle.

(en anglais : CRS.NAME)

NOM.SRS

Retourne le nom du système de référence identifié par le code donné. Le code du système est l’unique argument attendu par cette fonction. Bien que cette fonction soit conçue pour retourner le nom de systèmes de références spatiaux (SRS), elle peut aussi retourner le nom de d’autres types d’objets à la condition que leur type soit explicité (par exemple : "urn:ogc:def:datum:EPSG::6326").

Exemples
Formule Résultat
=NOM.SRS("EPSG:3060") IGN72 Grande Terre / UTM zone 58S
=NOM.SRS("EPSG:3061") Porto Santo 1995 / UTM zone 28N
=NOM.SRS("EPSG:4326") WGS 84
=NOM.SRS("EPSG:4329") WGS 84 (3D)
(en anglais : CRS.USAGE)

USAGE.SRS

Retourne le domaine d’utilisation du système de référence identifié par le code donné. Le code du système est l’unique argument attendu par cette fonction. Bien que cette fonction soit conçue pour retourner le domaine d’utilisation de systèmes de références spatiaux (SRS), elle peut aussi retourner le domaine de d’autres types d’objets à la condition que leur type soit explicité (par exemple : "urn:ogc:def:datum:EPSG::6326").

Exemples
Formule Résultat
=USAGE.SRS("EPSG:3060") Large and medium scale topographic mapping and engineering survey.
=USAGE.SRS("EPSG:4327") Used by GPS satellite navigation system.
(en anglais : REGION.NAME)

NOM.REGION

Retourne une description textuelle de la région dans laquelle un objet est valide. Cette description comprend habituellement les noms des pays ou provinces pour lesquels le système a été conçu. L’objet donné en argument est souvent, mais pas obligatoirement, un code de Système de Références Spatiales (SRS).

Exemples
Formule Résultat
=NOM.REGION("EPSG:3060") New Caledonia - Grande Terre.
=NOM.REGION("EPSG:4326") World.
(en anglais : GEOGRAPHIC.AREA)

REGION.GEOGRAPHIQUE

Retourne sous forme de boîte englobante le domaine d’un objet identifié par le code donné. Si le code donné en argument identifie un système de référence spatial, alors cette fonction retourne les coordonnées géographiques de la région dans laquelle le système est valide. La boîte est exprimée par une matrice 2×2 avec les latitudes dans la première colonne et les longitudes dans la seconde colonne, toujours dans cet ordre et toujours en degrés décimaux. La première ligne donne les coordonnées du coin supérieur gauche et la seconde ligne donne celles du coin inférieur droit. En d’autres termes, les valeurs retournées par cette fonction se répartissent comme suit :

Nord Ouest
Sud Est
(en anglais : CRS.AXIS)

AXE.SRS

Retourne le nom d’un axe d’un système de référence de coordonnées avec ses unités. Cette fonction attend en arguments le code d’un système de référence, suivit de l’index d’un de ses axes. Les index sont numérotés de 1 jusqu’au nombre de dimensions du système de référence, inclusivement. Cette fonction est particulièrement utile pour obtenir le libellé des colonnes qui contiendront les coordonnées.

Exemples
Formule Résultat
=AXE.SRS("EPSG:4326"; 1) Latitude (°)
=AXE.SRS("EPSG:4326"; 2) Longitude (°)
=AXE.SRS("EPSG:32758"; 1) Easting (m)
=AXE.SRS("EPSG:32758"; 2) Northing (m)
(en anglais : TRANSFORM.POINTS)

TRANSFORM.POINTS

Applique un changement (transformation ou conversion) de coordonnées sur des points. Les coordonnées à transformer doivent être disposées sous forme de tableau avec une coordonnée par ligne et autant de colonnes qu’il y a de dimensions dans leur système de référence (habituellement deux ou trois). La sortie aura une disposition similaire. Cette fonction attend trois arguments :

L’ordre et le nombre de colonnes dans la plage de coordonnées à transformer dépendent du système de référence source. L’ordre et le nombre de colonnes des coordonnées transformées (la sortie de cette méthode) dépendent du système de référence destination. Pour s’y retrouver, il est pratique d’utiliser la fonction AXE.SRS pour le libellé des colonnes.

Toutes les transformations de coordonnées n’ont pas la même précision. Pour obtenir une estimation de l’erreur, on peut utiliser la fonction PRECISION.TRANSFORM avec les mêmes arguments que ceux qui auront été spécifiés à TRANSFORM.POINTS.

(en anglais : TRANSFORM.ENVELOPE)

TRANSFORM.ENVELOPPE

Applique un changement (transformation ou conversion) une boîte englobante. Cette fonction prend les mêmes arguments que TRANSFORM.POINTS, mais ne retournera que deux lignes. La première ligne contiendra les coordonnées transformées minimales alors que la second ligne contiendra les coordonnées transformées maximales. Ce résultat peut être différent de celui que l’on obtiendrait en transformant d’abord les points puis en prenant leurs minimums et maximums. La raison de cette différence est que cette fonction TRANSFORM.ENVELOPPE prend en compte la courbure de la boîte englobante sous l’effet d’une projection cartographique ou autre transformation.

(en anglais : TRANSFORM.ACCURACY)

PRECISION.TRANSFORM

Retourne une estimation de la précision des transformations de coordonnées entre deux systèmes de référence. Cette fonction attend en argument les codes de deux systèmes de référence, habituellement ceux qui sont spécifiés à la fonction TRANSFORM.POINTS. Elle retourne une estimation de l’erreur induite par la transformation de coordonnées, toujours en mètres. Il ne s’agit pas de l’erreur due aux limites de l’arithmétique en virgule flottante, mais plutôt de l’erreur due à la nature stochastique des paramètres dès qu’un changement de référentiel est impliqué (ces paramètres sont déterminés empiriquement à partir d’un ensemble de points exprimés selon les deux systèmes de références).

Des incertitudes sur les coordonnées calculées surviennent dès qu’il y a eu changement de référentiel, auquel cas on parle de transformation de coordonnées selon la terminologie de la norme ISO 19111. Lorsque le calcul consiste par exemple à appliquer une projection cartographique sans changer de référentiel, on parle alors de conversion de coordonnées (toujours selon la terminologie de la norme ISO). Dans ce dernier cas, la fonction TRANSFORM.ACCURACY peut retourner 0, ce qui signifie l’opération a une précision infinie en théorie. En pratique, Apache SIS est limitée par la précision des calculs à virgules flottantes ainsi que par les approximations utilisées pour certaines formules non-linéaires. L’erreur ne sera donc pas réellement nulle, mais devrait être faible.