<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Axis Maps Blog</title>
	
	<link>http://www.axismaps.com/blog</link>
	<description>Cartography. Visualization. Design.</description>
	<lastBuildDate>Tue, 23 Apr 2013 16:29:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AxisMapsBlog" /><feedburner:info uri="axismapsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>43.078646</geo:lat><geo:long>-89.377276</geo:long><item>
		<title>Axis Maps Summer Internship</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/6plZRqxYnS0/</link>
		<comments>http://www.axismaps.com/blog/2013/04/axis-maps-summer-internship/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 15:59:07 +0000</pubDate>
		<dc:creator>David Heyman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1711</guid>
		<description><![CDATA[This summer we&#8217;re going to try something new by taking on an intern. Here are the details: What: You&#8217;ll be making an interactive map of physician performance across New York. It&#8217;s a relatively small dataset covering 120 physician practices and 12 measures focusing on heart care. The map is in partnership with our friends and colleagues [...]]]></description>
				<content:encoded><![CDATA[<p>This summer we&#8217;re going to try something new by taking on an intern. Here are the details:</p>
<p><b>What: </b>You&#8217;ll be making an interactive map of physician performance across New York. It&#8217;s a relatively small dataset covering 120 physician practices and 12 measures focusing on heart care. The map is in partnership with our friends and colleagues at <a href="http://www.ipro.org" target="_blank">IPRO</a> and will be used to improve the quality of care in New York.<br />
We want you to see the entire process of making a map so you will be responsible for this project from start to finish including:</p>
<ol>
<li>Working with the client to learn about their data and functionality requirements</li>
<li>Preparing the data to go into the map</li>
<li>Designing the map and UI elements</li>
<li>Building the map in javascript</li>
<li>Testing the map</li>
</ol>
<p>We&#8217;ll be supporting you every step of the way with project planning,  best practices, technical assistance, and design reviews.</p>
<p><b>When: </b>8 weeks starting June 17th</p>
<p><b>Who: </b>We&#8217;re looking for anyone looking to sharpen their interactive cartography skills, however, students currently enrolled in undergraduate or graduate programs will be given preferential consideration. To get the most out of this experience you should:</p>
<ol>
<li>Have experience working with all types of data (spatial, tabular, databases, etc.)</li>
<li>Be somewhat comfortable with map and UI design</li>
<li>Know the basics of building a map in javascript</li>
<li>Be willing to learn all the stuff you don&#8217;t know</li>
</ol>
<p><b>Where: </b>Wherever you want to be with a computer and internet connection. We all work remotely at Axis Maps and keep in constant contact through Campfire, our group chat system. You&#8217;ll be expected to keep semi-regular business hours logged in to Campfire. We&#8217;ll have scheduled weekly status meetings (via Skype) dedicated to your project and you&#8217;ll be expected to attend regular Axis status meetings as well.</p>
<p><b>How much: </b>$3,500</p>
<p><b>To apply: </b>Please send:</p>
<ol>
<li>Cover letter</li>
<li>Resume / CV</li>
<li>Link to your online portfolio</li>
</ol>
<p>to David Heyman at <a href="mailto:info@axismaps.com">info@axismaps.com</a> by May 6th.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=6plZRqxYnS0:hdHUPNlQjuQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=6plZRqxYnS0:hdHUPNlQjuQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=6plZRqxYnS0:hdHUPNlQjuQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=6plZRqxYnS0:hdHUPNlQjuQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=6plZRqxYnS0:hdHUPNlQjuQ:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/6plZRqxYnS0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2013/04/axis-maps-summer-internship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2013/04/axis-maps-summer-internship/</feedburner:origLink></item>
		<item>
		<title>Yakkin’ ‘Bout Mappin’</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/NFCl2vtJZhk/</link>
		<comments>http://www.axismaps.com/blog/2012/11/yakkin-bout-mappin/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 15:18:48 +0000</pubDate>
		<dc:creator>Ben Sheesley</dc:creator>
				<category><![CDATA[Cartography]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1502</guid>
		<description><![CDATA[Last week, we made an election map that shows how counties voted in relationship to several different demographic variables. It gave us a chance to take value-by-alpha (VBA) mapping one step further than we did after the 2008 election. Back then, we produced a nice little static map. Our new, interactive map is a bit more [...]]]></description>
				<content:encoded><![CDATA[<p>Last week, we made an <a href="http://axismaps.com/election2012/">election map</a> that shows how counties voted in relationship to several different demographic variables. It gave us a chance to take value-by-alpha (VBA) mapping one step further than we did after the 2008 election. Back then, we produced a nice little <a href="http://www.axismaps.com/blog/2008/11/a-new-kind-of-election-map/?csspreview=true">static map</a>. Our new, interactive map is a bit more substantial, having a user interface, loading data, including a charting component, and displaying a data probe with details on mouseover.</p>
<p>Unlike our typical interactive mapping project, this one was rather small in scope. We wanted to make something that could come together quickly and easily and be seen before people stopped caring about the election. There was also no client, so we were free to work however we pleased in order to get done fast. In other words, no one was telling us that we had to make this work in IE7! All said and done, we devoted twenty-eight hours to the map before sharing it on Twitter.</p>
<p>Because the project was short and received a sustained, concentrated effort from each of us, a behind-the-scenes look at its development seems like it might be of interest to other mapmakers. If nothing else, it serves as an example of how three people, working in different parts of the world, interact together online to get work done. Something for the <a href="http://en.wikipedia.org/wiki/Human_geography">human geographers</a> out there, at least, if not for the cartographers.</p>
<p>What follows is our <a href="http://campfirenow.com/">Campfire</a> transcript covering the duration of the project. Outside of this transcript, there was no video, voice or other written communication between us. The language here has been smoothed out and edited somewhat in order to reduce each thought, question, or decision to its essence, although there are some direct quotations thrown into the mix.</p>
<p>We think about every project, large or small, slow or fast, client or not, in terms of three primary components: data, design, and code. They are <a href="http://www.axismaps.com/blog/2011/12/web-cartography-thats-like-google-maps-right/?csspreview=true">essential ingredients of web cartography</a> and <a href="http://www.axismaps.com/blog/2012/09/advice-to-the-aspiring-interactive-cartographer/?csspreview=true">what any aspiring cartographer should learn</a>. To that end, the transcript below has been tagged with colored dots that represent the predominant component in play at any given moment in time, plus a yellow dot for instances when our thoughts were mostly on project planning or management issues.</p>
<p>As you scan through, some patterns to note are:</p>
<ol>
<li>Entries pertaining to all three components, as well as a basic project plan, are found in the first 30 minutes.</li>
<li>The number of entries about data start out heavy and all but disappear on Day 2.</li>
<li>Entries about code pick up steam toward the middle and end of the project.</li>
<li>Entries about design appear rather consistently throughout the project, with a run of back and forth data-design entries in the middle of Day 1 and a similar back and forth run of code-design entries at the end of Day 2. Interesting!</li>
</ol>
<p><img style="border: none; background: none; margin: 0; padding: 0; display: inline;" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /> = Planning<br />
<img style="border: none; background: none; margin: 0; padding: 0; display: inline;" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="" width="16" height="16" /> = Data<br />
<img class="alignnone size-full wp-image-1505" style="border: none; background: none; margin: 0; padding: 0; display: inline;" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /> = Design<br />
<img class="alignnone size-full wp-image-1503" style="border: none; background: none; margin: 0; padding: 0; display: inline;" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /> = Code</p>
<p><strong>Day 1 &#8211; November 7, 2012</strong></p>
<table width="100%" border="0" cellpadding="10">
<colgroup>
<col width="100" /></colgroup>
<tbody>
<tr>
<td>8:15 AM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td class="quote">&#8220;Want to make a map?&#8221; <em>-Dave</em></td>
</tr>
<tr>
<td>8:15 AM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td class="quote">“Maybe just this one last time. Then I’m retiring.” <em>-Andy</em></td>
</tr>
<tr>
<td>8:20 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>How about an election-by-demographics map using the value-by-alpha (VBA) technique?</td>
</tr>
<tr>
<td>8:25 AM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>What&#8217;s the best technology setup for this? (Polymaps? CSS?).</td>
</tr>
<tr>
<td>8:25 AM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>Let&#8217;s get started this way:</p>
<ul>
<li>Andy: prepare the data</li>
<li>Dave: get interactive setup going</li>
<li>Ben: put together an interface design</li>
</ul>
</td>
</tr>
<tr>
<td>8:30 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>I&#8217;m exploring election data from The Guardian in Excel.</td>
</tr>
<tr>
<td>9:05 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>What kinds of demographic data would be worth mapping? Which are affected by geography?</td>
</tr>
<tr>
<td>9:05 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>What kind of chart should accompany the map?</td>
</tr>
<tr>
<td>9:15 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Margin of victory versus demographic variable by county sounds like a decent chart.</td>
</tr>
<tr>
<td>9:25 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here&#8217;s a Shapefile with geographic and election+demographic data.</td>
</tr>
<tr>
<td>9:25 AM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>We need to share this file with the world.</td>
</tr>
<tr>
<td>9:25 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Let&#8217;s explore the Shapefile in indiemapper.</td>
</tr>
<tr>
<td>9:30 AM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Design" width="16" height="16" /></td>
<td>We should wait and share this data once it&#8217;s all cleaned up.</td>
</tr>
<tr>
<td>9:40 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here&#8217;s a second version of the Shapefile with our map data.</td>
</tr>
<tr>
<td>10:00 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>What&#8217;s the best way to store the data? A series of JSON files?.</td>
</tr>
<tr>
<td>10:05 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>What scale is appropriate for the county boundary data? Will we need to zoom in?</td>
</tr>
<tr>
<td>10:10 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>There&#8217;s no need for detailed, large-scale county data.</td>
</tr>
<tr>
<td>10:10 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Let&#8217;s store data and geography separately.</td>
</tr>
<tr>
<td>10:10 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>I&#8217;m preparing the data in Google Refine.</td>
</tr>
<tr>
<td>10:20 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Anyone have good red/blue color specs?</td>
</tr>
<tr>
<td>10:25 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here are two 5-class sequential color schemes, one for red and one for blue.</td>
</tr>
<tr>
<td>10:30 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Looks like there are problems with this data.</td>
</tr>
<tr>
<td></td>
<td></td>
<td class="quote">&#8220;It has Obama winning most of Wyoming handily.&#8221; <em>-Andy</em></td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/wyoming.png?csspreview=true"><img class="size-thumbnail wp-image-1551 alignleft" title="wyoming" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/wyoming-150x150.png" alt="" height="150" /></a></td>
</tr>
<tr>
<td>10:40 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td class="quote">&#8220;In Colorado, that&#8217;s showing the Constitution Party candidate!&#8221; <em>-Andy</em></td>
</tr>
<tr>
<td>10:55 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>I&#8217;m fighting with pivot tables in Excel. Trying to get sums into columns instead of grouped in rows.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/pivot.png?csspreview=true"><img class="alignnone size-thumbnail wp-image-1642" title="pivot" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/pivot-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>11:00 AM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td class="quote">&#8220;Back in a moment&#8230; need to go do something to my car before it starts raining.&#8221; <em>-Andy</em></td>
</tr>
<tr>
<td>11:45 AM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here&#8217;s a third version of the Shapefile with our map data.</td>
</tr>
<tr>
<td>11:50 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here&#8217;s a VBA map showing county margin of victory by population.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_marginbypop.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1560" title="vba_marginbypop" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_marginbypop-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>11:50 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Switch to black background.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_marginbypop_black.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1563" title="vba_marginbypop_black" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_marginbypop_black-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>11:55 AM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Let&#8217;s go with 2-class winners. It&#8217;s too hard to see both change in color and alpha.</td>
</tr>
<tr>
<td>12:05 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here are new red and blue color specs.</td>
</tr>
<tr>
<td>12:10 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here&#8217;s a new VBA map showing county winner (2-class) by population.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypop_1.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1569" title="vba_winnerbypop_1" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypop_1-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>12:10 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td class="quote">&#8220;That&#8217;s looking pretty okay.&#8221; <em>-Dave</em></td>
</tr>
<tr>
<td>12:10 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>How is population classified? The map looks kinda bright, making it hard to see population differences.</td>
</tr>
<tr>
<td>12:10 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Should we go with equal-interval or unclassed population instead of quantiles?</td>
</tr>
<tr>
<td>12:20 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td class="quote">&#8220;Argh, this stupid data. Chicago is red!&#8221; <em>-Andy</em></td>
</tr>
<tr>
<td>12:25 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>For unclassed data, opacity should be a percentage of the max, right?</td>
</tr>
<tr>
<td>12:25 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td class="quote">&#8220;Los Angeles is ruining it for everybody.&#8221; <em>-Dave</em></td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypop_2.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1572" title="vba_winnerbypop_2" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypop_2-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>12:30 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>How about capping the population values at a certain threshold?</td>
</tr>
<tr>
<td>12:50 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here&#8217;s a new VBA map showing winner by population, capped at the 90th percentile.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypop_3.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1575" title="vba_winnerbypop_3" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypop_3-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>12:55 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>What about going with population density instead, in order to control for county size?</td>
</tr>
<tr>
<td>12:55 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here&#8217;s a new VBA map showing winner by population density.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypopdens.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1577" title="vba_winnerbypopdens" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/vba_winnerbypopdens-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>1:20 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here&#8217;s the fourth version of a Shapefile with our map data.</td>
</tr>
<tr>
<td></td>
<td></td>
<td class="quote">&#8220;Gave up on Excel, used a Python. Er, Python, not a Python. No snakes involved.&#8221; <em>-Andy</em></td>
</tr>
<tr>
<td>1:25 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>The user interface mockups are done.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/mockup.jpg?csspreview=true"><img class="alignleft size-thumbnail wp-image-1580" title="mockup" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/mockup-150x150.jpg" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>2:00 PM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Maybe we ought to go with D3 so we can use a map projection.</td>
</tr>
<tr>
<td>2:05 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Does using VBA even make sense for mapping demographic variables? What if there is no real correlation between the demographic variable and county winner? VBA might be best for things that are magnitudes or certainty.</td>
</tr>
<tr>
<td>2:15 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>It&#8217;s worth a try. In the end, it&#8217;s just a bivariate color scheme.</td>
</tr>
<tr>
<td>2:25 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here&#8217;s the final version of the Shapefile with our map data.</td>
</tr>
<tr>
<td>2:25 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>Let&#8217;s tweet that data.</td>
</tr>
<tr>
<td>2:25 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>I&#8217;m still not sure if population or population density makes more sense here. If we think of VBA as a cartogram, shouldn&#8217;t we just map totals?</td>
</tr>
<tr>
<td>3:05 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Does this map need a legend?</td>
</tr>
<tr>
<td>3:10 PM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>How should we proceed, now that we&#8217;ve got data and an interface design?</td>
</tr>
<tr>
<td>3:15 PM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>What exactly are we trying to make here? A static map viewer? A basic interactive map with data probe and linked chart?</td>
</tr>
<tr>
<td>3:20 PM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>If it&#8217;s a static map viewer, how about using indiemapper + SVG?</td>
</tr>
<tr>
<td>3:25 PM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>There are problems getting a good data probe and chart that way, plus the SVG is too huge.</td>
</tr>
<tr>
<td>3:30 PM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>D3 and JSON is sounding like the best approach.</td>
</tr>
<tr>
<td>3:45 PM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>The D3 shell is made.</td>
</tr>
<tr>
<td></td>
<td></td>
<td class="quote">&#8220;It was an election day sweep for President Robert Smith of the Goth Party.&#8221; <em>-Dave</em></td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/gothmap.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1586" title="gothmap" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/gothmap-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>4:10 PM</td>
<td><img class="aligncenter size-full wp-image-1507" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Here&#8217;s what it looks like with colored data.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/d3_colored.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1588" title="d3_colored" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/d3_colored-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>4:20 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>The JSON files are ready.</td>
</tr>
<tr>
<td>4:30 PM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>Let&#8217;s divide up the remaining work (data probe, data loading, chart, and ui).</td>
</tr>
<tr>
<td>4:40 PM</td>
<td><img class="aligncenter size-full wp-image-1504" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Design" width="16" height="16" /></td>
<td>Let&#8217;s put the project data on SVN so it&#8217;s easier to work together.</td>
</tr>
<tr>
<td>4:55 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Any other interesting demographic variables we should be mapping?</td>
</tr>
<tr>
<td>5:15 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here is poverty:</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/poverty.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1590" title="poverty" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/poverty-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>5:30 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Here is uninsured:</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/uninsured.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1591" title="uninsured" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/uninsured-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>6:10 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Data loading is complete for five demographic variables (birth rate, medicare, poverty, uninsured, wealthy, and non-white).</td>
</tr>
<tr>
<td>9:05 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>We should go back to quantiles for the demographic data so the maps look balanced with respect to alpha.</td>
</tr>
<tr>
<td>9:10 PM</td>
<td><img class="aligncenter size-full wp-image-1505" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>We probably need non-linear alpha steps to make them look right. Differences should be optical, not mathematical.</td>
</tr>
<tr>
<td>9:40 PM</td>
<td><img class="aligncenter size-full wp-image-1506" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Can we get data indexed by FIPS code in those JSON files?</td>
</tr>
</tbody>
</table>
<p><strong>Day 2 &#8211; November 8, 2012</strong></p>
<table width="100%" border="0" cellpadding="10">
<colgroup>
<col width="100" /></colgroup>
<tbody>
<tr>
<td>8:30 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Yeah, let&#8217;s do 10-class quantiles for the demographic variables.</td>
</tr>
<tr>
<td>8:45 AM</td>
<td><img class="size-full wp-image-1506 aligncenter" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Get rid of Alaska and Hawaii. There&#8217;s no data for those in the source.</td>
</tr>
<tr>
<td>8:50 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>The 10-class quantile maps are online.</td>
</tr>
<tr>
<td>8:50 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>They still look too bright overall.</td>
</tr>
<tr>
<td>8:55 AM</td>
<td><img class="size-full wp-image-1506 aligncenter" title="red" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/red.png" alt="Data" width="16" height="16" /></td>
<td>Let&#8217;s problem solve any data issues. Class breaks and data distribution look okay, at least.</td>
</tr>
<tr>
<td>9:05 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Let&#8217;s try that non-linear alpha scale to even these out visually.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/alphascale.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1600" title="alphascale" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/alphascale-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>9:10 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td class="quote">&#8220;That&#8217;s hella-nicer.&#8221; <em>-Dave</em></td>
</tr>
<tr>
<td>9:15 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>What kind of instructions will people need to understand these maps? E.g., Brightness is NOT margin of victory.</td>
</tr>
<tr>
<td>9:25 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>A basic chart is working.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/chart.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1602" title="chart" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/chart-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>9:25 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>How can we easily link the map and chart on mouseover?</td>
</tr>
<tr>
<td>9:30 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Try looping through counties to find matches.</td>
</tr>
<tr>
<td>9:30 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here&#8217;s a new, cleaner, down-pointing triangle PNG for the user interface.</td>
</tr>
<tr>
<td>9:30 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>How&#8217;s that chart looking?</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/chart_2.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1606" title="chart_2" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/chart_2-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>9:35 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Are the fonts in the mockup on TypeKit?</td>
</tr>
<tr>
<td>9:40 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Design" width="16" height="16" /></td>
<td>Yep, that&#8217;s Ubuntu Regular and Condensed.</td>
</tr>
<tr>
<td>9:55 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>We need a red and blue PNG for the bars in the chart.</td>
</tr>
<tr>
<td>10:10 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>The new fonts are in.</td>
</tr>
<tr>
<td>10:25 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>We need a better way to do the x-axis labels on the chart. They get buried and probably aren&#8217;t very clear.</td>
</tr>
<tr>
<td>10:25 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Let&#8217;s drop in an Axis Maps Logo.</td>
</tr>
<tr>
<td>10:30 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Does the page feel too tall? Can we fix that without shrinking the map?</td>
</tr>
<tr>
<td>10:40 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Here&#8217;s a mockup showing new chart labels.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/chart_3.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1608" title="chart_3" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/chart_3-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>10:55 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Implemented the new chart label design.</td>
</tr>
<tr>
<td>11:00 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Let&#8217;s put in an active state for the selected variable text in the UI.</td>
</tr>
<tr>
<td>11:05 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Implemented the new active state.</td>
</tr>
<tr>
<td>11:05 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>There&#8217;s a problem with positioning the divider in the new chart labels design. How about a text pipe instead?</td>
</tr>
<tr>
<td>11:15 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Implemented chart label tweak.</td>
</tr>
<tr>
<td>11:20 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Horizontal page scrolling won&#8217;t go away.</td>
</tr>
<tr>
<td>11:25 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>The scrolling problem is fixed.</td>
</tr>
<tr>
<td>11:25 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Let&#8217;s give the map a final look over.</td>
</tr>
<tr>
<td>11:30 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>Let&#8217;s stick in a new map title and add some instructions for users.</td>
</tr>
<tr>
<td>11:30 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Dang. The page gets cut-off in Firefox.</td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/11/ff.png?csspreview=true"><img class="alignleft size-thumbnail wp-image-1611" title="ff" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/ff-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td>11:45 AM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>The FF page problem is fixed.</td>
</tr>
<tr>
<td>11:50 AM</td>
<td><img class="size-full wp-image-1505 aligncenter" title="blue" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/blue.png" alt="Design" width="16" height="16" /></td>
<td>Dang. The chart isn&#8217;t showing up in Safari.</td>
</tr>
<tr>
<td>12:05 PM</td>
<td><img class="size-full wp-image-1507 aligncenter" title="green" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/green.png" alt="Code" width="16" height="16" /></td>
<td>The Safari chart problem is fixed.</td>
</tr>
<tr>
<td>12:10 PM</td>
<td><img class="size-full wp-image-1504 aligncenter" title="yellow" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/yellow.png" alt="Planning" width="16" height="16" /></td>
<td>Let&#8217;s tweet this map to the world!</td>
</tr>
</tbody>
</table>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=NFCl2vtJZhk:wZibnVMmW6A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=NFCl2vtJZhk:wZibnVMmW6A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=NFCl2vtJZhk:wZibnVMmW6A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=NFCl2vtJZhk:wZibnVMmW6A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=NFCl2vtJZhk:wZibnVMmW6A:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/NFCl2vtJZhk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/11/yakkin-bout-mappin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/11/yakkin-bout-mappin/</feedburner:origLink></item>
		<item>
		<title>Mapping Superstorm Sandy</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/zcIAi1dF25E/</link>
		<comments>http://www.axismaps.com/blog/2012/11/mapping-superstorm-sandy/#comments</comments>
		<pubDate>Thu, 01 Nov 2012 19:13:19 +0000</pubDate>
		<dc:creator>David Heyman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1463</guid>
		<description><![CDATA[Poking around on Twitter today I saw a couple mentions of this map from ESRI, next in what I&#8217;m sure will be a long line of maps about Superstorm Sandy. This was the first thematic map I&#8217;ve seen about the storm but it struck me as hugely ineffective. Comparing 2 variables (census statistics vs. storm [...]]]></description>
				<content:encoded><![CDATA[<p>Poking around on Twitter today I saw a couple mentions of <a href="http://tmappsevents.esri.com/website/sandy-impact/" target="_blank">this map from ESRI</a>, next in what I&#8217;m sure will be a long line of maps about Superstorm Sandy. This was the first thematic map I&#8217;ve seen about the storm but it struck me as hugely ineffective. Comparing 2 variables (census statistics vs. storm impact) requires a bivariate map. Mapping one variable and hiding the other one behind a mouse action makes it impossible to see any trends or gain any meaning from the two datasets as a whole. Unless you&#8217;re interested in just a couple of counties or having the clicking abilities of a 14-year old Farmville addict, the relationship between the data will be lost.</p>
<p>After manually replicating the data from the map, I put together some quick maps of a few value-by-alpha maps (here&#8217;s a <a href="http://www.geovista.psu.edu/publications/2010/RothEtAl_2010_CJ.pdf" target="_blank">stellar though academic introduction</a> from its inventors) using <a href="http://indiemapper.com" target="_blank">indiemapper</a>. VBA maps were originally conceived to <a href="http://www.axismaps.com/blog/2008/11/a-new-kind-of-election-map/" target="_blank">visualize election results</a> by visually-weighting (using alpha) red / blue colored counties by their relative populations. The end result gives you an overall sense of the election by making those counties which contributed more to the result (because of their higher population) more visually prominent.</p>
<p>These maps use the same technique except now alpha is controlled by storm impact. Areas with a higher level of impact are more visually prominent that areas of less impact. These maps hopefully quickly give you an understanding of the population affected by the storm. While I&#8217;m sure this was the intention of the ESRI map, because of some misplaced interactivity trumping <a href="http://www.axismaps.com/blog/2012/10/the-aesthetician-and-the-cartographer/">thoughtful cartography</a>, it can&#8217;t say the same.</p>
<h2 style="margin: 20px 0 -20px 0;">Median Income</h2>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="income.jpg" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/income1.jpg" alt="Income" width="704" height="807" border="0" /></p>
<h2 style="margin: 20px 0 -20px 0;">Black Population</h2>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="black.jpg" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/black3.jpg" alt="Black" width="704" height="807" border="0" /></p>
<h2 style="margin: 20px 0 -20px 0;">Percent Residents on Medicare</h2>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="medicare.jpg" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/medicare1.jpg" alt="Medicare" width="704" height="807" border="0" /></p>
<h2 style="margin: 20px 0 -20px 0;">Percent Uninsured</h2>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="uninsured.jpg" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/uninsured1.jpg" alt="Uninsured" width="704" height="807" border="0" /></p>
<h2 style="margin: 20px 0 -20px 0;">Unemployment Rate</h2>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="unemployment.jpg" src="http://www.axismaps.com/blog/wp-content/uploads/2012/11/unemployment3.jpg" alt="Unemployment" width="704" height="807" border="0" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=zcIAi1dF25E:ThjOVw1E7YY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=zcIAi1dF25E:ThjOVw1E7YY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=zcIAi1dF25E:ThjOVw1E7YY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=zcIAi1dF25E:ThjOVw1E7YY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=zcIAi1dF25E:ThjOVw1E7YY:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/zcIAi1dF25E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/11/mapping-superstorm-sandy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/11/mapping-superstorm-sandy/</feedburner:origLink></item>
		<item>
		<title>The Aesthetician and the Cartographer</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/QKJyt0IfF5E/</link>
		<comments>http://www.axismaps.com/blog/2012/10/the-aesthetician-and-the-cartographer/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 14:44:36 +0000</pubDate>
		<dc:creator>Andy Woodruff</dc:creator>
				<category><![CDATA[Cartography]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1399</guid>
		<description><![CDATA[Sometime around 2006, when everyone and their grandma started cranking out terrible Google Maps mashups, the Cartography world soiled its collective underpants as it looked like the once specialized profession was about to become obsolete. Fear was channeled into outrage at the whole idea of the &#8220;democratization of cartography&#8221; because it facilitated—encouraged, perhaps—the production of [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/09/ugly.jpg" alt="An ugly map" title="An ugly map" width="750" height="150" class="size-full wp-image-1400" /></p>
<p>Sometime around 2006, when everyone and their grandma started cranking out terrible Google Maps mashups, the Cartography world soiled its collective underpants as it looked like the once specialized profession was about to become obsolete. Fear was channeled into outrage at the whole idea of the &#8220;democratization of cartography&#8221; because it facilitated—encouraged, perhaps—the production of bad maps that ignored everything Cartographers had learned and taught over the years. In other words, &#8220;<a href="http://www.youtube.com/watch?v=sIzivCJ9pzU" target="_blank">they took our jobs!</a>&#8221;</p>
<p>Eventually we all calmed down when we saw that people still appreciated good cartography and there was still a place in the world for us—probably even more room for us than before. Then the tools improved by leaps and bounds, to the point now where it&#8217;s possible to use them for good web cartography and it&#8217;s easy to make maps beautiful. But it might be time to get uppity again.</p>
<p>There is a potential problem in that last thing: <em>beautiful maps</em>. These are prized an awful lot these days, and I&#8217;m worried that it&#8217;s distracting everyone from the real essence of cartography and the problems that needed or still need to be solved. There seems to be an idea floating around that Cartography is now winning the War on Bad Maps because we&#8217;ve defeated Ugliness. <a href="http://mapbox.com/tilemill/">TileMill</a> hype is an easy thing to point to here: consider MapBox&#8217;s repeated use of the word &#8220;beautiful&#8221;; or Brian Timoney&#8217;s <a href="http://mapbrief.com/2012/09/27/gis-cartography-the-latest-best-opportunity-to-bridge-the-chasm/">recent, justified praise</a> of the accessibility and openness of TileMill&#8217;s newest capabilities, unfortunately framed in the familiar GIS versus Cartography divide that treats the latter as little more than cosmetic surgery, aesthetic touches separable from the rest of the mapping process. Meanwhile with some regularity a web map project seems to find the ultimate &#8220;success&#8221; of ending up in an art exhibition or winning the Purtiest Map Evar Award.</p>
<p>It all brings into question what Cartography really is (and isn&#8217;t) or needs to be in the modern web mapping world, something I&#8217;ve been pondering a lot over the past year. (Big-C &#8220;Cartography&#8221; is used here to mean the the specific profession, theories, and body of knowledge, not simply the making of any maps.) Yes, a good cartographer has graphic design skills and an eye for beauty, but as a discipline and profession it is not about aesthetics.</p>
<p><a href="http://maps.stamen.com/watercolor/#11/29.9937/-90.1460"><img class="alignnone size-full wp-image-1401" title="A beautiful map" src="http://www.axismaps.com/blog/wp-content/uploads/2012/09/pretty.jpg" alt="A beautiful map" width="750" height="150" /></a></p>
<p>Beauty is unquestionably important in cartography. It&#8217;s what turns functional maps into good maps and good maps into great maps. And we don&#8217;t need to be above putting form over function sometimes. Eye candy sells, and sometimes grabbing attention or being just plain artsy is whole the point of a map. The number of beautiful maps floating around lately, the public appreciation of them, and the proliferation of tools that make them possible are all very pleasing developments. We shouldn&#8217;t mistake aesthetics for Cartography itself, though. Cartographic expertise is, in essence, <strong>knowing the right way to represent geographic phenomena and data</strong> for analytical or various other purposes, and understanding of all stages of the mapping process, not simply knowing how to swoop in at the end and make a map pretty. Sure, we can make every map delicious by wrapping it in metaphorical (or real?) bacon, but it won&#8217;t be good for you.*</p>
<p>It&#8217;s so much easier to see the aesthetic side of maps than all the informed decisions behind them, and now that it no longer takes specialists to use the production tools and code, aesthetics start to look like the only area where specialized Cartography comes in. We don&#8217;t talk about the <em>real</em> Cartography enough for it to be chracterized otherwise. For every blog post or tweet you see about the newest cool graphical capability of Mapnik or d3 or anything else, how many do you see giving advice on when to use it?</p>
<p>Just as we always associated ArcMap with &#8220;ugly&#8221; and Illustrator with &#8220;pretty,&#8221; aesthetics continue to be tied to specific tools, and GIS and cartography people <em>still</em> let themselves be defined by the tools they use despite the trends away from reliance on a single piece of software. As usual we have the problem of knowing tools versus knowing concepts. It&#8217;s vital to know tools and understand how they work, of course, but in the end they&#8217;re only as useful as the operator&#8217;s knowledge of cartographic concepts. Today&#8217;s tools are new, but a lot of the amazing new capabilities we&#8217;re seeing are not new at all; they&#8217;re just better implementations. They lower a lot of barriers and have big impacts, sure, but tools are still only tools. BYOCartography.</p>
<p>(When it&#8217;s not aesthetics or tools, by the way, it&#8217;s the idea that map = data. You can see this in the Apple Maps uproar. But that&#8217;s a different kettle of fish for another day.)</p>
<p>I don&#8217;t want Cartography to be reduced to mastery of pulling levers to make pretty things. Not because I fear for my career—I can pull levers with the best of them—but rather because it limits the gains in the quality of web mapping. You don&#8217;t need to have an advanced degree in Cartography or be an old-school Cartographer to make good maps, but you do need to take the time to understand the <em>when</em> and <em>why</em> of mapping techniques, not just the <em>how</em>.</p>
<p><img class="alignnone size-full wp-image-1402" style="border: 1px solid #ccc;" title="A map that needs some 'splainin" src="http://www.axismaps.com/blog/wp-content/uploads/2012/09/gc.jpg" alt="A map that needs some 'splainin" width="750" height="150" /></p>
<p>The traditional Cartographic solution to this kind of problem is to complain and criticize, but we need to point out what&#8217;s right more than what&#8217;s wrong. (Yeah, yeah, irony here. But think of this post as more of a lament than criticism.) After all, it&#8217;s not that bad things are happening—quite the opposite—it&#8217;s just that a lot of good things remain invisible and left out of the conversation. So next time you make a killer map, don&#8217;t just talk about <em>how</em> you did it; talk also about <em>why</em> you made the design choices you did. Let&#8217;s make it understood that there is more to Cartography than aesthetic sensibilities and technical skill, and encourage all mapmakers to be true Cartographers.</p>
<p><br/><br />
<sup>* You&#8217;ll have a <em>cart attack.</em> Ha!</sup></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=QKJyt0IfF5E:d-jg7jfoFkk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=QKJyt0IfF5E:d-jg7jfoFkk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=QKJyt0IfF5E:d-jg7jfoFkk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=QKJyt0IfF5E:d-jg7jfoFkk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=QKJyt0IfF5E:d-jg7jfoFkk:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/QKJyt0IfF5E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/10/the-aesthetician-and-the-cartographer/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/10/the-aesthetician-and-the-cartographer/</feedburner:origLink></item>
		<item>
		<title>Advice to the Aspiring Interactive Cartographer</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/SXjRhis-k2k/</link>
		<comments>http://www.axismaps.com/blog/2012/09/advice-to-the-aspiring-interactive-cartographer/#comments</comments>
		<pubDate>Sun, 02 Sep 2012 15:01:00 +0000</pubDate>
		<dc:creator>David Heyman</dc:creator>
				<category><![CDATA[Cartography]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1369</guid>
		<description><![CDATA[I often get emails from recent geo-grads or new professional students asking something like: &#8220;I&#8217;m looking to expand my skills to make interactive maps. What do I need to know to become an interactive cartographer?&#8221; Because our industry is evolving at such breakneck speeds, the required skill sets are constantly changing. Flash actionscript code has [...]]]></description>
				<content:encoded><![CDATA[<p>I often get emails from recent geo-grads or new professional students asking something like:</p>
<blockquote><p>&#8220;I&#8217;m looking to expand my skills to make interactive maps. What do I need to know to become an interactive cartographer?&#8221;</p></blockquote>
<p>Because our industry is evolving at such breakneck speeds, the required skill sets are constantly changing. Flash actionscript code has been replaced by Javascript and HTML5. Basemap cartography is endlessly tweaked as <a href="https://github.com/mapnik/mapnik/wiki/XMLConfigReference">Mapnik XML</a> instead of Illustrator layers. We can <a href="http://www.axismaps.com/blog/2012/01/dont-panic-an-absolute-beginners-guide-to-building-a-map-server/">easily build and support our own tile servers</a>. It&#8217;s exciting change and it allows us to do more with our maps faster and cheaper.</p>
<p>Unfortunately, if you&#8217;re trying to break into interactive cartography and haven&#8217;t been involved with its evolution on a daily basis, it can be very tough to know where to begin. It&#8217;s no longer as easy as &#8220;learn ArcView if you want to be a GIS Tech, or Illustrator if you want to be a cartographer.&#8221;</p>
<p>However, while the tools may be changing month-by-month, there have been three broad areas of core competency for all interactive cartographers that have been consistent throughout:</p>
<ol>
<li>You need to be able to find, manipulate, and store spatial and non-spatial data.</li>
<li>You need to be able to design a functional and attractive cartographic representation of that data as well as the UI controls to operate it</li>
<li>You need to be able to implement that design through code</li>
</ol>
<p>Working with data is probably the most underestimated part of a cartographer&#8217;s job. The steps required to go from source to ready-to-map are different for every dataset, but there are some general tasks you&#8217;ll come across at some point. You&#8217;ll need to be able to find data, navigating though state GIS websites designed in the 1970&#8242;s for administrative boundaries or combing though big data repositories (US Census, World Bank) for a single supplementary attribute. Once you find your data, you&#8217;ll need to be able to manipulate it to work with the other datasets required for your map. This is where you&#8217;ll put that GIS education to good use but more often than not you&#8217;ll find yourself trying to remember how Excel Pivot Tables work. With the data ready to be mapped, you&#8217;ll need to decide how to store it and how your map will retrieve it. Simple data can be stored in a text file like CSV (that you&#8217;re probably already comfortable with) but more complex data will often require a database. It&#8217;s really helpful to know a bit about data structures, and feel comfortable enough with a server to do some basic installation and maintenance.</p>
<p>Design for an interactive map comes in two separate but highly connected pieces. Cartographic design involves designing the &#8220;map&#8221; part of the map. Most of the design decisions you&#8217;ll make during this phase of design are no different than if you were doing <a href="http://www.amazon.com/Thematic-Cartography-Visualization-Terry-Slocum/dp/0132097761/ref=sr_1_1?ie=UTF8&amp;qid=1346660063&amp;sr=8-1&amp;keywords=terry+slocum">cartographic design for a paper map</a>. Is this the right thematic representation of this data? Does my visual hierarchy clearly communicate the message of this map? Is my basemap garish and stupid, drawing attention away from the point I&#8217;m trying to make? You&#8217;ll also need to design the UI controls to operate the map. This is a much harder skill to cultivate and is most likely something you haven&#8217;t been exposed to in your GIS / cartography curriculum. The best way to get to be a better designer is to look critically at lots and lots of web maps. Compartmentalize their interface components and decide for yourself what works on them. Steal the stuff that works and think about how the stuff that doesn&#8217;t could be improved. Learn how to quickly make UI mock-ups and wireframes of your map. Iterate over your designs before you build them, using that critical eye you&#8217;ve developed critiquing other people&#8217;s work on your own. Repeat for 2 weeks or so and then put it down because it&#8217;s probably good enough.</p>
<p>Andy <a href="http://www.axismaps.com/blog/2011/12/web-cartography-thats-like-google-maps-right/">said this best</a>:</p>
<blockquote><p>&#8220;Our coding process goes something like this. 1) Load the data. 2) Make things work. 3) Make things pretty. Like I mentioned before, having everything designed ahead of time is vital. We can start with something rough but functional without worrying about design, because we already know how it will look and behave in the end. It also lets us know when we’re finished; interactive projects have a way of never ending if there are no clear goals at the outset.</p>
<p>&#8220;After hearing from enough of my cartography peers whose hatred of programming burns with the fire of a thousand suns, I must say this: yes, coding sucks. I write code all the time, and it often makes me want to punch the computer in the face. But it’s worth it. Totally worth it. It only takes a little skill to produce awesome things. A willingness to write some code opens a lot of doors, and it doesn’t require devoting a lifetime to becoming a master programmer. It doesn’t even require being a good programmer.&#8221;</p></blockquote>
<p>If you&#8217;re an absolute beginner <a href="http://hackety.com">this is a great place to learn the basics</a>. Then, choose a mapping library that you like (they&#8217;re all good) that will do what you need it to do and run through the basic tutorial (usually gets you a basic map on a blank page). Once you&#8217;ve got that down, all you have to do is start putting in the hours at the keyboard.</p>
<p>Axis Maps has always been a small company with a very strong DIY ethos (just ask Ben who can now add &#8220;shipping tycoon&#8221; to his CV). My favorite part of working on projects here is we&#8217;re constantly learning how to solve the hundreds of problems that come up through the course of any project. You&#8217;ll never know how to do it all yourself but if you give yourself a good foundation in the basic concepts, you can start making maps and learning as you go like the rest of us.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="Pirate-NG-Kids.jpg" src="http://www.axismaps.com/blog/wp-content/uploads/2012/09/Pirate-NG-Kids.jpg" alt="Pirate NG Kids" width="425" height="514" border="0" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=SXjRhis-k2k:YPoNAr8HuE8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=SXjRhis-k2k:YPoNAr8HuE8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=SXjRhis-k2k:YPoNAr8HuE8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=SXjRhis-k2k:YPoNAr8HuE8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=SXjRhis-k2k:YPoNAr8HuE8:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/SXjRhis-k2k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/09/advice-to-the-aspiring-interactive-cartographer/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/09/advice-to-the-aspiring-interactive-cartographer/</feedburner:origLink></item>
		<item>
		<title>Four new typographic maps for summer 2012</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/mT_FpCZzAHc/</link>
		<comments>http://www.axismaps.com/blog/2012/08/four-new-typographic-maps-for-summer-2012/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 14:59:16 +0000</pubDate>
		<dc:creator>Andy Woodruff</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[typographic maps]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1347</guid>
		<description><![CDATA[Our typographic maps store took a little summer vacation last month and has now returned with some big postcards of the four cities it visited: London, Philadelphia, Seattle, and Minneapolis. Perhaps you&#8217;ll enjoy them yourself! London Our maps have ventured outside the US for the first time, to everyone&#8217;s favo(u)rite summer 2012 city. With that, [...]]]></description>
				<content:encoded><![CDATA[<p>Our <a href="http://store.axismaps.com">typographic maps store</a> took a little summer vacation last month and has now returned with some big postcards of the four cities it visited: <a href="http://store.axismaps.com/product/london">London</a>, <a href="http://store.axismaps.com/product/philadelphia">Philadelphia</a>, <a href="http://store.axismaps.com/product/seattle">Seattle</a>, and <a href="http://store.axismaps.com/product/minneapolis">Minneapolis</a>. Perhaps you&#8217;ll enjoy them yourself!</p>
<h2>London</h2>
<p>Our maps have ventured outside the US for the first time, to everyone&#8217;s favo(u)rite summer 2012 city. With that, we&#8217;ve launched a UK store for orders (pre-orders for the moment) there and internationally at <a href="http://store.axismaps.co.uk/#uk">store.axismaps.co.uk</a>. The map is also available on the American side of the pond, of course.</p>
<p><a href="http://store.axismaps.com/product/london/"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/london_20120723-300x200.jpg" alt="London typographic map" title="London typographic map" width="300" height="200" class="alignnone size-medium wp-image-1349" /></a></p>
<p><a href="http://store.axismaps.com/product/london/"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/london_4-300x199.jpg" alt="London typographic map" title="London typographic map" width="300" height="199" class="alignnone size-medium wp-image-1348" /></a></p>
<h2>Philadelphia</h2>
<p>Or celebrate American independence from London in the Cradle of Liberty. We&#8217;ve got Philly&#8217;s astoundingly dense network of streets and, of course, a nod to Rocky.</p>
<p><a href="http://store.axismaps.com/product/philadelphia"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/philadelphia_20120722-300x200.jpg" alt="Philadelphia typographic map" title="Philadelphia typographic map" width="300" height="200" class="alignnone size-medium wp-image-1351" /></a></p>
<p><a href="http://store.axismaps.com/product/philadelphia"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/philadelphia_3-300x199.jpg" alt="Philadelphia typographic map" title="Philadelphia typographic map" width="300" height="199" class="alignnone size-medium wp-image-1350" /></a></p>
<h2>Seattle</h2>
<p>Grab your coffee and your 90s grunge music and head to the west coast. This watery Seattle map will show you where to hang out.</p>
<p><a href="http://store.axismaps.com/product/seattle"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/seattle_20120723-200x300.jpg" alt="Seattle typographic map" title="Seattle typographic map" width="200" height="300" class="alignnone size-medium wp-image-1353" /></a></p>
<p><a href="http://store.axismaps.com/product/seattle"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/seattle_4-300x199.jpg" alt="Seattle typographic map" title="Seattle typographic map" width="300" height="199" class="alignnone size-medium wp-image-1352" /></a></p>
<h2>Minneapolis</h2>
<p>In the summer, enjoy the parks and lakes in this city on the upper reaches of the Mississippi River. In the harsh Minnesotan winter, wrap yourself in this map for warmth.</p>
<p><a href="http://store.axismaps.com/product/minneapolis"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/minneapolis_20110722-300x200.jpg" alt="Minneapolis typographic map" title="Minneapolis typographic map" width="300" height="200" class="alignnone size-medium wp-image-1355" /></a></p>
<p><a href="http://store.axismaps.com/product/minneapolis"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/08/minneapolis_3-300x199.jpg" alt="Minneapolis typographic map" title="Minneapolis typographic map" width="300" height="199" class="alignnone size-medium wp-image-1354" /></a></p>
<p>More maps are coming soon. Stay tuned!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=mT_FpCZzAHc:KsBU4IjGarA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=mT_FpCZzAHc:KsBU4IjGarA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=mT_FpCZzAHc:KsBU4IjGarA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=mT_FpCZzAHc:KsBU4IjGarA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=mT_FpCZzAHc:KsBU4IjGarA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/mT_FpCZzAHc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/08/four-new-typographic-maps-for-summer-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/08/four-new-typographic-maps-for-summer-2012/</feedburner:origLink></item>
		<item>
		<title>The ‘Why Not The Best’ map: thematic mapping with Leaflet</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/dR1G29VhptI/</link>
		<comments>http://www.axismaps.com/blog/2012/07/the-why-not-the-best-map-thematic-mapping-with-leaflet/#comments</comments>
		<pubDate>Tue, 31 Jul 2012 14:23:38 +0000</pubDate>
		<dc:creator>Andy Woodruff</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[leaflet]]></category>
		<category><![CDATA[thematic maps]]></category>
		<category><![CDATA[web mapping]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1279</guid>
		<description><![CDATA[We&#8217;re pleased to mention our most recently completed project: an interactive quality-of-health-care map for Why Not The Best, done in conjunction with IPRO for the Commonwealth Fund. This is actually the second incarnation of this map, which is now built with more modern technology and is better integrated with the Why Not The Best site. [...]]]></description>
				<content:encoded><![CDATA[<p>We&#8217;re pleased to mention our most recently completed project: an interactive quality-of-health-care map for <a target="_blank" href="http://whynotthebest.org/maps">Why Not The Best</a>, done in conjunction with <a target="_blank" href="http://www.ipro.org/">IPRO</a> for the <a target="_blank" href="http://www.commonwealthfund.org/">Commonwealth Fund</a>. This is actually the second incarnation of this map, which is now built with more modern technology and is better integrated with the Why Not The Best site.</p>
<p><a target="_blank" href="http://whynotthebest.org/maps"><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/07/wntb.jpg" alt="Why Not The Best map" title="Why Not The Best map" width="740" height="454" class="alignnone size-full wp-image-1301" /></a></p>
<p>We first built the Why Not The Best map in Flash about two years ago, using the Flex-based <a target="_blank" href="http://indiemapper.com">indiemapper</a> framework we had developed for ourselves. Flash was a good solution the time, as this was a relatively simple vector thematic map. However, the map&#8217;s functionality and features later grew to the point where it incorporated multiple shapefiles, several layout modes, and embedded Google Maps—resulting in a very complex project and a large SWF for users to load. At the same time, non-Flash web mapping technology was improving rapidly, opening new doors for building this kind of map. As such we again worked with IPRO and completely rebuilt the map in HTML 5 and JavaScript.</p>
<p>We&#8217;ve learned a few things from this and similar projects and thought we&#8217;d share some experiences from this map, in case other folks just getting into this kind of work can benefit from the same tricks.</p>
<h2>Leaflet</h2>
<p>The web mapping library I&#8217;ve settled on as my choice lately is <a target="_blank" href="http://leaflet.cloudmade.com/">Leaflet</a>, which is developed by CloudMade. Leaflet offers &#8220;slippy map&#8221; and overlay basics but also a lot of opporunity for easy custom <a href="http://leaflet.cloudmade.com/plugins.html" target="_blank">extensions</a>. While there is little built-in support for thematic cartography like choropleth maps (although the <a target="_blank" href="http://leaflet.cloudmade.com/2012/07/30/leaflet-0-4-released.html">very recent release</a> makes more strides in this direction), it&#8217;s not difficult make it happen in completely custom ways. Below is an overview of what we did in this case.</p>
<h2>Choropleth</h2>
<p>Our choropleth map, in brief, is drawn from tiled GeoJSON served by <a target="_blank" href="http://tilestache.org/">TileStache</a> and colored by data requested from IPRO&#8217;s database. Although I suppose it will be part of the Leaflet release some day, there&#8217;s currently no built-in support for tiled GeoJSON layers; however, as you&#8217;d expect with an open-source project, third-party developers have come up with solutions. We used this <a target="_blank" href="https://gist.github.com/1716010">TileCanvas</a> layer with some additional modifications.</p>
<p>GeoJSON is commonly drawn to SVG, but just as we learned long ago in Flash, a ton of vectors rendered on screen at one time can really bog things down. We wanted to try the canvas element instead, rendering the vector data as static rasters and faking the mouse interactivity that SVG would have allowed. Sure enough this did seem to perform better, especially when we needed to draw our county layer in high detail. Thus the GeoJSON TileCanvas layer, which builds upon Leaflet&#8217;s canvas layer, was handy.</p>
<p>To make this all work interactively and allow on-the-fly coloring based on data, we had to perform a couple of behind-the-scenes tricks. The main technique was introduced to us by our friend <a target="_blank" href="https://twitter.com/blueshirt">Jeremy White</a>, a Graphics Editor at the New York Times whose fantastic interactive work you have undoubtedly seen and who has explained this in a couple of talks. Basically, it&#8217;s this:</p>
<p><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/07/greens.jpg" alt="Canvas choropleth: behind the scenes" title="Canvas choropleth: behind the scenes" width="660" height="391" class="alignnone size-full wp-image-1282" /></p>
<p>Beautiful, right? This green thing is a map layer that ordinarily is invisible underneath the actual choropleth layer. It draws each enumeration unit (counties here) with a unique color based on a unique ID number for that unit. That number could be its position in an array, or in our case an arbitrary number included in the original shapefile (again, though, it&#8217;s just the row number of each record). On a canvas element we can&#8217;t do much more with the mouse than detect the coordinates of the mouse position and the pixel color under the mouse. By assigning colors this way, we can read that pixel color and turn it back into the ID number, thereby learning which county is under the mouse.</p>
<p><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/07/color_id.jpg" alt="Unique colors for canvas choropleth" title="Unique colors for canvas choropleth" width="740" height="264" class="alignnone size-full wp-image-1286" /></p>
<p>Our method for assigning colors, also more or less following Jeremy&#8217;s tips, was to use the red and green channels, each of which has 256 possible values. It works like this for my county of residence, which had an ID number of 1222:</p>
<ol>
<li>1222/256 = 4.77. We only want the integer for this part, so <strong>Red = 04</strong>.</li>
<li>1222 mod 256 = 198, or in hexadecimal, C6. <strong>Green = C6</strong>.</li>
<li><strong>Blue = 0.</strong></li>
</ol>
<p>In other words, we just run down the sequential list and increment the green value by 1 until reaching maximum green (255), at which point red is incremented by 1 and green rolls over to 0. In our code, a feature&#8217;s color looks like this: <code>"rgba('+Math.floor(feature.properties.ID/256)+','+feature.properties.ID % 256+',0,1)"</code></p>
<p>Having detected a color on the map (#04C600 here), we can reconstruct that ID number.</p>
<ol>
<li>Red = 04. 4 * 256 = 1024.</li>
<li>Green = C6 (198). <strong>1024 + 198 = 1222</strong>.</li>
<li>Looking at our data, we find that 1222 is Middlesex County, Massachusetts.</li>
</ol>
<p>The blue channel is not used at all for the counties and is instead reserved for drawing borders between them. Some confusion of pixel color can happen where two or more counties come together, sometimes appearing as a totally different color that belongs to a unit elsewhere. We draw blue over the borders as a kind of buffer. If any blue is detected while moving the mouse around, we know that it&#8217;s very close to a boundary and we don&#8217;t try to discern a county. Using only the red and green channels in this manner, 65,536 unique colors—and thus unique map units—are possible. If the blue channel were also used, it would be more than 16 million.</p>
<p>Our map doesn&#8217;t actually store a list of the all the counties and ID numbers. Instead we store the JSON attribute information along with the geometry on the custom TileCanvas layer. On a county mouseover, we loop through the features on the tile to find which one matches the ID number of the detected color. That way we know both the attribute information and the geometry, allowing us to display the name, etc. and also redraw the choropleth tile with a yellow highlight added to the correct county.</p>
<h2>Proportional symbols</h2>
<p>Marker symbols in general are easy to implement in Leaflet, but using them thematically is not straightforward. For one thing, it&#8217;s difficult to maintain an association between the symbol and the data that it represents. Again, though, it&#8217;s not hard to extend Leaflet&#8217;s capabilities, so we just added our own modified type of marker layer that allowed us to pass in data to control the symbol size and label. We shied away from SVG here too and used div elements for the symbols, something which was also <a target="_blank" href="http://leaflet.cloudmade.com/reference.html#divicon">just introduced</a> in this week&#8217;s new Leaflet release. The CSS <a href="http://www.css3.info/preview/rounded-border/" target="_blank">border-radius</a> property can be used to make circles.</p>
<p><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/07/div_marker.png" alt="Proportional symbol divs in Leaflet" title="Proportional symbol divs in Leaflet" width="639" height="236" class="alignnone size-full wp-image-1289" /></p>
<h2>Multi-scale mapping</h2>
<p>Even though raster basemaps tend to be designed for multiple scales (often 18ish unique scales), it&#8217;s easy to overlook the importance of doing this for vector data in web maps, too. Our map needed to work from continent level all the way down to street level, at 15 or so scales, half of which include the vector choropleth layer. We ended up using three levels of generalization, thanks of course to <a href="http://mapshaper.org" target="_blank">MapShaper</a>.</p>
<p><img src="http://www.axismaps.com/blog/wp-content/uploads/2012/07/multiscale.png" alt="Generalization at different scales" title="Generalization at different scales" width="354" height="600" class="alignnone size-full wp-image-1291" /></p>
<p>Beyond good practices, generalization was important for performance. Note the file sizes on the image above. At the smallest scale, all of the country is visible, meaning we need to download and render all of the vector data. If we didn&#8217;t generalize the geometry, that would mean the whole 13MB!</p>
<p>Each of the three generalization levels is a different layer in TileStache. Rather than implementing three separate layers in Leaflet, we added a couple of methods to the TileCanvas layer to allow for several different source URLs, automatically switching between them as the zoom level changes. We could give it an object like this and not worry about it thereafter:</p>
<p><code>var countiesURL = [<br />
		{url:tilestacheBase+'counties-smallscale/{z}/{x}/{y}.geojson',min:0,max:4},<br />
		{url:tilestacheBase+'counties-medscale/{z}/{x}/{y}.geojson',min:5,max:7},<br />
		{url:tilestacheBase+'counties-largescale/{z}/{x}/{y}.geojson',min:8,max:20}<br />
		];</code></p>
<h2>Thematic web maps: getting better!</h2>
<p>There&#8217;s much more to the new Why Not The Best map than has been described above, so go <a target="_blank" href="http://whynotthebest.org/maps">check it out</a>. To say nothing of the many design challenges, these were just a few of the most interesting technical challenges, which, thankfully, Leaflet and TileStache made it pretty easy to solve. (Now if only it were as easy to avoid the Mercator projection in choropleth web maps!) It&#8217;s been a good experience in learning how non-Flash web mapping libraries have improved for thematic cartography, even if they don&#8217;t support it natively. If you&#8217;re new to this, check out the Leaflet <a href="http://leaflet.cloudmade.com/reference.html" target="_blank">documentation</a> and <a href="http://leaflet.cloudmade.com/examples.html" target="_blank">tutorials</a>, as well as <a href="http://tilestache.org/" target="_blank">TileStache</a> and our blog post tutorial on <a href="http://www.axismaps.com/blog/2012/01/dont-panic-an-absolute-beginners-guide-to-building-a-map-server/">how to set up a tile server</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=dR1G29VhptI:ubNPWHSgQ8M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=dR1G29VhptI:ubNPWHSgQ8M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=dR1G29VhptI:ubNPWHSgQ8M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=dR1G29VhptI:ubNPWHSgQ8M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=dR1G29VhptI:ubNPWHSgQ8M:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/dR1G29VhptI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/07/the-why-not-the-best-map-thematic-mapping-with-leaflet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/07/the-why-not-the-best-map-thematic-mapping-with-leaflet/</feedburner:origLink></item>
		<item>
		<title>Your Map and the Internet</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/gi1ORtqaHhc/</link>
		<comments>http://www.axismaps.com/blog/2012/05/your-map-and-the-internet/#comments</comments>
		<pubDate>Fri, 25 May 2012 17:30:52 +0000</pubDate>
		<dc:creator>Ben Sheesley</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1258</guid>
		<description><![CDATA[Sometimes it&#8217;s important to explain the fundamentals, just to make sure everyone is starting on the same page and to keep expectations in check. Because our heads are constantly caught up in maps and the internet, we sometimes forget that there are a few basic underlying concepts that others (clients, friends, family, etc.)  might not [...]]]></description>
				<content:encoded><![CDATA[<p>Sometimes it&#8217;s important to explain the fundamentals, just to make sure everyone is starting on the same page and to keep expectations in check. Because our heads are constantly caught up in maps and the internet, we sometimes forget that there are a few basic underlying concepts that others (clients, friends, family, etc.)  might not be grasping fully when they use our maps. A better understanding might help them through potential rough spots and frustrations, often simply resulting from a poor internet connection. We found that explaining these concepts with words alone didn&#8217;t get the message across very well. Words like &#8220;server&#8221;, &#8220;code&#8221; and &#8220;wireless&#8221; can stick better when accompanied by a picture, as can the broader concepts that surround them related to how computers request and receive code and data for mapping purposes. This is the internet infographic we came up with:</p>
<p><a href="http://www.axismaps.com/blog/wp-content/uploads/2012/05/your_map_and_the_internet2.jpg"><img class="alignnone  wp-image-1264" title="your_map_and_the_internet" src="http://www.axismaps.com/blog/wp-content/uploads/2012/05/your_map_and_the_internet2.jpg" alt="" width="614" height="707" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=gi1ORtqaHhc:RGOBmIu2xAk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=gi1ORtqaHhc:RGOBmIu2xAk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=gi1ORtqaHhc:RGOBmIu2xAk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=gi1ORtqaHhc:RGOBmIu2xAk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=gi1ORtqaHhc:RGOBmIu2xAk:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/gi1ORtqaHhc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/05/your-map-and-the-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/05/your-map-and-the-internet/</feedburner:origLink></item>
		<item>
		<title>Don’t Panic: An Absolute Beginner’s Guide to Building a Map Server</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/4Go-xioLCgQ/</link>
		<comments>http://www.axismaps.com/blog/2012/01/dont-panic-an-absolute-beginners-guide-to-building-a-map-server/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 12:36:53 +0000</pubDate>
		<dc:creator>David Heyman</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1205</guid>
		<description><![CDATA[There are a lot of great mapping applications out there that run on a server. They can be intimidating to install and configure so I thought I would document my steps so everything would be in one place. This a a guide for the absolute beginner so if you have some command-line experience, I promise [...]]]></description>
				<content:encoded><![CDATA[<p>There are a lot of great mapping applications out there that run on a server. They can be intimidating to install and configure so I thought I would document my steps so everything would be in one place. This a a guide for the absolute beginner so if you have some command-line experience, I promise I&#8217;m not being condescending. Future posts will cover how we&#8217;re actually using these tools to build our maps.</p>
<p>This tutorial should take you from absolutely nothing to a fully-functional web server containing:</p>
<ul>
<li><strong><a href="http://postgis.refractions.net/" target="_blank">PostGIS</a>: </strong>A PostgreSQL database optimize to store spatial information. It can easily import shapefiles and OSM data using command line tools as well as connect to mapping services like QGIS and Mapnik.</li>
<li><strong><a href="http://mapnik.org/" target="_blank">Mapnik</a>: </strong>A very powerful tool for automatically generating maps from geographic data with lots of control over cartographic display and rendering.</li>
<li><strong><a href="http://tilestache.org/" target="_blank">TileStache</a>: </strong>A simple way to efficiently serve geographic data to mapping applications. It can send tiled vector or raster data and will speed up any application that needs to load lots of data.</li>
</ul>
<h2></h2>
<h2>Basic Setup</h2>
<p>I&#8217;m going to be using a <a href="http://www.rackspacecloud.com/2936.html" target="_blank">Rackspace Cloud Server</a> for this example. It&#8217;s a cheap way to get a server up and running and I&#8217;ve found them to be great with support. They automatically build your server and install the operating system. You just need to select 3 things:</p>
<ol>
<li><strong>Operating System: </strong>Ubuntu 11.10 (Oneric Ocelot)</li>
<li><strong>Server Name: </strong><em>tiles</em></li>
<li><strong>Server Size: </strong>1024 MB of RAM and 40GB of disk</li>
</ol>
<p>The RAM and disk space are the bare minimum requirements. Fortunately, Rackspace let&#8217;s you upgrade your server at any time so it&#8217;s easy to configure it small as a sandbox and then beef it up if you decide to put it into production later on.</p>
<p>Once you click &#8220;Create server&#8221; you&#8217;ll see your new root password. Copy it to the clipboard but don&#8217;t worry about keeping it super-safe. We&#8217;ll change it as soon as we log in for the first time (they also email it to you). Setup will take about 5 minutes to complete and they&#8217;ll email you when it&#8217;s finished.</p>
<h2></h2>
<h2>Terminal and Remote Access</h2>
<p>Since this server is in the cloud (<em>ooooooh</em>), the only way to access it is remotely through SSH. Open any SSH client you like (Terminal is already installed on OSX) and get comfortable. First thing we need to do is to log on to our remote server. Make sure you have that email with your root password and IP address and type into the terminal window:</p>
<pre>ssh root@(<strong><em>your ip-address)</em></strong></pre>
<p>That command tells the terminal to start an SSH session, logging in as <em>root</em> to the server at the specified IP address. The <em>root</em> username is the default admin of the server. We&#8217;ll do most of this setup as <em>root</em> since it has full control over the system.</p>
<p>When it asks, just paste your root password from the email and you should be logged in and should see something like this:</p>
<pre>root@tiles:~#</pre>
<p>The <em>#</em> tells you the system is ready to receive commands. Let&#8217;s now change the root password into something we&#8217;ll remember. Type:</p>
<pre>passwd</pre>
<p>and hit enter and follow the prompts.</p>
<p>Now we want to do a quick software update to make sure everything is secure. Run both of these commands:</p>
<pre>sudo aptitude update</pre>
<pre>sudo aptitude upgrade</pre>
<p>We&#8217;ll use the <em>sudo</em> command often. It tells the server to perform the task as a super-user which gives you extra permissions to modify the system. Here&#8217;s another top-tip: At the command prompt, you can hit the up arrow on your keyboard to cycle through your previous commands.</p>
<h2></h2>
<h2>Installing the Web Server Bits</h2>
<p><em>This part of the tutorial is taken from <a href="http://www.symana.com/2010/12/setup-a-lamp-rackspace-cloud-server-running-ubuntu-10-10/" target="_blank">symana.labs</a></em></p>
<p>The next step is to install the LAMP stack. LAMP stands for (Linux, Apache, MySQL, PHP) and has all the basics to turn your server into a web server. It can be installed with a single command:</p>
<pre>sudo tasksel install lamp-server</pre>
<p>and follow the prompts. To secure the MySQL server from common database attacks, run:</p>
<pre>mysql_secure_installation</pre>
<p>Enter the password you set in the previous step and then enter &#8220;n&#8221; to keep it. Enter &#8220;Y&#8221; for the rest of the questions.</p>
<p>If you think you are going to be using MySQL for other applications on the server, you can install phpmyadmin to give you a graphical way to interact with the DB by running:</p>
<pre>sudo apt-get install phpmyadmin</pre>
<p>When the install completes, we need to modify the Apache2 config file to include information about phpmyadmin:</p>
<pre>sudo nano /etc/apache2/apache2.conf</pre>
<p>Use Ctrl-V to scroll down to the bottom of the file and add:</p>
<pre># Include phpmyadmin configuration:
Include /etc/phpmyadmin/apache.conf</pre>
<p>Press Ctrl-O to save (write out) the file and press Enter to save it in its current location. Then press Ctrl-X to exit editing the file.<br />
When you&#8217;re done configuring everything, restart apache with:</p>
<pre>/etc/init.d/apache2 restart</pre>
<p>To configure a fully qualified domain name for apache type:</p>
<pre>echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn</pre>
<p>Now we have to configure the server&#8217;s hostname so we can contact it via a URL instead of the IP address. If you enter:</p>
<pre>hostname -f</pre>
<p>you should see the server name you entered when you setup the server. We want to turn that into a subdomain for our primary domain (for me it will be <strong>tiles.axismaps.com</strong>) but you can skip this if you don&#8217;t have your own domain (you&#8217;ll just keep using your IP address to connect to the server). To tell the server what the rest of the domain is, we&#8217;ll need to edit a few text files using <strong>nano</strong>, the built-in terminal text editor.</p>
<pre>sudo nano /etc/hostname</pre>
<p>Will show you something like:</p>
<pre>tiles</pre>
<p>You&#8217;ll want to change that to:</p>
<pre>tiles.<strong><em>(primary domain name).</em></strong>com</pre>
<p>We are using <strong>tiles.axismaps.com</strong> for ours. When you&#8217;ve edited the file, hit Ctrl-X (not command if you&#8217;re on a Mac) then enter Y to save changes and hit Enter to overwrite the file. Do the same thing and add your domain to the second entry in:</p>
<pre>sudo nano /etc/hosts</pre>
<p>To make the changes stick, reboot your server with:</p>
<pre>sudo reboot</pre>
<p>The final step is to add a DNS record with your web host that points back to the server. From your server management page in Rackspace, click the DNS tab then click your domain name. Click &#8220;Add&#8221; to enter a new record with values:</p>
<ul>
<li><strong>Type: </strong>A</li>
<li><strong>Name: </strong>tiles.<strong><em>(primary domain name)</em></strong>.com</li>
<li><strong>Content: <em>(server ip-address)</em></strong></li>
</ul>
<p>By this point, the server will have rebooted so you can log in again with:</p>
<pre>ssh root@(<strong><em>your ip-address)</em></strong></pre>
<p>To allow established connections to continue to function:</p>
<pre>iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</pre>
<p>To allow SSH traffic:</p>
<pre>iptables -A INPUT -p tcp --dport 22 -j ACCEPT</pre>
<p>To allow HTTP traffic:</p>
<pre>iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre>
<p>To allow HTTPS traffic:</p>
<pre>iptables -A INPUT -p tcp --dport 443 -j ACCEPT</pre>
<p>To allow remote database connections:</p>
<pre style="margin: 8px;">iptables -A INPUT -p tcp --dport 5432 -j ACCEPT</pre>
<p>Drop all remaining traffic:</p>
<pre>iptables -A INPUT -j DROP</pre>
<p>Save all the rules to a file:</p>
<pre>sudo iptables-save &gt; /etc/iptables.rules</pre>
<p>To enable the firewall, we need to add the rules to the network adapter by editing the interfaces file:</p>
<pre>sudo nano /etc/network/interfaces</pre>
<p>and add the line:</p>
<pre>pre-up iptables-restore &lt; /etc/iptables.rules</pre>
<p>just after <em>iface eth0 inet static</em> and make sure it is indented like the other lines. Save and exit the file then reboot the server.</p>
<p>This is a good time to create a server backup. In Rackspace, click on &#8220;Images&#8221; then click &#8220;New On-Demand Image&#8221; to create a backup of your server. This way, if something goes wrong, you can be up and running again quickly.</p>
<h2></h2>
<h2>Installing PostGIS</h2>
<p><em>Some parts of this tutorial is taken from <a href="http://wiki.openstreetmap.org/wiki/Mapnik/PostGIS#Complete_Installation_for_Ubuntu">OpenStreetMap Wiki</a></em></p>
<p>To give us access to all the software we&#8217;ll need, we need to add an additional software repository. First, enter:</p>
<pre>sudo apt-get install python-software-properties</pre>
<p>to install the command that will allow us to add new repositories. Then we can add a <a href="https://launchpad.net/~ubuntugis/+archive/ubuntugis-unstable">GIS-specific software repository</a> by doing:</p>
<pre>sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable</pre>
<p>Now we need to update the system to allow it to pull down the available software from the new repository:</p>
<pre style="margin: 8px;">sudo aptitude update</pre>
<p>We should be ready to install all of the PostGIS packages with:</p>
<pre>sudo apt-get install postgresql-9.1-postgis postgresql-contrib-9.1</pre>
<p>Now we need to setup PostGIS to make the newly installed database ready for GIS. Swtich to the database user:</p>
<pre>sudo -u postgres -iH</pre>
<p>Now we will create a user within the database that can access your maps:</p>
<pre>createuser -SdRP gisuser</pre>
<p>Enter a password for connecting to the database (it should be different from your root password).</p>
<p>Now we will create and configure a database to hold your spatial data:</p>
<pre>createdb -E UTF8 -O gisuser gis</pre>
<pre>psql -d gis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql</pre>
<pre>psql -d gis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql</pre>
<pre>psql gis -c "ALTER TABLE geometry_columns OWNER TO gisuser"</pre>
<pre>psql gis -c "ALTER TABLE spatial_ref_sys OWNER TO gisuser"</pre>
<pre>exit</pre>
<p>Now we need to configure access to our database first by editing the access file:</p>
<pre>sudo nano /etc/postgresql/9.1/main/pg_hba.conf</pre>
<p>Scroll down to the bottom of the file and change the words <strong>ident</strong> and <strong>md5 </strong>to &#8220;trust&#8221; (there should be 3). If you want to connect to this database remotely (to view your data in an external manager or view it in QGIS) you should add the line:</p>
<pre># Enable remote connections:</pre>
<pre>host    all         all         0.0.0.0/0             md5</pre>
<p>to the bottom of the file and then save and close. You&#8217;ll also need to enable remote listening by editing the main configuration file here:</p>
<pre>sudo nano /etc/postgresql/9.1/main/postgresql.conf</pre>
<p>and change the line:</p>
<pre>#listen_addresses = 'localhost'</pre>
<p>to</p>
<pre>listen_addresses = '*'</pre>
<p>(don&#8217;t forget to remove the &#8220;#&#8221; in front). Save and overwrite the file. To apply the changes, restart the database server:</p>
<pre>sudo /etc/init.d/postgresql restart</pre>
<p>To test if everything has been installed properly, log into the database as the new user we created.</p>
<pre>psql gis gisuser</pre>
<p>If you type <strong>\d</strong> you should be able to see all 3 tables. Then type <strong>\q </strong>to return.</p>
<h2></h2>
<h2>Installing Mapnik2</h2>
<p><em>Copied exactly from the <a href="https://github.com/mapnik/mapnik/wiki/UbuntuInstallation">Mapnik Wiki</a></em></p>
<p>To install Mapnik, enter:</p>
<pre>sudo add-apt-repository ppa:mapnik/nightly-2.0</pre>
<pre>sudo apt-get update</pre>
<pre>sudo apt-get install libmapnik mapnik-utils python-mapnik</pre>
<p>That&#8217;s it!</p>
<h2></h2>
<h2>Installing TileStache</h2>
<p><em>Some parts of this tutorial is taken from <a href="https://github.com/migurski/TileStache/blob/master/README">TileStache on GitHub</a></em></p>
<p>The first step in installing TileStache is to install mod_python which is the interface TileStache will use to communicate with the web server. You can install it with:</p>
<pre>sudo apt-get install libapache2-mod-python</pre>
<p>Then restart your web server with:</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p>Now we need to install some more packages that TileStache depends on. First we&#8217;ll switch to the directory where we&#8217;ll keep the new applications:</p>
<pre>cd /etc</pre>
<p>Install packages Curl and Git via aptitude to help with the install:</p>
<pre>sudo apt-get install curl</pre>
<pre>sudo apt-get install git-core</pre>
<p>Now install some python tools and libraries that are required:</p>
<pre>sudo apt-get install python-setuptools</pre>
<pre>sudo aptitude install python-dev</pre>
<pre>sudo apt-get install libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev</pre>
<p>We&#8217;ll grab and install PIP to easily install python modules:</p>
<pre>curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py</pre>
<pre>sudo python get-pip.py</pre>
<p>Now install the required python modules</p>
<pre>sudo pip install -U werkzeug</pre>
<pre>sudo pip install -U simplejson</pre>
<pre>sudo pip install -U modestmaps</pre>
<p>The Python Image Library module has some quirks in Ubuntu 11.10 so we need to do some quick fixes:</p>
<pre>sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib</pre>
<pre>sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib</pre>
<pre>sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib</pre>
<p>Before we can install it:</p>
<pre>sudo pip install -U pil</pre>
<p>Finally we&#8217;ll download TileStache from GitHub:</p>
<pre>git clone https://github.com/migurski/TileStache.git</pre>
<p>And install it globally by running the install script:</p>
<pre>cd TileStache/</pre>
<pre>python setup.py install</pre>
<p>Finally, we&#8217;ll have to add the mod_python configuration to tell our web server which URLs to have TileStache process. Start by editing the apache configuration file:</p>
<pre>sudo nano /etc/apache2/httpd.conf</pre>
<p>and add this:</p>
<pre>&lt;Directory /var/www/tiles&gt;</pre>
<pre>  AddHandler mod_python .py</pre>
<pre>  PythonHandler TileStache::modpythonHandler</pre>
<pre>  PythonOption config /etc/TileStache/tilestache.cfg</pre>
<pre>&lt;/Directory&gt;</pre>
<p>This will direct any web traffic to the &#8220;tiles&#8221; folder containing the file extension &#8220;.py&#8221; to TileStache. We just need to add a tiles directory to the web directory so we don&#8217;t get an error:</p>
<pre>mkdir /var/www/tiles</pre>
<p>Reboot your server to finish it off:</p>
<pre>reboot</pre>
<h2></h2>
<h2>Testing Your Server</h2>
<p>Once your server reboots, we can test to make sure TileStache is installed correctly and is running through mod_python and receiving maps from Mapnik.</p>
<p>In your browser, go to: http://tiles.<em style="font-weight: bold;"></em>.com/tiles/tiles.py/osm/preview.html</p>
<p>You should see a OSM tiled map fullscreen, confirming TileStache is correctly installed and running. When you work with TileStache, you can always preview your tilesets at &#8230;/tiles/tiles.py/<strong><em></em></strong>/preview.html</p>
<p>Now go to: http://tiles.<em style="font-weight: bold;"></em>.com/tiles/tiles.py/example/preview.html</p>
<p>You should see a simple gray country map which confirms that TileStache is talking to Mapnik, rendering a shapefile stored in the TileStache directory.</p>
<h2></h2>
<h2>Finished</h2>
<p>Now that everything is installed, you can go nuts with TileStache, Mapnik and PostGIS to render your own tiled maps. We&#8217;ll come back to this point in the coming weeks to show examples of how you can actually use these tools to make some maps. Some sample topics might include:</p>
<ul>
<li>Thematic cartography with TileStache and Mapnik</li>
<li>Combining raster and vector tiles to optimize mapping for iPad</li>
<li>Custom map tiles from OSM data</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=4Go-xioLCgQ:tF_9ccTB1V0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=4Go-xioLCgQ:tF_9ccTB1V0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=4Go-xioLCgQ:tF_9ccTB1V0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=4Go-xioLCgQ:tF_9ccTB1V0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=4Go-xioLCgQ:tF_9ccTB1V0:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/4Go-xioLCgQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/01/dont-panic-an-absolute-beginners-guide-to-building-a-map-server/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/01/dont-panic-an-absolute-beginners-guide-to-building-a-map-server/</feedburner:origLink></item>
		<item>
		<title>indiemapper is free</title>
		<link>http://feedproxy.google.com/~r/AxisMapsBlog/~3/K5I-DJa9LMU/</link>
		<comments>http://www.axismaps.com/blog/2012/01/indiemapper-is-free/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 16:03:34 +0000</pubDate>
		<dc:creator>David Heyman</dc:creator>
				<category><![CDATA[Indiemapper]]></category>

		<guid isPermaLink="false">http://www.axismaps.com/blog/?p=1192</guid>
		<description><![CDATA[With the start of 2012, we&#8217;ve decided to make indiemapper free to use. Since indiemapper launched in 2010, our business has grown and changed to where supporting and maintaining indiemapper is no longer a major part of what we do at Axis Maps every day. We&#8217;re making indiemapper free so that it can continue to exist as [...]]]></description>
				<content:encoded><![CDATA[<p>With the start of 2012, we&#8217;ve decided to make <a href="http://indiemapper.com">indiemapper</a> free to use. Since indiemapper launched in 2010, our business has grown and changed to where supporting and maintaining indiemapper is no longer a major part of what we do at Axis Maps every day. We&#8217;re making indiemapper free so that it can continue to exist as a useful tool for map-makers while freeing us up to be as awesome as possible at our custom cartography business.</p>
<p>To allow us to give it away for free, we&#8217;re scaling back what indiemapper does. We&#8217;ve removed all account-based online functionality including usernames / passwords, cloud storage, and map sharing. Everything else, we&#8217;ve left as is. The map-making process is still the same except you don&#8217;t have to log in AND you need to export your map before you close your browser. We&#8217;re also moving our support operations over to <a href="http://getsatisfaction.com/axismaps" target="_blank">GetSatisfaction</a> to let the community of indiemapper users share their knowledge amongst themselves.</p>
<p>We&#8217;re really happy about this change and we hope you are too. If you have any questions about the new direction of indiemapper, please let us know in the comments.</p>
<p><strong><a href="http://app.indiemapper.com">Launch indiemapper</a></strong></p>
<p><img class="alignnone" title="indiemapper" src="http://indiemapper.com/images/slides/9.png" alt="" width="515" height="333" /></p>
<p><img class="alignnone" title="indiemapper" src="http://indiemapper.com/images/slides/1.png" alt="" width="515" height="333" /></p>
<p><img class="alignnone" title="indiemapper" src="http://indiemapper.com/images/slides/5.jpg" alt="" width="515" height="333" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=K5I-DJa9LMU:Yv8S-NmUi2E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=K5I-DJa9LMU:Yv8S-NmUi2E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=K5I-DJa9LMU:Yv8S-NmUi2E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AxisMapsBlog?a=K5I-DJa9LMU:Yv8S-NmUi2E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AxisMapsBlog?i=K5I-DJa9LMU:Yv8S-NmUi2E:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AxisMapsBlog/~4/K5I-DJa9LMU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.axismaps.com/blog/2012/01/indiemapper-is-free/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.axismaps.com/blog/2012/01/indiemapper-is-free/</feedburner:origLink></item>
	</channel>
</rss>
