<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic ERROR: Procedure SGMAP not found. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431601#M106784</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am currently working with North Korea Missile Data file. The code along with the data can be found here:&amp;nbsp;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/Mapping-North-Korean-Missile-Tests-with-Proc-SGMAP/ta-p/426743" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/Mapping-North-Korean-Missile-Tests-with-Proc-SGMAP/ta-p/426743&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I followed the exact code and it still gives me&amp;nbsp;ERROR: Procedure SGMAP not found.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then I worked on other similar project related to SGMAP with code posted here on blogs. For some reason, my SGMAP code gives error statement all the time.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please suggest.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;First Cut&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I believe that creating a great map is as much about art as science so I generally start out with a simple rendering of my data and build on that incrementally until I am happy with the result. I firstly imported the data using Proc Import.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;import&lt;/SPAN&gt; &lt;SPAN class="token statement"&gt;file&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"/folders/myshortcuts/Dropbox/north_korea_missile_test_database.xlsx"&lt;/SPAN&gt;
            out&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests
            dbms&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;xlsx &lt;SPAN class="token keyword"&gt;replace&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token comment"&gt;/*--- Use Excel column headings as SAS variable names. */&lt;/SPAN&gt; 
  getnames&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;yes&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token comment"&gt;/*--- Specify Excel sheet name and data range to import. */&lt;/SPAN&gt;
  &lt;SPAN class="token function"&gt;range&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'Facilities$A2:G23'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The latitude and longitude variables are in character format in the file so I needed to create numeric versions and discard one test where the location was “Unknown”.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token comment"&gt;/* Convert the latitude and longitude values to numeric */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; nktests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; nktests&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;where&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;facility &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"Unknown"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	lat_num  &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;latitude&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; best&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	long_num &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;longitude&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; best&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Having done that, I’m now ready to try my first map. Here’s the code I used:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token statement"&gt;title&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'North Korean Missile Tests'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; sgmap plotdata&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  openstreetmap&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  bubble x&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;long_num y&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;lat_num 
    size&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;number_of_tests &lt;SPAN class="token operator"&gt;/&lt;/SPAN&gt; 
    name&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'Facilities'&lt;/SPAN&gt; datalabel&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;facility 
    datalabelattrs&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;color&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;red&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; datalabelpos&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;right&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  keylegend &lt;SPAN class="token string"&gt;'Facilities'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the result:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-center"&gt;&lt;SPAN class="lia-message-image-wrapper"&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/17779i2AFFE1DDBBB2F26B/image-size/large?v=1.0&amp;amp;px=600" border="0" alt="First Cut.png" title="First Cut.png" /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;So far so good - I have a map but there are some things I’m not 100% happy with:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Although SAS does its best not to overlap the labels on a bubble plot in this case the bubbles are too numerous and close together for it to be successful;&lt;/LI&gt;&lt;LI&gt;I’m not happy with my chosen color for the labels – it isn’t clear enough against the base map;&lt;/LI&gt;&lt;LI&gt;The title could be more descriptive i.e. what does the relative size of the bubbles mean;&lt;/LI&gt;&lt;LI&gt;You should always give an attribution for your data (it may even be a requirement for permission to use it);&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Second Cut&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In order to solve the problem of the overlapping labels I’m only going to show a label for the most used site and at the same time I’ll take the opportunity to make the label bigger, change the color and add some descriptive text. In order to discover which is the most used site I’ll use Proc Rank descending with ties=low. If, as in this case, there are one or more records for a rank the smallest of the ranks is assigned. In this case both the Kittaeryong Missile Base and the North Wonsan facility have held 20 tests therefore we’ll be showing a label for both of these facilities.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;One useful feature of the way labels work in Proc SGMAP is that if there is no data for an observation in the label variable then SAS ignores that row when rendering the labels. I’m therefore going to create a label for each of the observations where the rank is equal to 1. I do this in a data step creating a new variable (called newlabel) which holds the facility name plus the number of tests carried out there. I’ll also take the opportunity to improve my header and add some footer information giving the source and an explanation of what the relative size of the bubbles means. Here is the code for the second cut of my map&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token comment"&gt;/* Determine which facility is used the most */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sort&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; descending number_of_tests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;rank&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests out&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktestrank descending ties&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;low&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;var&lt;/SPAN&gt; number_of_tests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;ranks&lt;/SPAN&gt; numrank&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token comment"&gt;/* Set a label for the most used facility/facilities */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; nktests2&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; nktestrank&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; numrank&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; 
          newlabel&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;strip&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;facility&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;" - Number of Tests="&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;put&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;number_of_tests&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;2&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token statement"&gt;title&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'North Korean Missile Tests'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
