%let name=sas_worldwide; filename odsout '.'; /* Using data from ... http://www.sas.com/offices/intro.html */ /* I got some of these from proc geocode, and some I looked up using maps.google.com */ data cities; infile datalines pad truncover; input lat long city $ 29-55 country $ 57-100; datalines; 47.6103 -122.3332 Seattle, WA United States 38.8945 -77.0750 Arlington, VA United States 32.9601 -96.8217 Dallas, TX United States 30.4224 -97.8526 Austin, TX United States 40.0695 -75.4684 Wayne, PA United States 40.4387 -80.0026 Pittsburgh, PA United States 45.5335 -122.8810 Beaverton, OR United States 35.2274 -80.8434 Charlotte, NC United States 35.8288 -78.7652 Cary, NC United States 40.7618 -73.9822 New York, NY United States 40.6428 -74.6380 Bedminster, NJ United States 44.9762 -93.2730 Minneapolis, MN United States 42.4770 -83.2460 Detroit, MI United States 42.5984 -70.9714 Middleton, MA United States 42.3896 -71.1459 Cambridge, MA United States 42.3478 -71.0827 Boston, MA United States 39.0813 -77.1451 Rockville, MD United States 38.9312 -94.6953 Overland Park, KS United States 41.8852 -87.6224 Chicago, IL United States 33.8491 -84.3497 Atlanta, GA United States 25.7721 -80.1877 Miami, FL United States 41.7011 -72.5351 Glastonbury, CT United States 39.5992 -104.8918 Greenwood Village, CO United States 37.7889 -122.4024 San Francisco, CA United States 32.9031 -117.2084 San Diego, CA United States 33.6769 -117.8376 Irvine, CA United States 33.4802 -112.0741 Phoenix, AZ United States . . ? Ukraine 47.4181 8.6299 8306 Wangen-Brüttisellen Switzerland 48.1470 17.1187 SAS Slovakia Slovakia 1.2776 103.8486 AP HQ Office Singapore 26.2564 50.1113 Khobar Saudi Arabia 55.7463 37.6597 Moscow Russian Federation 44.4316 26.0987 Bucuresti Romania 33.7014 73.0604 Islamabad Pakistan 24.9013 67.0303 Karachi Pakistan 31.5621 74.3499 Lahore Pakistan 3.1343 101.6876 Kuala Lumpur Malaysia 54.6801 25.2905 Vilnius Lithuania 56.9539 24.1012 Riga Latvia 32.1628 34.8424 Herzliya Israel 53.3413 -6.2731 Dublin Ireland 25.0457 54.5361 Dubai United Arab Emirates 48.1966 16.3424 Vienna Austria 41.0139 28.9603 Istanbul Turkey -34.8833 -56.1833 Montevideo Uruguay 14.5528 121.0205 Makati Philippines -6.1667 106.8167 Jakarta Indonesia 59.3578 18.0007 Solna Sweden 25.0439 121.4972 Taipei Taiwan 13.7342 100.5292 Bangkok Thailand -26.1992 28.0564 Johannesburg South Africa -33.9253 18.4228 Cape Town South Africa -25.7250 28.2233 Pretoria South Africa 51.5720 -0.7779 Marlow, Buckinghamshire United Kingdom 53.4722 -2.2381 Manchester United Kingdom 55.8494 -4.2414 Glasgow United Kingdom 51.5122 -0.0650 London United Kingdom 37.5631 126.9769 Seoul Korea, South 35.6754 139.7694 Tokyo Japan 34.6762 135.4739 Osaka Japan 52.2478 21.0208 Warsaw Poland 45.4739 9.1867 Milano Italy 18.5324 73.8667 Pune India 18.9298 72.8270 Mumbai India 28.6608 77.1489 Delhi India 12.9819 77.5931 Bangalore India 50.0612 14.4259 Praha Czech Republic 38.0365 23.8025 Amaroussio Greece 22.2864 114.2179 Taikoo Shing Hong Kong 47.6283 19.1271 Kapcsolat Hungary 19.4243 -99.1750 Mexico DF Mexico 25.6582 -100.4019 San Pedro | Monterrey Mexico 40.4239 -3.7089 Madrid Spain 38.7222 -9.1928 Lisbon Portugal 60.1858 24.6335 Espoo Finland 39.9118 116.3792 Beijing China 31.2285 121.4702 Shanghai China 23.1247 113.2386 Guangzhou China -33.4500 -70.6667 Santiago Chile 43.6650 -79.4081 Toronto Canada 45.3922 -75.7028 Ottawa Canada 45.4914 -73.5558 Montreal Canada 46.8097 -71.2456 Quebec Canada 51.0119 -113.9856 Calgary Canada 53.5522 -113.5003 Edmonton Canada 49.2753 -123.1325 Vancouver Canada 46.0621 14.5052 Ljubljana Slovenia 45.8103 15.9572 Zagreb Croatia 44.8268 20.4563 Belgrade Serbia -33.9689 151.1283 Sydney Australia -34.9244 138.5636 Adelaide Australia -27.5306 153.0286 Brisbane Australia -35.3106 149.1311 Canberra Australia -37.8808 145.0311 Melbourne Australia -31.9397 115.7619 Perth Australia -41.2623 174.7764 Wellington New Zealand -36.8667 174.7667 Auckland New Zealand 30.0567 31.2358 Cairo Egypt 4.6000 -74.0833 Bogota Colombia -12.0500 -77.0500 Lima Peru 10.5000 -66.9333 Caracas Venezuela, Bolivarian Republic of -23.5575 -46.5823 Sao Paulo Brazil -22.9062 -43.1748 Rio de Janeiro Brazil -15.7833 -47.9167 Brasilia Brazil 59.4167 24.7500 Tallin Estonia 55.6796 12.5795 Copenhagen Denmark 56.0425 9.9256 Skanderborg Denmark 50.8199 4.5147 Tervuren Belgium 52.2842 5.1922 Huizen Netherlands 59.9180 10.7227 Oslo Norway 49.4198 8.7287 Heidelberg Germany 48.6928 2.6061 Brie-Comte-Robert France -34.6134 -58.3641 Buenos Aires Argentina ; run; data dot_anno; set cities (where=(long^=. and lat^=.)); anno_flag=1; run; data mymap; set mapsgfk.world (where=(density<=1 and idname^='Antarctica')); run; /* combine, project, and separate */ data combined; set mymap dot_anno; run; proc gproject data=combined out=combined latlong eastlong degrees dupok project=cylindri; id id; run; data mymap dot_anno; set combined; if anno_flag=1 then output dot_anno; else output mymap; run; data dot_anno; set dot_anno; length function color $8 style $35; xsys='2'; ysys='2'; hsys='3'; when='a'; length href_string html $200; href_string='http://www.sas.com/offices/intro.html'; html='title='||quote( trim(left(city))||', '||trim(left(country)))|| ' href='||quote(trim(left(href_string))); function='pie'; rotate=360; size=.7; style='psolid'; color='yellow'; output; style='pempty'; color='black'; html=''; output; run; /* This is the 'data' that will color the countries in the map that have a SAS office, and give those countries html mouse-over text. */ proc sql noprint; create table mapdata as select unique country as idname from cities; quit; run; data mapdata; set mapdata; length myhtml $100; myhtml='title='||quote(trim(left(idname))); colorvar=1; run; goptions device=png; goptions xpixels=1200 ypixels=600; goptions cback=cx42C0FB; goptions border; ODS LISTING CLOSE; ODS HTML path=odsout body="&name..htm" (title="SAS Offices, worldwide map") style=htmlblue; goptions gunit=pct htitle=4 htext=2.5 ftitle="albany amt/bold" ftext="albany amt"; title1 ls=1.5 "SAS Offices, Worldwide"; footnote1 ls=1.0 c=gray33 link="http://www.sas.com/offices/intro.html" "October 2009 snapshot, based on data in http://www.sas.com/offices/intro.html (just a proof-of-concept, not guaranteed complete, or accurate!)"; pattern1 v=msolid c=burlywood; proc gmap map=mymap data=mapdata all; id idname; choro colorvar / discrete nolegend cdefault=graydd coutline=gray55 anno=dot_anno html=myhtml des='' name="&name"; run; quit; ODS HTML CLOSE; ODS LISTING;