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é !
data germany; set maps.germany;
original_order=_n_;
run;
1
2
DATA germany;
3
SET maps.germany;
4
original_order=_n_;
5
RUN;
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é !
proc sql;
create table germany as
select unique germany.*, germany2.state2
from germany left join maps.germany2
on germany.id=germany2.id
order by state2, original_order;
quit; run;
1
PROC SQL;
2
create TABLE germany as
3
select unique germany.*, germany2.state2
4
from germany left join maps.germany2
5
on germany.id=germany2.id
6
order BY state2, original_order;
7
QUIT; 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é !
proc gremove data=germany out=germany;
by state2;
id id;
run;
1
PROC GREMOVEDATA=germany out=germany;
2
BY state2;
3
id id;
4
RUN;
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é !
%annomac;
%centroid(germany, anno_names, state2);
data anno_names; set anno_names;
length function $8;
hsys='3'; when='a'; size=2;
xsys='2'; ysys='2'; function='move'; output;
/* Give a few of the labels an x/y offset, to move to a better location (x/y values in relative %) */
x=0; y=0;
text=trim(left(state2));
if text='Brandenburg' then y=-1.5;
if text='Niedersachsen' then y=y+1.5;
if text='Sachsen' then x=-1;
xsys='b'; ysys='b'; function='move'; output;
function='cntl2txt'; output;
function='label'; output;
run;
1
%annomac;
2
%centroid(germany, anno_names, state2);
3
4
DATA anno_names; SET anno_names;
5
LENGTH function $8;
6
hsys='3'; when='a'; size=2;
7
xsys='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 %) */
9
x=0; y=0;
10
text=trim(left(state2));
11
IF text='Brandenburg'THEN y=-1.5;
12
IF text='Niedersachsen'THEN y=y+1.5;
13
IF text='Sachsen'THEN x=-1;
14
xsys='b'; ysys='b'; function='move'; OUTPUT;
15
function='cntl2txt'; OUTPUT;
16
function='label'; OUTPUT;
17
RUN;
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é !
GOPTIONS DEVICE=png;
goptions cback=white border;
goptions gunit=pct ftitle='albany amt/bold' ftext='albany amt' htitle=4 htext=2.75;
ODS LISTING CLOSE;
ODS HTML path=odsout body="&name..htm" style=sasweb;
legend1 position=(right middle) label=none across=1 shape=bar(.15in,.15in);
title1 ls=1.5 "16 States of Germany";
proc gmap map=germany data=germany anno=anno_names;
id state2;
choro state2 / discrete coutline=gray legend=legend1
des="" name="&name";
run;
quit;
ODS HTML CLOSE;
ODS LISTING;
choro state2 / discrete coutline=gray legend=legend1
15
des="" name="&name";
16
RUN;
17
18
QUIT;
19
ODS HTML CLOSE;
20
ODS 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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.