title2 &lt;SPAN class="token string"&gt;'Location of Launch Facilities'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token statement"&gt;footnote&lt;/SPAN&gt; j&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;l &lt;SPAN class="token string"&gt;'Data from The James Martin Center for Nonproliferation Studies'&lt;/SPAN&gt;
 j&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;r &lt;SPAN class="token string"&gt;'Relative Number of Launches per Site'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; sgmap plotdata&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests2&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 openstreetmap&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 bubble x&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;long_num y&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;lat_num size&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;number_of_tests &lt;SPAN class="token operator"&gt;/&lt;/SPAN&gt; 
   datalabel&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;newlabel datalabelattrs&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;color&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;black size&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;10&lt;/SPAN&gt;pt&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; 
   datalabelpos&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;right&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the result:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 28 Jan 2018 12:34:45 GMT</pubDate>
    <dc:creator>aaaaaaaa21</dc:creator>
    <dc:date>2018-01-28T12:34:45Z</dc:date>
    <item>
      <title>ERROR: Procedure SGMAP not found.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431601#M106784</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am currently working with North Korea Missile Data file. The code along with the data can be found here:&amp;nbsp;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/Mapping-North-Korean-Missile-Tests-with-Proc-SGMAP/ta-p/426743" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/Mapping-North-Korean-Missile-Tests-with-Proc-SGMAP/ta-p/426743&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I followed the exact code and it still gives me&amp;nbsp;ERROR: Procedure SGMAP not found.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then I worked on other similar project related to SGMAP with code posted here on blogs. For some reason, my SGMAP code gives error statement all the time.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please suggest.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;First Cut&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I believe that creating a great map is as much about art as science so I generally start out with a simple rendering of my data and build on that incrementally until I am happy with the result. I firstly imported the data using Proc Import.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;import&lt;/SPAN&gt; &lt;SPAN class="token statement"&gt;file&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"/folders/myshortcuts/Dropbox/north_korea_missile_test_database.xlsx"&lt;/SPAN&gt;
            out&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests
            dbms&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;xlsx &lt;SPAN class="token keyword"&gt;replace&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token comment"&gt;/*--- Use Excel column headings as SAS variable names. */&lt;/SPAN&gt; 
  getnames&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;yes&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token comment"&gt;/*--- Specify Excel sheet name and data range to import. */&lt;/SPAN&gt;
  &lt;SPAN class="token function"&gt;range&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'Facilities$A2:G23'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The latitude and longitude variables are in character format in the file so I needed to create numeric versions and discard one test where the location was “Unknown”.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token comment"&gt;/* Convert the latitude and longitude values to numeric */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; nktests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; nktests&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;where&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;facility &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"Unknown"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	lat_num  &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;latitude&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; best&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	long_num &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;longitude&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; best&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Having done that, I’m now ready to try my first map. Here’s the code I used:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token statement"&gt;title&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'North Korean Missile Tests'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; sgmap plotdata&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  openstreetmap&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  bubble x&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;long_num y&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;lat_num 
    size&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;number_of_tests &lt;SPAN class="token operator"&gt;/&lt;/SPAN&gt; 
    name&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'Facilities'&lt;/SPAN&gt; datalabel&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;facility 
    datalabelattrs&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;color&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;red&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; datalabelpos&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;right&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  keylegend &lt;SPAN class="token string"&gt;'Facilities'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the result:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-center"&gt;&lt;SPAN class="lia-message-image-wrapper"&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/17779i2AFFE1DDBBB2F26B/image-size/large?v=1.0&amp;amp;px=600" border="0" alt="First Cut.png" title="First Cut.png" /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;So far so good - I have a map but there are some things I’m not 100% happy with:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Although SAS does its best not to overlap the labels on a bubble plot in this case the bubbles are too numerous and close together for it to be successful;&lt;/LI&gt;&lt;LI&gt;I’m not happy with my chosen color for the labels – it isn’t clear enough against the base map;&lt;/LI&gt;&lt;LI&gt;The title could be more descriptive i.e. what does the relative size of the bubbles mean;&lt;/LI&gt;&lt;LI&gt;You should always give an attribution for your data (it may even be a requirement for permission to use it);&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Second Cut&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In order to solve the problem of the overlapping labels I’m only going to show a label for the most used site and at the same time I’ll take the opportunity to make the label bigger, change the color and add some descriptive text. In order to discover which is the most used site I’ll use Proc Rank descending with ties=low. If, as in this case, there are one or more records for a rank the smallest of the ranks is assigned. In this case both the Kittaeryong Missile Base and the North Wonsan facility have held 20 tests therefore we’ll be showing a label for both of these facilities.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;One useful feature of the way labels work in Proc SGMAP is that if there is no data for an observation in the label variable then SAS ignores that row when rendering the labels. I’m therefore going to create a label for each of the observations where the rank is equal to 1. I do this in a data step creating a new variable (called newlabel) which holds the facility name plus the number of tests carried out there. I’ll also take the opportunity to improve my header and add some footer information giving the source and an explanation of what the relative size of the bubbles means. Here is the code for the second cut of my map&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token comment"&gt;/* Determine which facility is used the most */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sort&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; descending number_of_tests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;rank&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests out&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktestrank descending ties&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;low&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;var&lt;/SPAN&gt; number_of_tests&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;ranks&lt;/SPAN&gt; numrank&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token comment"&gt;/* Set a label for the most used facility/facilities */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; nktests2&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; nktestrank&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; numrank&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; 
          newlabel&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;strip&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;facility&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;" - Number of Tests="&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;put&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;number_of_tests&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;2&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token statement"&gt;title&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'North Korean Missile Tests'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
