Publié le :

Carte des 16 Länders d'Allemagne

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le processus débute par la préparation des données cartographiques issues de la bibliothèque 'maps'. Le script fusionne les polygones des régions d'Allemagne ('maps.germany') avec les informations sur leur appartenance aux 16 états ('maps.germany2'). Ensuite, la procédure GREMOVE est utilisée pour dissoudre les frontières internes des régions, ne conservant que les contours des états. Un jeu de données d'annotation est ensuite calculé pour positionner les noms des états au centre de leur territoire sur la carte. Finalement, la procédure GMAP génère la carte finale dans un fichier HTML, représentant chaque état avec une couleur distincte et affichant son nom.
Analyse des données

Type : MIXTE


Le script utilise les tables `maps.germany` et `maps.germany2`, qui sont des tables systèmes fournies avec le module SAS/GRAPH. Il crée ensuite des tables de travail intermédiaires (`germany`, `anno_names`) pour agréger et préparer les données pour la visualisation.

1 Bloc de code
DATA STEP Data
Explication :
Crée une table de travail 'germany' à partir de la table système 'maps.germany'. Une variable 'original_order' est ajoutée pour conserver l'ordre initial des observations, ce qui sera utile pour le tri ultérieur.
Copié !
1 
2DATA germany;
3SET maps.germany;
4original_order=_n_;
5RUN;
6 
2 Bloc de code
PROC SQL Data
Explication :
Joint la table de travail 'germany' avec la table 'maps.germany2' pour associer chaque région (id) à son état respectif (state2). Le résultat remplace la table 'germany' et est trié par état.
Copié !
1PROC SQL;
2create TABLE germany as
3select unique germany.*, germany2.state2
4from germany left join maps.germany2
5on germany.id=germany2.id
6order BY state2, original_order;
7QUIT; RUN;
3 Bloc de code
PROC GREMOVE Data
Explication :
Utilise la procédure GREMOVE pour dissoudre les frontières des polygones à l'intérieur de chaque groupe défini par 'state2'. Cela a pour effet de transformer la carte des régions en une carte des 16 états.
Copié !
1PROC GREMOVE DATA=germany out=germany;
2BY state2;
3id id;
4RUN;
4 Bloc de code
MACRO / DATA STEP Data
Explication :
Les macros %annomac et %centroid calculent le centre géographique de chaque état pour y placer une étiquette. Un DATA STEP successif modifie ce jeu de données d'annotation pour ajuster manuellement la position de quelques noms d'états afin d'améliorer la lisibilité de la carte finale.
Copié !
1%annomac;
2%centroid(germany, anno_names, state2);
3 
4DATA anno_names; SET anno_names;
5LENGTH function $8;
6hsys='3'; when='a'; size=2;
7xsys='2'; ysys='2'; function='move'; OUTPUT;
8/* Give a few of the labels an x/y offset, to move to a better location (x/y values in relative %) */
9x=0; y=0;
10text=trim(left(state2));
11IF text='Brandenburg' THEN y=-1.5;
12IF text='Niedersachsen' THEN y=y+1.5;
13IF text='Sachsen' THEN x=-1;
14xsys='b'; ysys='b'; function='move'; OUTPUT;
15function='cntl2txt'; OUTPUT;
16function='label'; OUTPUT;
17RUN;
5 Bloc de code
PROC GMAP
Explication :
Configure l'environnement graphique (GOPTIONS) et le système de sortie (ODS) pour générer un fichier HTML. La procédure GMAP dessine ensuite la carte choroplèthe en se basant sur la table 'germany' pour les polygones et les couleurs, et sur la table 'anno_names' pour superposer les étiquettes de texte.
Copié !
1GOPTIONS DEVICE=png;
2goptions cback=white border;
3goptions gunit=pct ftitle='albany amt/bold' ftext='albany amt' htitle=4 htext=2.75;
4
5ODS LISTING CLOSE;
6ODS HTML path=odsout body="&name..htm" style=sasweb;
7 
8legend1 position=(right middle) label=none across=1 shape=bar(.15in,.15in);
9 
10title1 ls=1.5 "16 States of Germany";
11 
12PROC GMAP map=germany DATA=germany anno=anno_names;
13id state2;
14choro state2 / discrete coutline=gray legend=legend1
15 des="" name="&name";
16RUN;
17 
18QUIT;
19ODS HTML CLOSE;
20ODS LISTING;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.