Der Prozess beginnt mit der Vorbereitung der Kartendaten aus der 'maps'-Bibliothek. Das Skript führt die Polygone der deutschen Regionen ('maps.germany') mit Informationen über ihre Zugehörigkeit zu den 16 Bundesländern ('maps.germany2') zusammen. Anschließend wird die GREMOVE-Prozedur verwendet, um die internen Grenzen der Regionen aufzulösen, sodass nur die Umrisse der Bundesländer erhalten bleiben. Ein Anmerkungsdatensatz wird dann berechnet, um die Namen der Bundesländer in der Mitte ihres Territoriums auf der Karte zu positionieren. Schließlich generiert die GMAP-Prozedur die endgültige Karte in einer HTML-Datei, wobei jedes Bundesland mit einer eigenen Farbe dargestellt und sein Name angezeigt wird.
Datenanalyse
Type : MIXTE
Das Skript verwendet die Tabellen `maps.germany` und `maps.germany2`, die Systemtabellen sind, die mit dem SAS/GRAPH-Modul geliefert werden. Anschließend werden temporäre Arbeitstabellen (`germany`, `anno_names`) erstellt, um die Daten für die Visualisierung zu aggregieren und vorzubereiten.
1 Codeblock
DATA STEP Data
Erklärung : Erstellt eine Arbeitstabelle 'germany' aus der Systemtabelle 'maps.germany'. Eine Variable 'original_order' wird hinzugefügt, um die ursprüngliche Reihenfolge der Beobachtungen beizubehalten, was für die spätere Sortierung nützlich sein wird.
Kopiert!
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 Codeblock
PROC SQL Data
Erklärung : Verbindet die Arbeitstabelle 'germany' mit der Tabelle 'maps.germany2', um jede Region (id) ihrem jeweiligen Bundesland (state2) zuzuordnen. Das Ergebnis ersetzt die Tabelle 'germany' und wird nach Bundesland sortiert.
Kopiert!
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 Codeblock
PROC GREMOVE Data
Erklärung : Verwendet die GREMOVE-Prozedur, um die Polygongrenzen innerhalb jeder durch 'state2' definierten Gruppe aufzulösen. Dies bewirkt, dass die Karte der Regionen in eine Karte der 16 Bundesländer umgewandelt wird.
Kopiert!
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 Codeblock
MACRO / DATA STEP Data
Erklärung : Die Makros %annomac und %centroid berechnen das geografische Zentrum jedes Bundeslandes, um dort eine Beschriftung zu platzieren. Ein nachfolgender DATA STEP modifiziert diesen Anmerkungsdatensatz, um die Position einiger Bundeslandnamen manuell anzupassen und die Lesbarkeit der endgültigen Karte zu verbessern.
Kopiert!
%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 Codeblock
PROC GMAP
Erklärung : Konfiguriert die grafische Umgebung (GOPTIONS) und das Ausgabesystem (ODS) zur Generierung einer HTML-Datei. Die GMAP-Prozedur zeichnet anschließend die Choroplethenkarte, basierend auf der Tabelle 'germany' für Polygone und Farben und der Tabelle 'anno_names' zum Überlagern der Textbeschriftungen.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.