creating maps with sas/graph - drill downs, pop-ups, and animation
TRANSCRIPT
Creating Maps with Creating Maps with SAS/GRAPHSAS/GRAPH
- Drill Downs, Pop-Ups, and - Drill Downs, Pop-Ups, and AnimationAnimation
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Today’s talk
• Basic capabilities of PROC GMAP • Knowledge of SAS map data sets • Colors and gray scales for choropleth maps • Outline map • Direct a graphics output to GIF and PDF files;• New features: drill-downs, pop-ups, and
animation.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
QUICK LOOK AT BASICS• STATIC DISPLAYS
FOUR MAP TYPES CHOROPLETH PRISM BLOCK SURFACE
• DRILL-DOWNS• POP-UPS• ANIMATION
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
DATA SETS USED
1. CANADIAN POPULATION
SOURCE: STATISTICS CANADA
2. Data sets that define the boundaries of areas that are mapped.
SAS/GRAPH provides map data sets that allow one to create
one or more maps of nearly every country in the world. All the
maps are located in a MAPS subdirectory under the SAS root
directory. Note, SAS/GRAPH maps must be installed to use the
SAS-supplied maps.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAP
Creates two-dimensional maps in which
values of the specified response
variables are represented by varying
patterns and colors.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAPProduction of a map with the GMAP procedure requires both a responseand a map data set.
• SAS-SUPPLIED MAP OF CANADIAN PROVINCES (MAP)contains the information needed to draw map boundaries.
• 2001 POPULATION DATA (RESPONSE)Contains the data that are to be displayed in a map.
• MATCH MAP AND RESPONSE DATA SETSCOMMON VARIABLESAME NAME, SAME TYPESIMILAR TO DATA STEP MERGE
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH• 2001 POPULATION DATA: produces a map of the distribution of population
data canada_pop;
Input province: $2. province_name & : $21. pop_2001: comma.;
Label pop_2001 = 'POPULATION 2001‘ ;
format pop: area: comma10.;
datalines;
10 NEWFOUNDLAND 512,930
11 PRINCE EDWARD ISLAND 135,294
12 NOVA SCOTIA 908,007
13 NEW BRUNSWICK 729,498
24 QUEBEC 7,237,479
35 ONTARIO 11,410,046
46 MANITOBA 1,119,583
47 SASKATCHEWAN 978,933
48 ALBERTA 2,974,807
59 BRITISH COLUMBIA 3,907,738
60 YUKON 28,674
61 NORTHWEST TERRITORIES 64,105;
run;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAP
goptions reset=all;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX01.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;
choro pop_2001; /*specifies the variable that are represented on the map */ run;quit;
title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAP
goptions reset=all;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX01.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;choro pop_2001 / levels=3; /*control the number of colors*/run;quit;
title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAP
goptions reset=all;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX01.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;
/*control the number of color: the number of response levels */choro pop_2001 / discrete; *format pop_2001 popfmt.;run;quit;
title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAP
• USE FEW OPTIONS
DEFAULT PATTERN SAS automatically determines the midpoints and assigns patterns to the map
areas.
LEVELS OPTION
DISCRETE OPTION + USER-WRITTEN FORMAT
LEGENDthe CHORO statement produces a legend unless you use the NOLEGEND option
or user-defined legend.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 1: CHOROPLETH MAP NOTICE
• FONTS
• DEFAULT COLOR SELECTION
• POSITION AND LAYOUT OF LEGEND
(Nunavut is not shown separated from the Northwest Territories since
current SAS/GRAPH maps of Canada contain no boundary definitions
for Nunavut.)
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 2 PRISM MAP (same data)
• Creates three-dimensional prism maps in which levels of magnitude of the specified response variables are represented by polyhedrons (raised polygons) of varying height, pattern, and color.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 2 PRISM MAP (same data)
goptions reset=all;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX02.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;
prism pop_2001; /*specifies the variable that are represented on the map */ run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 2 PRISM MAP (same data)
goptions reset=all;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX02.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;
/* change the viewing angle of the map */prism pop_2001 / zview=10.0 yview=-3.0 xview=-5.0;run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 2 : PRISM MAP
• CHANGE VIEWING ANGLE
The XVIEW, YVIEW, and ZVIEW specify the viewing position coordinates for the map.
The XVIEW, YVIEW, and ZVIEW options on the RISM statement change the viewing position from the default value of a position above and to the south of the center of the map (values of .5, -
2.0, and 3.0 for the x, y, and z views respectively).
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 2 PRISM MAP (same data)
goptions reset=all;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX02.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;
/* change the viewing angle of the map and light source */prism pop_2001 / zview=10.0 yview=-3.0 xview=-5.0 ylight=2;run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 2 : PRISM MAP
• CHANGE LIGHT SOURCE
XLIGHT, YLIGHT specify the coordinates of the imagined light source in the map coordinate system. The position of the light source controls the appearance of the edges of the map areas.
The XLIGHT= and YLIGHT= options are used to shadow the
side polygons of the prisms.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 2 : PRISM MAP
NOTICE
• USING TWO FEATURES TO CONTRAST MAP
AREAS - COLOR AND PRISM HEIGHT (GOOD IDEA?)
• MIGHT HAVE TO ADJUST VIEWING ANGLE
TO MAKE ALL MAP AREAS VISIBLE
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 3: BLOCK MAP
Creates three-dimensional block maps on which levels of magnitude of the specified response variables are represented by blocks of varying height, pattern, and color.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 3 BLOCK MAP (same data)
*** reset all graphics options to default values;
options reset=all;
*** create a block map with a title and a footnote;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX03.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;block pop_2001;run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 3 BLOCK MAP (same data)
*** reset all graphics options to default values;
options reset=all;
*** create a block map with a title and a footnote;
title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX03.SAS ';
pattern1 v=s c=red r=12;pattern2 v=ms c=green;
proc gmap data=canada_pop map=maps.canada2;id province;block pop_2001 / levels=12 shape=cylinder blocksize=5
xview=1.8 yview=-1.2 zview=1.0 nolegend coutline=black;
run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 3: BLOCK MAP • PATTERN statementscreate PATTERN definitions that define the color and type of area fill for
patterns used in map areas in choropleth, block, and prism maps;
blocks in block maps.
COLOR=pattern-color
VALUE=block/map-pattern • block-pattern: EMPTY / SOLID• map-pattern: MEMPTY / MSOLID
REPEAT=number-of-times specifies the number of times that a PATTERN definition is applied before
the next PATTERN definition is used. By default, REPEAT=1.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 3: BLOCK MAP • PATTERN statements
Generating Pattern Sequences pattern1 v=s c=red r=12;pattern2 v=ms c=green;
– specifying that all blocks are red (12 provinces) and that the map areas are green.
• Options used on the BLOCK statement
– Twelve different levels are requested (one per province).– The shape and size of the blocks are changed. Just as was done with the
PRISM map, the viewing angle is changed. – The block height, not color, displays population information.– The legend is suppressed (NOLEGEND). – By default, the map areas are outlined in their own color (in this example, green)
so the COUTLINE option is used to specify a color for provincial boundaries.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 3: BLOCK MAP
NOTICE
• LEVELS OPTION + PATTERN STATEMENTS
• CHANGE VIEWING ANGLE
• CHANGE BLOCK SHAPE AND SIZE
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 4 SURFACE MAP
Creates three-dimensional surface maps in which levels of magnitude of the specified response variables are represented by spikes of varying height.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 4 SURFACE MAP
*** reset all graphics options to default values;goptions reset=all;
*** create a surface map with a title and footnote;title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX04.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;surface pop_2001;run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 4 SURFACE MAP
*** reset all graphics options to default values;goptions reset=all;
*** create a surface map with a title and footnote;title 'CANADIAN POPULATION BY PROVINCE, 2001';footnote j=r 'EX04.SAS ';
proc gmap data=canada_pop map=maps.canada2;id province;surface pop_2001 / rotate=80 tilt=45 nlines=100 constant=30 cbody=red;run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHEXAMPLE 4 SURFACE MAP
Using a spike at the center of each map area displays map data. The height of the spike shows relative values of population. The map is intended to show a gradient in population rather than exact values.
• ROTATION , TILT options rotate the map about the z-axis and x-axis respectively (the default is 70 degrees for both options).
• NLINES option controls the number of lines used on the map surface (default 50, range 50-100).
• CONSTANT controls the appearance of the spikes (both width and height). By default, constant=10...Values greater than 10 yield spikes that are wider at the base. Values less than 10 yield spikes that are narrower at the base...
• CBODY specifies the color that is used to draw the surface map.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
EXAMPLE 4 SURFACE MAP
NOTICE
• NO LEGEND
• EFFECT OF VARIOUS OPTIONS
• LIMITED USE OF COLOR (CBODY OPTION)
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHSAS-SUPPLIED MAP DATA SETS
As stated earlier, SAS/GRAPH provides map data sets that allow one
to create one or more maps of nearly every country in the world.
At a minimum, a map data set contains three variables:
• X and Y
(both numeric) that contain the coordinates of map areas (commonly, but not necessarily longitude and latitude);
• ID a variable that contains a value for the geographic area associated
with each pair of X-Y variables.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
SAS-SUPPLIED MAP DATA SETS
Two other variables that may be present:
• SEGMENT is used by the GMAP procedure to draw map areas that may comprise more than one polygon.
• DENSITY can be used to reduce the number of X-Y coordinates used to draw map boundaries when less detailed maps are permissible.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
SAS-SUPPLIED MAP DATA SETS
• SPECIAL DATA SET (METAMAPS)
a data set with information about maps in the SAS library.
*** display a list of maps in the MAPS library for Canada***;
proc print data=maps.metamaps label;
var country memname;
where memtype eq 'DATA' and type eq 'GRAPH' and country = 'CANADA';
run;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
SAS-SUPPLIED MAP DATA SETS
• SPECIAL DATA SET (METAMAPS)
Library Name of Member Country Name
CANADA CANADA CANADA CANADA2 CANADA CANADA3 CANADA CANADA4 CANADA CANCENS
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHSAS-SUPPLIED MAP DATA SETS• Four map data sets for Canada:
CANADA, CANADA2 draw maps of census districts within Canadian provinces.
CANADA3, CANADA4 draw maps of Canadian provinces
• The data set CANCENS contains information about map areas:– province numbers and names – region numbers and names
CREATE MAPS FROM SHAPEFILES (V9)version 9 has a new procedure, PROC MAPIMPORT, that allows one
to convert shapefiles to map data sets.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHPROJECTED AND UNPROJECTED MAP DATA SETS
Contents of CANADA2 and CANADA4 Map Data Sets
*******CANADA2 - 4,302 observations# Variable Type Len Label1 PROVINCE Char 2 Province Abbreviation2 SEGMENT Num 5 Province Segment Number3 X Num 6 X Coordinate4 Y Num 6 Y Coordinate
******* CANADA4 - 31,311 observations# Variable Type Len Label2 DENSITY Num 5 Density for Lower Resolution Maps1 PROVINCE Char 2 Province Abbreviation3 SEGMENT Num 5 Province Segment Number4 X Num 6 Unprojected Longitude in Radians5 Y Num 6 Unprojected Latitude in Radians
There are two differences: CANADA4 contains over seven times the number of X-Ycoordinates as CANADA2; CANADA4 coordinates are unprojected.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
PROJECTED AND UNPROJECTED MAP DATA SETS
There are several notable differences between the output of two maps:
• the map is backwards; • the shape is distorted; • there is much more detail in the map boundaries.
Another SAS/GRAPH procedure must be used prior to PROC GMAP toproject the unprojected map coordinates.
*** project the CANADA4 map data set;proc gproject data=maps.canada4 out=c4_projected;id province;run;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
PROJECTED AND UNPROJECTED MAP DATA SETS
NOTICE
• VARIABLES (LABELS)
• NUMBER OF OBSERVATIONS
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
User-Defined COLORS AND GRAY SCALES
IN CHOROPLETH MAPS
• PATTERN STATEMENTUSER-DEFINED COLOR SCHEME
http://www.colorbrewer.com*** choose a set of colors - sequentially increasing shades of blue;
pattern1 v=ms c=cxeff3ff;
pattern2 v=ms c=cxbdd7e7;
pattern3 v=ms c=cx6baed6;
pattern4 v=ms c=cx2171b5;
• LEGEND STATEMENT*** specify parameters for the legend;
legend1origin=(75,60)pct across=1 mode=share
label=(position=top j=c 'POPULATION PER' j=c 'SQUARE KILOMETER')
shape=bar(3,4)pct cborder=blue;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Create an Outline Map of British Columbia
with Census Districts
When a map showing only map boundaries (no data) is needed.
• USE MAP DATA SET AS RESPONSE DATA SET (ALL OPTION)
• USE UNPROJECTED MAP DATA SETS (Canada3)
• Only one observation need be used for the response data set.
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPHCreate an Outline Map of British Columbia with Census Districts
*** reset all graphics options to default values;goptions reset=all;
proc gproject data=maps.canada3 out=BC;where province eq '59';id cdcode;run;
pattern v=me;
title 'BRITISH COLUMBIA REGIONS';footnote j=r 'EX14.SAS ';proc gmap data=BC (obs=1) map=BC all;id cdcode;choro cdcode / nolegend;run;quit;title;footnote;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
ALTERNATIVE OUTPUT DESTINATIONSThe file can easily be posted on the web or incorporated into other programs (e.g. PowerPoint).
• GIF (FILENAME STATEMENT)goptions reset=all
device=gif /* select the GIF device driver*/
gsfname=mapout /* specify a FILEREF for the GIF file */
ftext='Arial/bo‘ /* select a font */
xpixels=800 /* map size */
ypixels=600 /* map size */;
filename mapout ‘C:\My sas maps\map1.gif';
• PDF (ODS)goptions reset=all ftext='Helvetica/bo‘ rotate=landscape;
ods pdf file= ‘C:\my sas maps\map1.gif ' notoc;
......
ods pdf close;
Creating Maps with SAS/GRAPHCreating Maps with SAS/GRAPH
NEW FEATURESallow for the creation of maps with dynamic features:
• Drill Downsmap areas can be hyperlinked to additional information;
• Pop-Ups additional information can be provided to map users
when a mouse cursor passes over a map area;
• Animation a time dimension can be added using animation. (many
gif files, layered into one file)