SVG : Création Images Vectorielles
Le SVG (Scalable Vector Graphics) est un langage de description à balises permettant de réaliser des graphiques et images vectorielles. Il appartient à la famille des langages dérivés du SGML (Standard Generalized Markup Language). Le langage SVG consiste à décomposer une image ou un graphique en éléments de bases et à mémoriser leurs équation mathématiques.
Contrairement aux images "matricielles" qui sont mémorisées sous formes de tableaux de secteurs colorés (pixels ou groupes de pixels), les images vectorielles ont une qualité constante quelque soit la résolution de l'écran ou l'agrandissement effectué sur l'image; l'image étant recalculée et reconstruite par la navigateur à chaque chargement ou rafraichissement de la page. Egalement le stockage des images vectorielles nécessitent beaucoup moins d'espace mémoire que les images matricielles, cependant elles sont limitées en complexité étant donné que chaque élément, chaque détail de l'image doit pouvoir être décomposé en éléments géométriques simples descriptibles sous forme d'équations mathématiques. De plus le code SVG est directement intégrable dans le DOM (Document Object Model) au sein même du code HTML ou XML, sans avoir à créer un lien vers un document anexe, ce qui facilite grandement la portabilité DOM.
Cette page est construite en s'inspirant des travaux de la communauté MDN Web Docs, pour chaque paragraphes le lien vers la page source est mentionné par les lettres "MDN" mises en apostrophe.
- Formes géométriques de base
- CIRCLE : Elément "cercle" MDN
- cx : Position centre du cercle sur axe horizontal;
- cy : Position centre du cercle sur axe vertical;
- r : Rayon du cercle;
- pathLength : Longueur totale de la circonférence en unité utilisateur.
- ELLIPSE : Elément "éllipse" MDN
- cx : Position centre de l'éllipse sur axe horizontal;
- cy : Position centre de l'éllipse sur axe vertical;
- rx : Rayon de l'éllipse suivant axe horizontal;
- ry : Rayon de l'éllipse suivant axe vertical.
- RECT : Elément "rectangle"
- x : Position coin supérieur gauche du rectangle sur axe horizontal;
- y : Position coin supérieur gauche du rectangle sur axe vertical;
- width : Largeur du rectangle;
- height : Hauteur du rectangle;
- rx : Rayon coins du rectangle suivant axe horizontal;
- ry : Rayon coins du rectangle suivant axe vertical.
- Unité de valeur : pixel ("px") ou pourcentage ("%");
- Valeur par défaut : "0";
- Modifiables par fonction d'animation "animate".
- LINE : Elément "ligne droite"
- x1 : Position 1ere extrémité de la ligne sur axe horizontal;
- y1 : Position 1ere extrémité de la ligne sur axe vertical;
- x2 : Position 2eme extrémité de la ligne sur axe horizontal;
- y2 : Position 2eme extrémité de la ligne sur axe vertical;
- Tracer de lignes et courbes
- PATH : Elément "chemin"
- d : Définit le tracé à dessiner au moyen des différentes méthodes ci-dessous:
- MoveTo : "M x y" (coordonnées absolues)
- LineTo : "L x y" (coordonnées absolues) | "l dx dy" (coordonnées relatives)
- HorizontalLineTo : "H x" (coordonnées absolues) | "h dx" (coordonnées relatives)
- VerticalLineTo : "V y" (coordonnées absolues) | "v dy" (coordonnées relatives)
- ClosePath : "Z" (coordonnées absolues) | "z" (coordonnées relatives)
- CurveTo : "C x1 y1, x2 y2, x y" (coordonnées absolues) | "c dx1 dy1, dx2 dy2, dx dy" (coordonnées relatives)
- ShorthandCurveTo : "S x2 y2, x y" (coordonnées absolues) | "s dx2 dy2, dx dy" (coordonnées relatives)
- QuadraticBezierCurveTo : "Q x1 y1, x y" (coordonnées absolues) | "q dx1 dy1, dx dy" (coordonnées relatives)
- ShorthandQuadraticBezierCurveTo : "T x y" (coordonnées absolues) | "t dx dy" (coordonnées relatives)
- EllipticalArc : "A rx ry x-axis-rotation large-arc-flag sweep-flag x y" (coordonnées absolues) | "a rx ry x-axis-rotation large-arc-flag sweep-flag dx dy" (coordonnées relatives)
- MoveTo : Positionner curseur
- Syntaxe : M x y (coordonnées absolues).
- Objectif : Positionner le curseur au point de coordonées (x, y) et le fixer comme point de départ du tracé à effectuer.
- LineTo : Tracer ligne droite
- Syntaxe : L x y (coordonnées absolues) | l dx dy (coordonnées relatives).
- Objectif : Joindre par une ligne droite la position actuelle du curseur au point de coordonnées (x, y).
- Exemple de code :
- HorizontalLineTo : Tracer ligne horizontale
- Syntaxe : H x (coordonnées absolues) | h dx (coordonnées relatives).
- Objectif : Joindre par une ligne droite la position actuelle du curseur au point de coordonnées (x) situé sur la même ligne horizontale.
- Exemple :
- VerticalLineTo : Tracer ligne verticale
- Syntaxe : H x (coordonnées absolues) | h dx (coordonnées relatives).
- Objectif : Joindre par une ligne droite la position actuelle du curseur au point de coordonnées (x) situé sur la même ligne horizontale.
- Exemple :
- ClosePath : Fermer le chemin
- Syntaxe : Z | z.
- Objectif : Fermer le tracé en cours d'éloboration.
- Exemple :
- CurveTo : Tracer courbe
- Syntaxe : C x1 y1 x2 y2 x y (coordonnées absolues) | c dx1 dy1 dx2 dy2 dx dy (coordonnées relatives).
- Objectif : Joindre la position actuelle du curseur au point de coordonnées (x, y) en traçant une courbe cubique de Bézier dont les points de contrôle ont pour coordonnés (x1, y1) et (x2, y2).
- Exemple :
- ShorthandCurveTo : Tracer courbe cubique de Bézier
- Syntaxe : S x2 y2 x y (coordonnées absolues) | s dx2 dy2 dx dy (coordonnées relatives).
- Objectif : Prolonger un tracé par une courbe cubique de Bézier dont le 1er point de contrôle est construit suivant caractéristiques du tracé à prolonger.
- Caractéristiques particulières : Si le tracé à prolonger est une courbe cubique de Bézier (construit par les commandes C ou S), le 1er point de contrôle du nouveau tracé s'obtient par symétrie axiale du dernier point de contrôle du tracé à prolonger; si le tracé à prolonger n'est pas une courbe cubique de Bézier, le 1er point de contrôle du nouveau tracé correspondra au point de jonction entre les deux courbes (extrémité de la courbe à prolonger).
- Exemple :
- Caractéristiques des attributs et tracés géométriques
- Unité de valeur : pixel ("px") ou pourcentage ("%");
- Valeur par défaut : "0";
- Modifiables par fonction d'animation "animate".
- Cas d'utilisation: avec éléments <ellipse> | <rect>
définissent un rayon suivant axe "x" ou axe "y"; - Unité de valeur : pixel ("px") | pourcentage ("%") | automatique ("auto"),
l'unité automatique attribue à un rayon la valeur du rayon qui lui est orthogonalement opposé ("rx"="ry" | "ry"="rx"); - Valeur par défaut : "auto",
si aucun des deux rayons n'est défini, la valeur par défaut est "0"; - Modifiables par fonction d'animation <animate>.
- fill
- stroke
- stroke-width
- Eléments d'animation
- Elément ANIMATE
- Syntaxe: <animate attributs/>
- Attributs propre :
- de temps : begin; dur; end; min; max;
- de répétition : restart; repeatCount; repeatDur;
- de valeurs : attributeName; values; from; to; by; additive; accumulate;
- de contrôle : fill; calcMode; keyTimes, keySplines;
- de synchronisation : onbegin; onend; onrepeat.
- Exemple :
- Exemple d'application
- xIi est la position relative du PtIi par rapport au pôle nord;
- pour une projection equirectangulaire son unité est le degré et sa valeur est égale à "90°-Latitude du point PtIi";
- yIi est la position relative du PtIi par rapport au méridien de référence;
- pour une projection equirectangulaire le méridien de référence est celui de Greenwich, son unité est le degré et sa valeur est égale à la Longitude du point PtIi;
- Attributs propre :
-
Exemple de code :
- Attributs propre :
NB: Si un des deux rayons "rx" ou "ry" est ommis sa valeur par défaut est égale à la valeur de l'autre rayon, ce qui revient à tracer un cercle.
- Exemple de code :
- Attributs propre :
- Caractéristique attributs propres :
- Exemple de code :
- Attributs propre :
-
Exemple de code :
- Attributs propre :
- Exemple de code :
Les paragraphes suivant décrivent chacune des méthodes utilisées dans l'attribut "d" de l'élément "path" présenté précédemment.
Caractéristiques des attributs propres :
- Cas général:
- Attributs "rx" et "ry": MDN
Caractéristiques des attributs généraux :
Met en mouvement un élément en faisant varier dans le temps un de ses attributs.
Utilisation de tracés SVG en Géomatique
La Géomatique, techniques de traitement informatique des données géographiques, possèdent de nombreuses applications. Dans le milieu associatif elle peut être utile pour les activités de pleine nature (courses d'orientation, randonnées, ...), pour les activités environnementales et de défense du monde vivant, pour les activités de valorisation de patrimoines, etc... Dans le secteur des services, elle peut être utile pour l'optimisation des déplacements (calcul des temps de trajets ou de la consommation de carburant), l'optimisation des tournées de visite chez les clients, etc...
Cette page a ainsi vocation de dresser, pour cette discipline, une liste non exhaustive d'application possible y associant l'usage des outils du web.
Tracés de cartes en SVG
Dans ce chapitre nous allons proposer une méthodologie de tracé de cartes géographique en langage SVG. Nous prenons en exemple le Bassin d'Arcachon.
Tout d'abord nous identifions quelques lieux d'intérêt en bord du bassin et relevons leurs coordonnées GPS; nous relevons en même temps les coordonnées GPS de points géographiques quelconques les précédant et les succédants en remontant les bords du bassin (ces derniers points serviront de points de construction pour le tracés SVG).
Ci-dessous un tableau énumérant les points d'intérêts choisis pour le tracé du Bassin d'Arcachon:
Lieu d'intérêt | Coord GPS Pt précédant | Coord GPS Lieu d'intérêt | Coord GPS Pt succédant |
---|---|---|---|
Plage de la Lagune | 44.53,-1.26 | 44.55,-1.25 | 44.56,-1.25 |
Dune du Pilat | 44.58,-1.22 | 44.59,-1.22 | 44.60,-1.21 |
Plage du Moulleau | 44.64,-1.20 | 44.64,-1.20 | 44.64,-1.20 |
Plage d'Arcachon | 44.66,-1.19 | 44.66,-1.17 | 44.66,-1.14 |
Pointe de l'Aiguillon | 44.66,-1.14 | 44.65,-1.14 | 44.65,-1.15 |
Plage de La Teste | 44.65,-1.15 | 44.65,-1.13 | 44.65,-1.12 |
... | ...,... | ...,... | ...,... |
L'étape suivant consiste à calculer les coordonnées des points de construction pour le tracé vectoriel des bords du Bassin. Le calcul dépendra du mode de projection cartographique choisie.
Lieu d'intérêt | Coord SVG Pt précédant | Coord SVG Lieu d'intérêt | Coord SVG Pt succédant |
---|---|---|---|
PtA | xA1,yA1 | xA2,yA2 | xA3,yA3 |
PtB | xB1,yB1 | xB2,yB2 | xB3,yB3 |
PtC | xC1,yC1 | xC2,yC2 | xC3,yC3 |
... | ...,... | ...,... | ...,... |
PtI | xI1,yI1 | xI2,yI2 | xI3,yI3 |
- où:
Ce travail effectué on trace le bord du bassin par la commande PATH.
Commentaires
Enregistrer un commentaire