Publicado el :

Mapa de los 16 Länders de Alemania

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
1 
2DATA germany;
3SET maps.germany;
4original_order=_n_;
5RUN;
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!
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 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!
1PROC GREMOVE DATA=germany out=germany;
2BY state2;
3id id;
4RUN;
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!
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 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!
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;
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.