El proceso comienza con la preparación de los datos cartográficos de la biblioteca 'maps'. El script fusiona los polígonos de las regiones de Alemania ('maps.germany') con la información sobre su pertenencia a los 16 estados ('maps.germany2'). Luego, se utiliza el procedimiento GREMOVE para disolver las fronteras internas de las regiones, conservando solo los contornos de los estados. A continuación, se calcula un conjunto de datos de anotación para posicionar los nombres de los estados en el centro de su territorio en el mapa. Finalmente, el procedimiento GMAP genera el mapa final en un archivo HTML, representando cada estado con un color distinto y mostrando su nombre.
Análisis de datos
Type : MIXTE
El script utiliza las tablas `maps.germany` y `maps.germany2`, que son tablas de sistema proporcionadas con el módulo SAS/GRAPH. Luego crea tablas de trabajo intermedias (`germany`, `anno_names`) para agregar y preparar los datos para la visualización.
1 Bloque de código
DATA STEP Data
Explicación : Crea una tabla de trabajo 'germany' a partir de la tabla del sistema 'maps.germany'. Se añade una variable 'original_order' para conservar el orden inicial de las observaciones, lo que será útil para la clasificación posterior.
¡Copiado!
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 Bloque de código
PROC SQL Data
Explicación : Une la tabla de trabajo 'germany' con la tabla 'maps.germany2' para asociar cada región (id) con su estado respectivo (state2). El resultado reemplaza la tabla 'germany' y se ordena por estado.
¡Copiado!
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 Bloque de código
PROC GREMOVE Data
Explicación : Utiliza el procedimiento GREMOVE para disolver las fronteras de los polígonos dentro de cada grupo definido por 'state2'. Esto tiene el efecto de transformar el mapa de regiones en un mapa de los 16 estados.
¡Copiado!
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 Bloque de código
MACRO / DATA STEP Data
Explicación : Las macros %annomac y %centroid calculan el centro geográfico de cada estado para colocar una etiqueta. Un DATA STEP sucesivo modifica este conjunto de datos de anotación para ajustar manualmente la posición de algunos nombres de estados y mejorar la legibilidad del mapa final.
¡Copiado!
%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 Bloque de código
PROC GMAP
Explicación : Configura el entorno gráfico (GOPTIONS) y el sistema de salida (ODS) para generar un archivo HTML. El procedimiento GMAP dibuja a continuación el mapa coroplético basándose en la tabla 'germany' para los polígonos y colores, y en la tabla 'anno_names' para superponer las etiquetas de texto.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.