title2 &lt;SPAN class="token string"&gt;'Location of Launch Facilities'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token statement"&gt;footnote&lt;/SPAN&gt; j&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;l &lt;SPAN class="token string"&gt;'Data from The James Martin Center for Nonproliferation Studies'&lt;/SPAN&gt;
 j&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;r &lt;SPAN class="token string"&gt;'Relative Number of Launches per Site'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; sgmap plotdata&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;nktests2&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 openstreetmap&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 bubble x&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;long_num y&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;lat_num size&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;number_of_tests &lt;SPAN class="token operator"&gt;/&lt;/SPAN&gt; 
   datalabel&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;newlabel datalabelattrs&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;color&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;black size&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;10&lt;/SPAN&gt;pt&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; 
   datalabelpos&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;right&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the result:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 28 Jan 2018 12:34:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431601#M106784</guid>
      <dc:creator>aaaaaaaa21</dc:creator>
      <dc:date>2018-01-28T12:34:45Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR: Procedure SGMAP not found.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431609#M106789</link>
      <description>&lt;P&gt;To make your long story short i quote:&amp;nbsp;&lt;STRONG&gt; "I followed the exact code and it still gives me&amp;nbsp;ERROR: Procedure SGMAP not found. "&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Usually the message of &lt;STRONG&gt;procedure not found&lt;/STRONG&gt;&amp;nbsp; is the result of missing some licence or module was not installed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is it the first time you use SGMAP procedure? Have you used it already successfuly on same installlation of sas?&lt;/P&gt;
&lt;P&gt;Check you setinit log. Maybe your licence ended ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 28 Jan 2018 14:12:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431609#M106789</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2018-01-28T14:12:31Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR: Procedure SGMAP not found.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431617#M106794</link>
      <description>&lt;P&gt;What version of SAS are you running? PROC SGMAP was added to the recent SAS 9.4M5 release.&lt;/P&gt;</description>
      <pubDate>Sun, 28 Jan 2018 16:27:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431617#M106794</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2018-01-28T16:27:30Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR: Procedure SGMAP not found.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431630#M106798</link>
      <description>&lt;P&gt;Thank you.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 28 Jan 2018 22:13:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-Procedure-SGMAP-not-found/m-p/431630#M106798</guid>
      <dc:creator>aaaaaaaa21</dc:creator>
      <dc:date>2018-01-28T22:13:58Z</dc:date>
    </item>
  </channel>
</rss>

