SVG et la cartographie

Le format SVG est de plus en plus utilisé en matière de cartographie.

Exemple : la carte des départements français (métropole et Corse uniquement)

J'ai récupéré cette carte sur le site WIKIPEDIA puis j'ai inséré ce fichier SVG dans la page.

Faites varier la taille de l'image
image SVG

Affichez la console JS !

Le code HTML correspondant

Il est d'une simplificité enfantine.

<table> <caption>Faites varier la taille de l'image</caption> <tr><th><button id = 'plus'>+</button></th><th> <button id = 'moins'>-</button></th></tr> </table> <img src ="departements.svg" alt ="image SVG" width ="50%"/>

Le script

Il faut bien sûr associer à chaque bouton une fonction JS.

	var image = document.querySelector('img'); 
	var vlargeur;
	var image = document.querySelector('img'); 
	var vlargeur =image.width;
	console.log(vlargeur); 
	document.querySelector('#plus').onclick = function()
	{ vlargeur +=100  ; image.width = vlargeur  ; console.log(vlargeur); }
	document.querySelector('#moins').onclick = function()
	{ vlargeur -=100 ; image.setAttribute('width',vlargeur) ; console.log(vlargeur); }

Le script mérite quelques explications.

Si vous avez affiché la console JS sur votre ordinateur portable vous voyez que la valeur retournée est 450 ...
En effet l'instruction image.width ne retourne pas "50%" mais le résultat (50% de la largeur du conteneur donc 450). En effet l'image est "enfant" de BODY et comme la page fait 900px de large lorsqu'elle est affichée sur un grand écran.
Comme l'instruction retourne un entier on peut donc incrémenter et décrémenter directement dans les fonctions anonymes. Ici on augmente ou on diminue de 100 (pixels)à chaque clic.

Le code du fichier SVG

Examinons maintenant le code du fichier "departements.svg".
Le fichier pèse 300 KO ; ce qui est raisonnable.
Je vous présente des extraits.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" ... <path style="opacity:1;color:#000000;fill:#fff3e3;fill-opacity:1;fill-rule:evenodd;stroke:#5d5d5d;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51459853;visibility:visible;display:inline;overflow:visible" d="M 387,381.34375 L 384.25,381.5625 L 382.125,384.875 L 382.6875,388.375 L 386,388.78125 L 385.4375,390.34375 L 382.875,390.53125 L 379.96875,393.46875 L 379.1875,392.5 L 379.75,388.59375 L 378.59375,387.21875 L 373.3125,388 L 372.28125,390.09375 L 372.84375,390.40625 L 376.15625,395.90625 L 376.15625,400.34375 L 381.96875,406.125 L 381.96875,408.625 L 379.71875,409.90625 L 379.875,409.96875 L 386.9375,412.96875 L 389.9375,416.3125 L 391.375,418.28125 L 395.25,420.03125 L 399.84375,419.875 L 407.4375,423.03125 L 411.6875,423.5625 L 417,422.34375 L 419.1875,420.625 L 419.46875,419.15625 L 415.40625,414.5625 L 410.96875,414.5625 L 410.96875,412.96875 L 412.5625,411.1875 L 412.5625,409.25 L 409.03125,407.5 L 408.6875,404.65625 L 410.625,403.78125 L 410.625,401.3125 L 408.5,400.9375 L 408.34375,398.28125 L 408.3125,398.09375 L 406.53125,397.96875 L 403.59375,395.8125 L 402.8125,393.28125 L 397.34375,392.875 L 393.25,392.5 L 392.84375,390.15625 L 394.21875,387.21875 L 391.6875,389.375 L 387.78125,388.96875 L 387,387.59375 L 389.71875,383.90625 L 387,381.34375 z " id="departement84" inkscape:label="#path4233" /> ... <text xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#96948c;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" x="181.10989" y="514.93665" id="text17910" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan17912" x="181.10989" y="514.93665">ANDORRE</tspan></text> ...

On apprend que le fichier a été produit avec le logiciel Inkscape.
Pour chaque département un chemin (balise PATH).
Pour chaque pays limitrophe un texte (balise TEXT).
Retour menu