<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xml:base="/blog/blog.rss" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>Blog - MapBox</title>
  <link>http://mapbox.com/blog</link>
  <description>Updates from the MapBox team.</description>
  <language>en</language>
  <item>
  <title>Retina Maps Added to the MapBox iOS SDK</title>
  <link>http://mapbox.com/blog/retina-tiles-available-ios-sdk</link>
  <description>&lt;p&gt;We&amp;#8217;ve just added retina tile support to our worldwide street level base map, &lt;a href='/maps'&gt;MapBox Streets&lt;/a&gt;, with full support in our &lt;a href='/mobile'&gt;iOS SDK&lt;/a&gt;. This brings high-DPI display support for devices like the iPhone 4/4S and the new iPad.&lt;/p&gt;&lt;p&gt;Retina support means that all of the billions of images that we create, update, and store - read more about that in &lt;a href='/blog/rendering-the-world/'&gt;Young&amp;#8217;s post on rendering the world&lt;/a&gt; - are now duplicated in an additional map that&amp;#8217;s optimized for display at twice the pixel density.&lt;/p&gt;&lt;p&gt;Though it&amp;#8217;s hard to do it justice on non-retina displays (on which you are likely reading this), consider these before and after pictures:&lt;/p&gt;&lt;div&gt;
&lt;img src='http://farm9.staticflickr.com/8016/7210348634_646cb9d029_c.jpg' id='retina-comparison' /&gt;
&lt;script type='text/javascript'&gt;
$('img#retina-comparison').hover(
  function() {
    $(this).attr('src', 'http://farm8.staticflickr.com/7212/7210348514_12d1d4bcc3_c.jpg');
  },
  function() {
    $(this).attr('src', 'http://farm9.staticflickr.com/8016/7210348634_646cb9d029_c.jpg');
  }
);
&lt;/script&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Move your mouse over the image to toggle between before and after versions.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;There are a number of tricks that &lt;a href='/team/aj-ashton/'&gt;our cartographer AJ&lt;/a&gt; used to enhance the look here, including widening streets and enlarging labels (expect a more detailed blog post soon). The resulting image on retina-capable devices is incredibly sharp. Previously we had been using client-side code to draw the 256-pixel tile images into 512-pixel space. Otherwise the details are sharp but are unable to be read since true 256-pixel images take one quarter of the screen space as on non-retina devices and are generally too tiny to read. Once we&amp;#8217;ve got the details styled in a way that looks good at a true 256-pixel size, we can flip back to drawing at an actual 256-pixel screen space.&lt;/p&gt;&lt;p&gt;Here&amp;#8217;s a side-by-side comparison up close:&lt;/p&gt;&lt;img src='http://farm9.staticflickr.com/8142/7210334896_64ac0b3788.jpg' /&gt;&lt;p&gt;As you can see, we were also able to provide more context by including more features.&lt;/p&gt;&lt;p&gt;If you are using the &lt;a href='/mobile'&gt;MapBox iOS SDK&lt;/a&gt;, you only need to change two things to take advantage of these retina tiles:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;When editing in &lt;a href='http://tiles.mapbox.com'&gt;your hosting account&lt;/a&gt;, enable the &lt;code&gt;2x&lt;/code&gt; button for streets and save the changes.&lt;/li&gt;

&lt;li&gt;In the Objective-C code, use the newly saved style&amp;#8217;s TileJSON URL and be sure to set the map view&amp;#8217;s &lt;code&gt;adjustTilesForRetinaDisplay&lt;/code&gt; property to &lt;code&gt;NO&lt;/code&gt;. Tiles will then draw at the normal 256-pixel size. If you are supporting non-retina devices, you will probably want two versions of your maps, just as you have two versions of graphical assets, and detect which map to use via &lt;code&gt;[[UIScreen mainScreen] scale]&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;If you want a quick video overview of editing map styles and embedding them in an iOS app, watch our feature on &lt;a href='http://mapbox.com/blog/mapbox-streets-ios-screencast'&gt;Custom Styled Maps for iOS Apps in 5 Minutes&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We&amp;#8217;re pleased to be able to bring these updates to our users and to our developers. Stay tuned for continued updates and enhancements to our tools for making beautiful maps.&lt;/p&gt;</description>
  <pubDate>2012-05-16T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/retina-tiles-available-ios-sdk</guid>
</item>
<item>
  <title>Moldova Open Innovation Weekend 2012</title>
  <link>http://mapbox.com/blog/moldova-techcamp</link>
  <description>&lt;p&gt;&lt;a href='http://opengovpartners.org/md/og-moldova-events/moldova-open-innovation-week-2012/'&gt;Moldova Open Innovation Week&lt;/a&gt; has kicked off this week to bring together local and international experts with civil society and further stimulate the work in open government and open data in Moldova. Discussions, training sessions, and a hackathon will all focus on how open data and Moldova&amp;#8217;s new &lt;a href='http://data.gov.md/'&gt;data portal&lt;/a&gt; can be leveraged by the government and local organizations to publish and share information.&lt;/p&gt;&lt;p&gt;I&amp;#8217;ll be traveling to Chisinau to participate in the Open Innovations TechCamp on Friday and the &amp;#8220;Apps for Moldova&amp;#8221; Hackathon happening at the end of the week. As a part of the TechCamp, I&amp;#8217;ll talk about using maps to visualize data and conduct training sessions on using &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt; to design custom maps. Creating custom maps to visualize data can be done with completely open source and free tools. In preparation for the event, I wanted to walk through the process of prepping your data and using TileMill to create a custom map.&lt;/p&gt;&lt;h2 id='mapping_numbers_of_primary_health_care_centers'&gt;Mapping numbers of primary health care centers&lt;/h2&gt;&lt;p&gt;Everything from prepping your data to joining it with spatial data to designing a custom map can be quick with tools like &lt;a href='http://www.qgis.org/'&gt;QuantumGIS&lt;/a&gt;, TileMill, and MapBox. Using Ministry of Health data about the number of primary care centers per district downloaded from &lt;a href='http://data.gov.md'&gt;data.gov.md&lt;/a&gt;, we can prepare this to be mapped.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7223/7207311540_756e033990_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;h3 id='prepping_your_data'&gt;Prepping your data&lt;/h3&gt;&lt;p&gt;Data downloaded from &lt;a href='http://data.gov.md'&gt;data.gov.md&lt;/a&gt; will need to be prepped in order to be mapped. Using an open source spreadsheet editor like &lt;a href='http://www.openoffice.org/'&gt;Open Office&lt;/a&gt; (or something similar like LibreOffice), we can open the downloaded &lt;code&gt;.xls&lt;/code&gt; file from data.gov.md.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm9.staticflickr.com/8165/7207311780_66640e0750_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;To use this with spatial data we need to transpose the district names into one column and add a district ID column to help make a successful join. Here I&amp;#8217;ve renamed the columns to be short, descriptive names (I used English in my case, but any language will work).&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7215/7207311724_d40807878e.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;Now we can save our file as a &lt;code&gt;.dbf&lt;/code&gt; file to use within QuantumGIS. This is the format that a shapefile uses to store data. It can be used to join within QGIS.&lt;/p&gt;&lt;h3 id='using_quantumgis_to_join_your_data'&gt;Using QuantumGIS to join your data&lt;/h3&gt;&lt;p&gt;Administrative level shapefiles can be downloaded from &lt;a href='http://www.naturalearthdata.com/'&gt;Natural Earth&lt;/a&gt;, a free and public domain repository of spatial files. I downloaded the administrative-1 borders shapefile, extracted the Moldova spatial data, and added a district ID to help with the join. You can now load the admin shapefile and the health center &lt;code&gt;.dbf&lt;/code&gt; file into QGIS&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5120/7207311674_d2b2a37c1e_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;Now we can make the join between the two files by opening up the layer properties of the admin layer and clicking the &lt;strong&gt;joins&lt;/strong&gt; tab. Click the &lt;strong&gt;add&lt;/strong&gt; button and select the correct columns to join.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7074/7207311646_bb0c38fe38.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;We can then save our newly joined data as a new shapefile.&lt;/p&gt;&lt;h3 id='custom_map_design_with_tilemill'&gt;Custom map design with TileMill&lt;/h3&gt;&lt;p&gt;Using TileMill we can add our new data and style out a color scheme. I used &lt;a href='http://colorbrewer2.org/'&gt;Color Brewer&lt;/a&gt; to create a good looking color scheme. With just a few lines of code, we can create a shaded &lt;a href='http://en.wikipedia.org/wiki/Choropleth_map'&gt;choropleth&lt;/a&gt; map that shows the number of primary care centers per district.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm9.staticflickr.com/8025/7207311822_c52bd1dc82_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;We&amp;#8217;re looking forward to participating in the discussions and working with everyone in Moldova to create incredible maps from open data. Opening and allowing free access to government data creates great possibilities for civil society, governmental agencies, and the private sector to leverage and develop innovative products for the country&amp;#8217;s growth.&lt;/p&gt;</description>
  <pubDate>2012-05-15T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/moldova-techcamp</guid>
</item>
<item>
  <title>MapBox Static API Private Beta</title>
  <link>http://mapbox.com/blog/mapbox-static-api-private-beta</link>
  <description>&lt;p&gt;We&amp;#8217;re happy to announce that the new MapBox Static API is now available for private beta testing. The MapBox Static API gives you access to all your maps, dynamic compositing, custom styles for &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt;, and POI markers powered by the &lt;a href='http://mapbox.com/maki/'&gt;Maki icon set&lt;/a&gt; all through an elegant URL scheme that generates static images. If you&amp;#8217;re looking to integrate maps with your mobile or web application but don&amp;#8217;t need the overhead of JavaScript or a native tiling API, the MapBox Static API is perfect for you.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7090/7198065348_7f78103d23_z.jpg' alt='Static API' /&gt;&lt;/p&gt;&lt;h2 id='mapbox_static_api_overview'&gt;MapBox Static API Overview&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;What is the MapBox Static API?&lt;/strong&gt; The static API is the simplest way to show a map on your website or mobile application. Each static map is a unique image based on a simple URL containing a map ID, geographic coordinates, image dimensions, and some optional parameters. Adding custom maps to your website is as easy as writing the HTML &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Custom maps from TileMill.&lt;/strong&gt; Any custom map you create in &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt; and upload to your MapBox account is automatically integrated into the MapBox Static API. Highlight specific locations, navigate with thumbnails, paint a broad overview, and more using your custom maps.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Custom styles for MapBox Streets.&lt;/strong&gt; Control the design of MapBox Streets and integrate it directly into our Static Maps API. All of your color settings, presets, and label options are preserved when you request a map through the Static API.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Beautiful POI markers.&lt;/strong&gt; You can add dozens of Maki icons at three different sizes to your map to mark important locations or points of interest. Customize the colors of the Maki icons to fit your look or provide your own custom markers if you need full control.&lt;/p&gt;&lt;h2 id='interested_in_participating'&gt;Interested in participating?&lt;/h2&gt;&lt;p&gt;To apply for our private beta,&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href='http://mapbox.com/plans/'&gt;Sign up&lt;/a&gt; for a MapBox account if you don&amp;#8217;t already have one.&lt;/li&gt;

&lt;li&gt;&lt;a href='http://mapbox.com/contact/'&gt;Contact us&lt;/a&gt; including your username and a note about your use case.&lt;/li&gt;

&lt;li&gt;We&amp;#8217;ll get back to you with more information about our beta program and provide access to our Static API if you&amp;#8217;re eligible.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;We&amp;#8217;re excited to get our new API battle tested and as always please &lt;a href='http://mapbox.com/contact/'&gt;contact us&lt;/a&gt; if you have any questions.&lt;/p&gt;</description>
  <pubDate>2012-05-15T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/mapbox-static-api-private-beta</guid>
</item>
<item>
  <title>iOS User Location Services for MapBox SDK</title>
  <link>http://mapbox.com/blog/ios-user-location-services</link>
  <description>&lt;p&gt;We just released a new &lt;a href='https://github.com/mapbox/mapbox-ios-sdk/tree/location'&gt;beta version&lt;/a&gt; of the &lt;a href='/mobile'&gt;MapBox iOS SDK&lt;/a&gt; with support for user location services. Watch the quick video below for an overview, or read on for all the details.&lt;/p&gt;&lt;iframe src='http://player.vimeo.com/video/42151366' height='375' width='680'&gt; &lt;/iframe&gt;&lt;h3 id='user_location__showing_it_on_the_map'&gt;User location - showing it on the map&lt;/h3&gt;&lt;p&gt;We&amp;#8217;ve added an annotation class, &lt;code&gt;RMUserLocation&lt;/code&gt;, that can be enabled on an &lt;code&gt;RMMapView&lt;/code&gt; with a simple toggling of the &lt;code&gt;showsUserLocation&lt;/code&gt; property. Regardless of whether you want to track and orient the map to the user&amp;#8217;s location and heading, that data is available in the &lt;code&gt;RMUserLocation&lt;/code&gt; so that it can be used in other portions of your app as well. And just like MapKit, you can query whether the user&amp;#8217;s position is currently shown on screen with the &lt;code&gt;isUserLocationVisible&lt;/code&gt; property.&lt;/p&gt;&lt;h3 id='user_tracking__keeping_the_map_in_line'&gt;User tracking - keeping the map in line&lt;/h3&gt;&lt;p&gt;Beyond just plotting the user&amp;#8217;s location on the map, you can enable tracking modes in order to keep the map in line with their location and compass heading. Just tweak the &lt;code&gt;userTrackingMode&lt;/code&gt; property or, if you want more fine-grained control over the user interface, use the &lt;code&gt;setUserTrackingMode:animated:&lt;/code&gt; method. You can choose between &lt;code&gt;RMUserTrackingModeNone&lt;/code&gt; (the default), &lt;code&gt;RMUserTrackingModeFollow&lt;/code&gt; to keep the map centered on the user&amp;#8217;s location, or &lt;code&gt;RMUserTrackingModeFollowWithHeading&lt;/code&gt; to also keep the map rotated in the direction the user is facing.&lt;/p&gt;&lt;h3 id='delegate_callbacks__staying_informed'&gt;Delegate callbacks - staying informed&lt;/h3&gt;&lt;p&gt;We&amp;#8217;ve also implemented all of the map view delegate callbacks found in MapKit, whether you want to stay abreast of starts, stops, and potential errors when locating the user, changes to the user&amp;#8217;s location and/or compass heading, or changes to the tracking mode in order to update your app&amp;#8217;s user interface.&lt;/p&gt;&lt;h3 id='sample_app'&gt;Sample app&lt;/h3&gt;&lt;p&gt;We&amp;#8217;ve built a sample app showcasing the SDK&amp;#8217;s new user location services, as well as our worldwide street-level map &lt;a href='/maps'&gt;MapBox Streets&lt;/a&gt;. It&amp;#8217;s called MapBox Me and it&amp;#8217;s &lt;a href='https://github.com/mapbox/mapbox-me'&gt;fully open source on GitHub&lt;/a&gt; for you to download as a starting point.&lt;/p&gt;&lt;h3 id='rapid_development'&gt;Rapid development&lt;/h3&gt;&lt;p&gt;This new addition of user location services in the MapBox iOS SDK brings us feature-for-feature on par with MapKit &amp;#8211; and beyond. The new user location services come hot on the heels of our new, unrestricted &lt;a href='http://mapbox.com/blog/ios-sdk-caching/'&gt;mobile app offline caching policy&lt;/a&gt; and our &lt;a href='http://mapbox.com/blog/mapbox-streets-ios-screencast'&gt;screencast showing five minute integration&lt;/a&gt; of MapBox hosted maps into native iOS apps. Stay tuned as we continue to enhance our SDK and put more and more control into developers&amp;#8217; hands.&lt;/p&gt;</description>
  <pubDate>2012-05-14T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/ios-user-location-services</guid>
</item>
<item>
  <title>Improved British Rail Network Icons in MapBox Streets</title>
  <link>http://mapbox.com/blog/improved-british-rail-icons</link>
  <description>&lt;p&gt;Today we&amp;#8217;ve launched the first step in our efforts to improve transportation symbology in &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt; - custom icons for London&amp;#8217;s Underground and light rail systems, as well as the National Rail lines throughout Great Britain. The signs for these stations are iconic and will be better recognized on maps than our previous generic rail icons.&lt;/p&gt;&lt;iframe src='http://a.tiles.mapbox.com/v3/mapbox.mapbox-streets.html#15.00/51.5114/-0.0877' height='320' frameBorder='0' width='680'&gt;  &lt;/iframe&gt;&lt;p&gt;The map style accounts for stations that service lines on multiple rail networks, such as Underground stations with connections to National Rail routes. The stylesheet also handles clustering icons to avoid duplicate labels, since many stations are represented by multiple nodes (perhaps one for each track, or one for each entrance). At medium scales stations are grouped by name, and as you zoom in they become grouped by name then network. In most cases this makes for much cleaner cartography with minimal loss in accuracy.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7084/7177893446_9ca3fae39e.jpg' alt='Comparison of clustered vs unclustered icons' /&gt;&lt;/p&gt;&lt;h2 id='creating_and_assigning_icons'&gt;Creating and assigning icons&lt;/h2&gt;&lt;p&gt;We base the icons for a station on the contents of its &amp;#8216;network&amp;#8217; tag. If a station services multiple networks, these will usually all be included separated by a semicolon, comma, or slash. Ordering is not necessarily consistent, so we normalize this tag by breaking it up into parts, stripping spaces, lowercasing everything, and assembling it back together in alphabetical order. This way two network tags that mean the same thing but are written differently will be made consistent.&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Example network tag&lt;/th&gt;&lt;th&gt;Normalized&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style='text-align: left;'&gt;London Underground;London Overground&lt;/td&gt;&lt;td style='text-align: left;'&gt;london-overground.london-underground&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style='text-align: left;'&gt;London Overground / London Underground&lt;/td&gt;&lt;td style='text-align: left;'&gt;london-overground.london-underground&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;For stations that require multiple network icons, we design single images for the individual networks and then have a script check the database to generate all the necessary combinations. The individual images are merged as necessary with &lt;a href='http://imagemagick.org/'&gt;ImageMagick&lt;/a&gt;, and the names of the resulting files match the normalized network tag. The Carto code for assigning the icons is dead simple:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#train_stations_low[zoom&amp;gt;=15][zoom&amp;lt;=16],
#train_stations[zoom&amp;gt;=17] {
  ::icon { 
    point-file: url(&amp;quot;img/rail/[network]-12.png&amp;quot;);
    [zoom=17] { point-file: url(&amp;quot;img/rail/[network]-18.png&amp;quot;); }
    [zoom&amp;gt;17] { point-file: url(&amp;quot;img/rail/[network]-24.png&amp;quot;); }
  }
  /* ... label styles ... */
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mapnik replaces &lt;code&gt;[network]&lt;/code&gt; in the image URL with the value of the current element&amp;#8217;s &lt;code&gt;network&lt;/code&gt; column, so only a few lines of code are required for potentially hundreds of different icons.&lt;/p&gt;&lt;h2 id='how_the_clustering_works'&gt;How the clustering works&lt;/h2&gt;&lt;p&gt;We import OpenStreetMap data to a PostGIS database via &lt;a href='http://imposm.org/'&gt;Imposm&lt;/a&gt;. All railway stations are imported to their own table as points (even if a station exists in OSM as an area, it is converted). The import process adds two columns, &lt;code&gt;groupby_high&lt;/code&gt; and &lt;code&gt;groupby_low&lt;/code&gt;, that are used at render time for clustering points. The first column contains a normalized version of the stations name if it has one, or its OSM ID if it does not. The second column is the normalized name concatenated with the normalized network. As you zoom in, this accounts for stations that are near each other and have the same name, but are actually separate and require different icons.&lt;/p&gt;&lt;p&gt;We use these columns to &lt;code&gt;group by&lt;/code&gt; in our PostgreSQL &lt;code&gt;select&lt;/code&gt; statements. We generate a centroid from grouped points for a single label, and re-normalize the grouped network tags&lt;/p&gt;&lt;p&gt;In my &lt;a href='http://foss4g-na.org/schedule/cartography-with-tilemill-postgis-and-openstreetmap/'&gt;presentation at FOSS4G North America last month&lt;/a&gt;, I talked about how we like to do as much data processing as possible at the import stage for MapBox Streets. The clustering of station points is something that has to happen at render time, however, because we only want to be clustering points that are relatively close to each other. For example, there are many &amp;#8216;Union Stations&amp;#8217; across North America that should not be clustered together simply because they have the same name. Waiting until render time means that only points within a particular metatile will be considered for the grouping.&lt;/p&gt;&lt;h2 id='check_it_out'&gt;Check it out&lt;/h2&gt;&lt;p&gt;Custom icons for Great Britain are live in &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt; now, which you can start using with a &lt;a href='http://mapbox.com/plans/'&gt;free MapBox account&lt;/a&gt;. We are planning on bringing local transportation icons to more cities in the future - where should we travel next? Tweet us &lt;a href='http://twitter.com/mapbox/'&gt;@MapBox&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-05-13T11:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/improved-british-rail-icons</guid>
</item>
<item>
  <title>How We Serve Faster Maps from MapBox</title>
  <link>http://mapbox.com/blog/building-mapbox-fast-map-hosting-stack</link>
  <description>&lt;p&gt;MapBox is powered by open source, largely by &lt;a href='http://nodejs.org'&gt;Node.js&lt;/a&gt;, &lt;a href='http://backbonejs.org'&gt;Backbone.js&lt;/a&gt;, &lt;a href='http://puppetlabs.com/'&gt;Puppet&lt;/a&gt;, and &lt;a href='https://github.com/mojombo/jekyll/'&gt;Jekyll&lt;/a&gt;, and most of our stack is deployed on Amazon&amp;#8217;s high-performance cloud infrastructure. This post describes MapBox&amp;#8217;s infrastructure and how we&amp;#8217;ve overcome the challenges of hosting worldwide maps at scale and created an efficient platform.&lt;/p&gt;&lt;p&gt;MapBox is designed as a fast, redundant, full featured mapping platform. In addition to efficiently serving millions of tile images to JavaScript clients like &lt;a href='http://modestmaps.com/'&gt;ModestMaps&lt;/a&gt; and &lt;a href='http://mapbox.com/hosting/api-embed/'&gt;Leaflet&lt;/a&gt;, MapBox manages composited maps, blends alpha transparent images, combines &lt;a href='http://mapbox.com/mbtiles-spec/utfgrid/'&gt;UTFGrid interaction&lt;/a&gt; on the fly, generates flexible embed codes, tracks every map view for analytics, and exposes all this functionality to our users through our website and &lt;a href='/hosting/api/'&gt;API&lt;/a&gt;.&lt;/p&gt;&lt;h2 id='our_cloud'&gt;Our cloud&lt;/h2&gt;&lt;p&gt;MapBox makes use of cloud services in order to scale quickly with demand and avoid centralization. At any time, we&amp;#8217;re running a cluster of &lt;a href='http://aws.amazon.com/ec2/'&gt;EC2&lt;/a&gt; instances as our primary application servers. We can add more if needed within minutes. An &lt;a href='http://aws.amazon.com/elasticloadbalancing/'&gt;Elastic Load Balancer&lt;/a&gt; divides traffic between the cluster of running servers and routes around ones that become unresponsive.&lt;/p&gt;&lt;p&gt;We use &lt;a href='http://aws.amazon.com/cloudfront/'&gt;CloudFront&lt;/a&gt; as our &lt;a href='http://en.wikipedia.org/wiki/Content_delivery_network'&gt;CDN&lt;/a&gt; to distribute and cache tiles, interactivity grids, map embeds, and API request payloads in over twenty datacenters around the world so maps load quickly for everyone.&lt;/p&gt;&lt;p&gt;The custom maps that you design on your computer using &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt; are exported as &lt;a href='http://mapbox.com/mbtiles-spec/'&gt;MBTiles files&lt;/a&gt; and uploaded through &lt;a href='http://aws.amazon.com/s3/'&gt;S3&lt;/a&gt; before being propagated to the application servers for permanent storage. &lt;a href='http://aws.amazon.com/ebs/'&gt;EBS&lt;/a&gt; volumes in RAID configuration are attached to each application server and are responsible for housing the MBTiles files.&lt;/p&gt;&lt;p&gt;We use &lt;a href='http://aws.amazon.com/cloudwatch/'&gt;CloudWatch&lt;/a&gt; for monitoring and &lt;a href='http://aws.amazon.com/ses/'&gt;SES&lt;/a&gt; for transactional email. Finally, we use &lt;a href='http://aws.amazon.com/cloudformation/'&gt;CloudFormation&lt;/a&gt; to manage these services, which allows us to quickly turn on new stacks for both staging and production purposes.&lt;/p&gt;&lt;h2 id='inside_our_application_servers'&gt;Inside our application servers&lt;/h2&gt;&lt;p&gt;We have multiple application servers in operation at any given time. Each server is running a variety of processes, but the essential ones are described below.&lt;/p&gt;&lt;h3 id='the_mapbox_process'&gt;The MapBox process&lt;/h3&gt;&lt;p&gt;This is the primary custom &lt;a href='http://nodejs.org/'&gt;Node.js&lt;/a&gt; application that serves as the heart and soul of our service.&lt;/p&gt;&lt;p&gt;The server process uses a separate port to handle requests against the &lt;a href='http://mapbox.com/hosting/api/'&gt;MapBox API&lt;/a&gt; - requests for tiles, embeds, and metadata. This way we can cache these longer lived responses against the CDN and keep them super fast.&lt;/p&gt;&lt;p&gt;We can serve tiles fast because they&amp;#8217;re stored efficiently on local EBS volumes attached to each application server in the form of SQLite database files, which we have standardized as the &lt;a href='http://mbtiles.org/'&gt;MBTiles&lt;/a&gt; format. Each tile server has disk-level access to the entire collection of MBTiles files. A robust &lt;a href='https://github.com/developmentseed/node-sqlite3'&gt;sqlite3 library&lt;/a&gt; allows performance to rival other database formats and surpass speeds seen from loading individual map tiles off of a standard filesystem. With MBTiles we can also dramatically improve the performance of uploading, relocating, and deleting tiles versus filesystems that typically have very high per tile overheads.&lt;/p&gt;&lt;p&gt;The MapBox tile server is also responsible for our &lt;a href='http://mapbox.com/blog/fast-maps-tilestream-launches-compositing-modest-maps-and-new-mobile-support/'&gt;powerful compositing features&lt;/a&gt; that allow you to take multiple layers and combine them. This makes &lt;a href='http://mapbox.com/blog/custom-styles-mapbox-streets/'&gt;custom styles for MapBox Streets&lt;/a&gt; possible and results in maps that load significantly faster by reducing the number of HTTP requests and minimizing the amount of pixel information that is transferred. The results of composited tile requests are cached in our CDN as distinct tiles so subsequent requests are even faster.&lt;/p&gt;&lt;p&gt;The other port of this Node.js process is for serving application pages to our users, including the &lt;a href='http://tiles.mapbox.com/kkaefer/map/iceland'&gt;map page&lt;/a&gt;, &lt;a href='https://tiles.mapbox.com/login'&gt;login page&lt;/a&gt;, analytics pages, and the map builder features.&lt;/p&gt;&lt;p&gt;Both parts of the application are built with &lt;a href='https://github.com/developmentseed/bones'&gt;Bones&lt;/a&gt;, a client/server application framework for Node.js that uses &lt;a href='http://expressjs.com/'&gt;Express&lt;/a&gt; and &lt;a href='http://documentcloud.github.com/backbone/'&gt;Backbone.js&lt;/a&gt;. It allows you to set up MVC structures once and reuse them both on the server and the client.&lt;/p&gt;&lt;h3 id='couchdb'&gt;CouchDB&lt;/h3&gt;&lt;p&gt;We store a variety of documents in &lt;a href='http://couchdb.apache.org/'&gt;CouchDB&lt;/a&gt; databases that are replicated among all instances in the cluster. These documents include users, sessions, tile request analytics, and map metadata.&lt;/p&gt;&lt;h3 id='nginx'&gt;Nginx&lt;/h3&gt;&lt;p&gt;&lt;a href='http://nginx.org/'&gt;Nginx&lt;/a&gt; is used as a reverse proxy cache and for SSL termination. Certain images and pages are cached for anonymous users. Authenticated traffic on mapbox.com is handled over SSL, and we use Nginx to handle these connections.&lt;/p&gt;&lt;h3 id='puppet'&gt;Puppet&lt;/h3&gt;&lt;p&gt;&lt;a href='http://puppetlabs.com/'&gt;Puppet&lt;/a&gt; helps manage our server configuration: a micro EC2 instance runs as a dedicated &amp;#8216;puppet master&amp;#8217; from which application servers pull configuration updates.&lt;/p&gt;&lt;h3 id='cloudwatch_reporter'&gt;CloudWatch reporter&lt;/h3&gt;&lt;p&gt;A custom &lt;a href='http://nodejs.org/'&gt;Node.js&lt;/a&gt; application reports metrics to CloudWatch. It is invoked regularly via cron, loads metrics about the health of the instance, and reports the figures to CloudWatch. We can then configure alarms based on those metrics using the AWS console.&lt;/p&gt;&lt;h3 id='cdn_log_processor'&gt;CDN log processor&lt;/h3&gt;&lt;p&gt;Some non-critical processes only run on one application server, deemed &amp;#8220;the supernode&amp;#8221;. If the supernode fails, another instance in the cluster will automatically take on that role and spawn these unique processes. For instance, the supernode runs our log processor, which downloads tile access logs and feeds them to CouchDB to power our analytics pages.&lt;/p&gt;&lt;p&gt;This task tolerates failures because a newly crowned supernode can &amp;#8220;catch up&amp;#8221; with new logs if the previous node dies.&lt;/p&gt;&lt;h2 id='monitoring_logging_and_alerts'&gt;Monitoring, logging, and alerts&lt;/h2&gt;&lt;p&gt;We use CloudWatch and Server Density for monitoring, &lt;a href='http://loggly.com/'&gt;Loggly&lt;/a&gt; for log analysis, and &lt;a href='http://www.pagerduty.com/'&gt;PagerDuty&lt;/a&gt; to send incident alerts and manage on-call schedules.&lt;/p&gt;&lt;p&gt;CloudWatch is responsible for monitoring system level metrics such as resource utilization (CPU, disk, memory), as well as custom metrics that we report to CloudWatch using their API. For example, we check every minute that our billing system is in sync with the application. If an interruption results in inconsistent data, an alarm is triggered in CloudWatch, which will dispatch a notification to the on-call engineer.&lt;/p&gt;&lt;p&gt;Server Density makes regular requests against multiple endpoints on each server and evaluates the response times. If a server doesn&amp;#8217;t respond fast enough, an alarm is triggered.&lt;/p&gt;&lt;p&gt;Loggly allows us to quickly search through logs entries across the entire hosting system. We are running the same software on multiple machines and Loggly makes it incredibly easy to figure out where an error originated without having to login to each machine directly. We also have a few alerts configured in Loggly. Errors that occur infrequently are difficult to track down, but we can set up an alert and receive a notification as soon as one occurs.&lt;/p&gt;&lt;p&gt;Any time an alarm is triggered in CloudWatch, Server Density, or Loggly, it is sent into PagerDuty, a service that allows us to track incidents and send notifications to whoever is on-call. We have three engineers on-call 24 hours a day. PagerDuty will notify one engineer first and will automatically escalate to the other two if the primary engineer can&amp;#8217;t respond to the situation immediately.&lt;/p&gt;&lt;h2 id='development_and_deployment_strategies'&gt;Development and deployment strategies&lt;/h2&gt;&lt;p&gt;We develop MapBox entirely on our laptops - development never happens on staging server stacks. This preference affects what tools we use. We look for software, libraries, and services that can easily be set up on a computer so a new developer can get up to speed quickly. We also focus on making application bootstrap automatic, so many setup tasks are handled automatically when a new developer joining the project starts up for the first time.&lt;/p&gt;&lt;p&gt;We generally follow the &lt;a href='http://scottchacon.com/2011/08/31/github-flow.html'&gt;GitHub approach to deployment&lt;/a&gt; where our &lt;code&gt;master&lt;/code&gt; branch is always considered &amp;#8220;deployable&amp;#8221;. This means we never commit unstable code to the &lt;code&gt;master&lt;/code&gt; branch, as it may be deployed at any time by any developer (often multiple times a day).&lt;/p&gt;&lt;p&gt;Instead of using Campfire and Hubot for kicking off a deploy like GitHub, we wrote a simple bash script for doing so. You pass in a few arguments, including the destination of the deploy (staging or production) and it connects to each instance (including the puppet master) and stages a clean build of the latest &lt;code&gt;master&lt;/code&gt; branch. If the build completes on each server, the build is switched into production. It may not be as feature complete as tools like Capistrano, but it&amp;#8217;s incredibly simple and easy to understand.&lt;/p&gt;&lt;h2 id='jekyll_and_github_pages'&gt;Jekyll and GitHub Pages&lt;/h2&gt;&lt;p&gt;Static pages don&amp;#8217;t really require an industrial strength solution like node.js - &lt;a href='https://github.com/mojombo/jekyll/'&gt;Jekyll&lt;/a&gt; hits the spot for making simple, fast, and reliable static sites like &lt;a href='http://mapbox.com/'&gt;MapBox.com&lt;/a&gt;, &lt;a href='http://mapbox.com/status/'&gt;MapBox Status&lt;/a&gt;, &lt;a href='http://mapbox.com/wax/'&gt;the Wax manual&lt;/a&gt;, and &lt;a href='http://mapbox.com/blog/'&gt;this blog&lt;/a&gt;.&lt;/p&gt;&lt;h2 id='billing_and_support'&gt;Billing and support&lt;/h2&gt;&lt;p&gt;We use &lt;a href='http://chargify.com/'&gt;Chargify&amp;#8217;s&lt;/a&gt; secure, PCI compliant billing service to manage recurring payments and &lt;a href='http://tenderapp.com/'&gt;Tender&lt;/a&gt; for our &lt;a href='http://support.mapbox.com/'&gt;support site&lt;/a&gt;.&lt;/p&gt;&lt;h2 id='next_up'&gt;Next up&lt;/h2&gt;&lt;p&gt;This overview should give you a sense of how MapBox is engineered to serve custom maps quickly. Our benchmarks have shown that this architecture is able to scale incredibly well. Look forward to more posts about specific technology as well as updates to this post as our service evolves.&lt;/p&gt;</description>
  <pubDate>2012-05-11T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/building-mapbox-fast-map-hosting-stack</guid>
</item>
<item>
  <title>TileMill 0.9.1 Released</title>
  <link>http://mapbox.com/blog/tilemill-091-released</link>
  <description>&lt;p&gt;We just released &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill 0.9.1&lt;/a&gt;, which adds support for PostGIS 2.0, runs on the latest Node.js 0.6.17 release, and provides packages for the latest Ubuntu Long Term Support (LTS) distribution: 12.04 (Precise Pangolin). TileMill 0.9.1 is the culmination of a several month sprint on stability, with over 80 tickets closed. The full list of fixes and advances for this release can be found in the &lt;a href='http://mapbox.com/tilemill/docs/changelog/'&gt;changelog&lt;/a&gt;. Here are a few highlights.&lt;/p&gt;&lt;h3 id='large_rasters'&gt;Large Rasters&lt;/h3&gt;&lt;p&gt;Larger size rasters, like aerial imagery, are now viable in TileMill 0.9.1, and future releases will soon provide BigTiff support for reading geotiff&amp;#8217;s over 4GB.&lt;/p&gt;&lt;h3 id='error_feedback'&gt;Error feedback&lt;/h3&gt;&lt;p&gt;Error feedback (and log output) have been improved modestly throughout the application. Notably, when exports fail you will now see more details in the UI and in the TileMill logs. You can find where logs are located for each platform at the &lt;a href='http://mapbox.com/tilemill/docs/manual/usage/'&gt;usage docs&lt;/a&gt;.&lt;/p&gt;&lt;h3 id='map_refresh'&gt;Map refresh&lt;/h3&gt;&lt;p&gt;Users of large stylesheets like &lt;a href='https://github.com/mapbox/osm-bright'&gt;OSM Bright&lt;/a&gt; will now experience 5x faster map loading, significantly dropping the time required to see tiles rendered after saving a project. Even more speedups are in store for future releases as the Mapnik development team further &lt;a href='http://mapnik.org/news/2012/04/06/faster-map-loading/'&gt;optimizes&lt;/a&gt;.&lt;/p&gt;&lt;h3 id='startup_experience'&gt;Startup experience&lt;/h3&gt;&lt;p&gt;Startups are smoother now on OS X and Windows. TileMill gracefully starts up even if fonts are encountered that cannot be loaded (OS X users of webfonts rejoice). The Windows startup process has been re-written and should no longer require being run as an administrator.&lt;/p&gt;&lt;h3 id='tile_skipping'&gt;Tile Skipping&lt;/h3&gt;&lt;p&gt;The export process now detects tiles representing fully solid colors and stores them only once in the mbtiles file, saving on storage space and encoding time.&lt;/p&gt;&lt;h2 id='getting_started_with_the_new_release'&gt;Getting started with the new release&lt;/h2&gt;&lt;p&gt;If you&amp;#8217;re a new TileMill user, you can download the new release at &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill.com&lt;/a&gt;. As always, don&amp;#8217;t hesitate to &lt;a href='http://support.mapbox.com/'&gt;ask us a question&lt;/a&gt; if you have trouble.&lt;/p&gt;&lt;p&gt;All upgrading users should note the items in the &lt;a href='http://mapbox.com/tilemill/docs/upgrade/'&gt;upgrade docs&lt;/a&gt;. Most notably, the meaning of &lt;code&gt;marker-width&lt;/code&gt; and/or &lt;code&gt;marker-size&lt;/code&gt; has changed. The sizes now properly represent pixels. To upgrade, simply edit stylesheets to make the values twice as large, which will maintain the previous look.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;OS X&lt;/strong&gt; users can simply &amp;#8220;Check for Updates…&amp;#8221;&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7213/7158846856_4d76b4d75d.jpg' alt='check for updates on TileMill' /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ubuntu&lt;/strong&gt; users can type:&lt;/p&gt;&lt;pre&gt;
sudo apt-get update
sudo apt-get install tilemill libmapnik nodejs
&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt; users should uninstall TileMill using the provided Uninstaller and manually delete any Start Menu items (since the 0.9.0 uninstaller &lt;a href='https://github.com/mapbox/tilemill/issues/1185'&gt;was unable to clear them out&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;We hope this release helps you enjoy making maps even more. We have a lot in store for the future, and don&amp;#8217;t hesitate to get in touch with ideas or questions at &lt;a href='http://support.mapbox.com/'&gt;support.mapbox.com&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-05-08T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/tilemill-091-released</guid>
</item>
<item>
  <title>State Of The Map USA: The Game</title>
  <link>http://mapbox.com/blog/state-of-the-map-us</link>
  <description>&lt;p&gt;&lt;a href='http://stateofthemap.us/'&gt;State Of The Map USA&lt;/a&gt; just announced that this year&amp;#8217;s conference will take place in Portland, Oregon the weekend of October 13th and 14th, and with the announcement launched a new online presence that is not your typical conference website. &lt;a href='http://mapbox.com/team/saman-bemel-benrud/'&gt;Saman&lt;/a&gt; and I collaborated to make a site that&amp;#8217;s interactive in new ways: it&amp;#8217;s a game.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7118/7006494932_2730e5b15e_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;The site uses &lt;a href='http://modestmaps.com/'&gt;Modest Maps&lt;/a&gt; at its core, with a lot of neat tweaks.&lt;/p&gt;&lt;p&gt;Since State Of The Map is for and about &lt;a href='http://openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt;, the basemap is of course OpenStreetMap. But for this site we wanted a slightly different look, so I implemented a Modest Maps layer type called &lt;a href='https://gist.github.com/2431946'&gt;modLayer&lt;/a&gt;, which lets you define a custom function that uses &lt;a href='http://diveintohtml5.info/canvas.html'&gt;HTML5 Canvas&lt;/a&gt; to modify each tile.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7039/7007110008_22eabdbdff_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;The function can pixellate tiles, recolor them, and much more, but in this case it tones down the map. Since this requires &lt;a href='http://www.w3.org/TR/cors/'&gt;CORS&lt;/a&gt; support to work and the standard (in terms of image elements and canvas) has gone unimplemented in Safari, Internet Explorer, and Mobile Safari, it falls back to normal OSM tiles on those devices. The &lt;a href='https://gist.github.com/2560830'&gt;filter we use for this site&lt;/a&gt; is a good example of how this works.&lt;/p&gt;&lt;p&gt;The site uses &lt;a href='http://mapbox.com/mmg/'&gt;mmg&lt;/a&gt; to position markers on the map and custom keyboard bindings to let the character walk towards them. It&amp;#8217;s based off of the &lt;a href='https://github.com/stamen/modestmaps-js/blob/master/examples/keyboard/index.html'&gt;ThrowableHandler&lt;/a&gt; example from Modest Maps, but with a callback that allows the application to understand the walking direction and speed. You can check out &lt;a href='http://stateofthemap.us/js/keyboard.js'&gt;the source to the handler&lt;/a&gt;, and, while this site doesn&amp;#8217;t use a library for other keyboard events, we might adopt &lt;a href='https://github.com/madrobby/keymaster'&gt;keymaster&lt;/a&gt; as the number of actions increases.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7216/7153146773_fd5a725225_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;Saman created a series of walking and idle sprites to give the character a bit of life - bouncing, running, blinking, and so on. Some of the other elements, like the fish, are &lt;a href='http://en.wikipedia.org/wiki/Animated_GIF#Animated_GIF'&gt;animated GIFs&lt;/a&gt; for combined using &lt;a href='http://www.lcdf.org/gifsicle/'&gt;gifsicle&lt;/a&gt; and designed, like the sprite, in &lt;a href='http://inkscape.org/'&gt;Inkscape&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Performance on the site is a matter of optimizing the many elements that could be &amp;#8216;activated&amp;#8217; at any time - some of which are affected by location, and others more statefully by the actions of the user. Right now the site is relatively performant - it makes use of &lt;a href='http://paulirish.com/2011/requestanimationframe-for-smart-animating/'&gt;getAnimationFrame&lt;/a&gt; instead of &lt;code&gt;setTimeout&lt;/code&gt; if available in-browser, but there&amp;#8217;s a lot more work to do in making map-centered experiences like this fast and interactive.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm9.staticflickr.com/8168/7153222079_9aac667896_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;The site has quite a few little secrets - places you can go, things you can do. It&amp;#8217;ll probably gain quite a few more before the conference. After all, it&amp;#8217;s all about creating new things with OpenStreetMap, open source code, and exploring.&lt;/p&gt;</description>
  <pubDate>2012-05-07T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/state-of-the-map-us</guid>
</item>
<item>
  <title>Offline Caching for the MapBox iOS SDK</title>
  <link>http://mapbox.com/blog/ios-sdk-caching</link>
  <description>&lt;p&gt;We now offer unrestricted control for caching &lt;a href='/maps'&gt;MapBox Streets&lt;/a&gt; on mobile devices with the &lt;a href='/mobile'&gt;MapBox iOS SDK&lt;/a&gt;, supporting both app developers who want fine-grained control of app storage size and performance, as well as for users who want the optimum use of bandwidth and the best performance for the maps in an app. In short, you can cache MapBox Streets custom styled maps (see how to put these into your app in five minutes in our &lt;a href='/blog/mapbox-streets-ios-screencast'&gt;latest screencast&lt;/a&gt;) as much as you&amp;#8217;d like, for as long as you&amp;#8217;d like, which is unprecedented compared to the policies of other map providers.&lt;/p&gt;&lt;p&gt;This will be huge whether you run a check-in service where users most often use maps around their home city, a role-playing game where you are defending your local turf, or a travel app where you want to select a region and take the map offline. This is all part of our larger platform push, supporting great developers by giving them total control of their maps.&lt;/p&gt;&lt;p&gt;Here&amp;#8217;s the relevant section of the &lt;a href='/tos'&gt;terms of service&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;Proxying and/or intermediate caching of MapBox Maps is prohibited. Mobile clients may cache MapBox Maps on consumer devices for offline use and performance purposes. Further redistribution from a cache is prohibited.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 id='how_tiles_are_loaded'&gt;How tiles are loaded&lt;/h3&gt;&lt;p&gt;When a map view is shown and the user starts panning and zooming around to explore an area, the SDK requests the necessary tiles based on the layers that are shown. For example, maybe it&amp;#8217;s just &lt;a href='/maps'&gt;MapBox Streets&lt;/a&gt; that&amp;#8217;s shown currently (check out &lt;a href='/blog/mapbox-streets-ios-screencast'&gt;how easy it is&lt;/a&gt; to get that in your app). The &lt;code&gt;RMMapBoxSource&lt;/code&gt; tile source checks its local cache of tiles before ever trying to request data over the network, so if a tile has been downloaded recently, it is instantly recalled and used to reload into the map.&lt;/p&gt;&lt;h3 id='how_the_tile_cache_works'&gt;How the tile cache works&lt;/h3&gt;&lt;p&gt;By default, the Route-Me rendering engine that our SDK is built upon stores the 1,000 most recently downloaded tile images. Once more room is needed, the oldest tiles are deleted from cache. The developer can also remove all tiles whenever desired with &lt;code&gt;RMMapView&lt;/code&gt;&amp;#8217;s aptly-named &lt;code&gt;removeAllCachedImages&lt;/code&gt; method. But we&amp;#8217;ve also added the capability to manage the tile cache based on length of time the tiles are in the cache.&lt;/p&gt;&lt;p&gt;For example, creating the &lt;code&gt;RMTileCache&lt;/code&gt; with an &lt;code&gt;expiryPeriod&lt;/code&gt; of 60 seconds/minute &lt;code&gt;x&lt;/code&gt; 60 minutes/hour &lt;code&gt;x&lt;/code&gt; 24 hours/day &lt;code&gt;x&lt;/code&gt; 7 days &lt;code&gt;=&lt;/code&gt; 604,800 will cause tiles to stay in the cache no longer than a week, without regard to the number of tiles, before the SDK will automatically delete the older tiles to keep things tidy.&lt;/p&gt;&lt;h3 id='many_potential_uses'&gt;Many potential uses&lt;/h3&gt;&lt;p&gt;Allowing the developer this kind of control, as well as specifically enforcing it in &lt;a href='/tos'&gt;our terms of service&lt;/a&gt;, really changes the traditional power balance in this type of scenario. The developer has complete control over giving their users offline capabilities, as well as refreshing map styles based on &lt;a href='/blog/custom-styles-mapbox-streets'&gt;changes by the developer&lt;/a&gt; whenever they want, either with app updates or based on time constraints. The power really is in the developer&amp;#8217;s hands.&lt;/p&gt;</description>
  <pubDate>2012-05-04T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/ios-sdk-caching</guid>
</item>
<item>
  <title>Custom Styled Maps for iOS Apps in 5 minutes</title>
  <link>http://mapbox.com/blog/mapbox-streets-ios-screencast</link>
  <description>&lt;p&gt;This quick screencast shows how easy it is to add totally custom designed street maps to a native iOS app with the new &lt;a href='http://mapbox.com/mobile/'&gt;MapBox iOS SDK&lt;/a&gt;, our &lt;a href='http://mapbox.com/blog/introducing-mapbox-ios-sdk/'&gt;open source alternative to MapKit&lt;/a&gt;. Using the &lt;a href='https://github.com/mapbox/mapbox-ios-example'&gt;example app&lt;/a&gt; as a starting point, the video covers the process of styling a new custom map with your free MapBox account and loading that map into your app. Learn more about the MapBox iOS SDK at &lt;a href='http://mapbox.com/mobile/'&gt;mapbox.com/mobile&lt;/a&gt;.&lt;/p&gt;&lt;iframe src='http://player.vimeo.com/video/41383926' frameborder='0' height='450' width='650'&gt; &lt;/iframe&gt;</description>
  <pubDate>2012-05-02T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/mapbox-streets-ios-screencast</guid>
</item>
<item>
  <title>GeoDC Meetup on Crisis Mapping Tomorrow (Wednesday)</title>
  <link>http://mapbox.com/blog/geodc-crisis-mapping</link>
  <description>&lt;p&gt;The &lt;a href='http://www.meetup.com/Geo-DC/events/58473832/'&gt;next GeoDC meetup&lt;/a&gt; is &lt;strong&gt;tomorrow (Wednesday, May 2) at 7:00 pm&lt;/strong&gt; at &lt;a href='http://stetsons-dc.com/'&gt;Stetson&amp;#8217;s&lt;/a&gt; and will focus on crisis mapping. With the &lt;a href='http://hot.openstreetmap.org/'&gt;Humanitarian OpenStreetMap&lt;/a&gt; board in town this week along with lots of international development folks for the &lt;a href='http://www.interaction.org/forum-2012'&gt;InterAction forum&lt;/a&gt;, it is a great time to focus on how mapping can be used in humanitarian work, disaster response, and preparedness.&lt;/p&gt;&lt;p&gt;There are five lightning talks on the agenda:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Nicolas Chavent will talk about the Humanitarian OpenStreetMap team&amp;#8217;s role in Haiti since the earthquake.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href='http://harrywood.co.uk/'&gt;Harry Wood&lt;/a&gt; will walk through how anyone can help the Humanitarian OpenStreetMap Team respond in a crisis and grow the open geo data set in the impacted region.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;John Crowley will talk about ongoing experiments at Camp Roberts to integrate crisis mapping into official geospatial systems of disaster response institutions.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href='https://twitter.com/#!/schuyler'&gt;Schuyler Erle&lt;/a&gt; will talk about community mapping and citizen reporting in the jungles of Mexico.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href='http://maploser.com/'&gt;Kate Chapman&lt;/a&gt; will talk about her work bringing together village leaders and students to map critical buildings in Jakarta.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The meetup will start at 7:00 pm, with introductions and presentations kicking off at 7:30 pm. I recommend arriving early as it will be crowded, with 90 people RSVPing so far. We&amp;#8217;ll be at the upstairs bar at Stetson&amp;#8217;s near the intersection of 16th and U streets NW. For more details check out the &lt;a href='http://www.meetup.com/Geo-DC/events/58473832/'&gt;event listing&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This meetup is just one of the events happening around this topic this week. The World Bank and InterAction are holding a &lt;a href='http://mappingfordisasters.eventbrite.com/'&gt;free workshop&lt;/a&gt; on open source mapping tools on Thursday, and before that there is a panel at the Wilson Center discussing using tools like OpenStreetMap to better respond to disasters. For more information on these events, check out my &lt;a href='http://developmentseed.org/blog/2012/apr/30/week-dc-tech/'&gt;Week in DC Tech roundup&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The GeoDC group meets once a month. For updates, &lt;a href='http://www.meetup.com/Geo-DC/'&gt;join the meetup group&lt;/a&gt; or &lt;a href='https://twitter.com/#!/geo_dc'&gt;follow @geo_dc&lt;/a&gt; on Twitter.&lt;/p&gt;</description>
  <pubDate>2012-05-01T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/geodc-crisis-mapping</guid>
</item>
<item>
  <title>Visualizing Global Forest Height</title>
  <link>http://mapbox.com/blog/visualizing-global-forest-height</link>
  <description>&lt;p&gt;At &lt;a href='http://www.ecohacknyc.org/#program'&gt;EcoHackNYC&lt;/a&gt; last weekend, I spent a lot of time talking with fantastic people about publishing maps from raster data using TileMill. A &lt;a href='http://earthobservatory.nasa.gov/IOTD/view.php?id=77637'&gt;great post&lt;/a&gt; from NASA&amp;#8217;s &lt;a href='http://earthobservatory.nasa.gov/'&gt;Earth Observatory&lt;/a&gt; on a new dataset inspired to make my own visualization of global forest heights, and I wanted to capture the process of working with raster data in TileMill.&lt;/p&gt;&lt;iframe src='http://a.tiles.mapbox.com/v3/villeda.simard-forests.html#8/-9.836/-61.565' height='450' frameBorder='0' width='650'&gt; &lt;/iframe&gt;&lt;p&gt;Funky blue-to-fusia colors dramatically expose clear patterns of deforestation visible throughout the Amazon near Rodonia.&lt;/p&gt;&lt;h2 id='raster_mapping_with_open_source_tools'&gt;Raster mapping with open source tools&lt;/h2&gt;&lt;p&gt;The high-resolution (1km) data is available for download from the &lt;a href='http://lidarradar.jpl.nasa.gov/'&gt;project&amp;#8217;s website&lt;/a&gt;. You&amp;#8217;ll notice that it&amp;#8217;s saved as a &lt;a href='http://en.wikipedia.org/wiki/GeoTIFF'&gt;geotiff&lt;/a&gt;, an open &lt;a href='(http://en.wikipedia.org/wiki/GIS_file_formats#Raster'&gt;raster&lt;/a&gt; format for geo-referenced images. A variety of open source tools exist for processing raster data. I used &lt;a href='http://hub.qgis.org/projects/quantum-gis'&gt;QuantumGIS&lt;/a&gt; to open the image and start styling. Once colors have been decided, &lt;a href='http://www.gdal.org/'&gt;GDAL&lt;/a&gt; allows you to burn your new color ramp into your image. After saving, use &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt; to bake your map to mbtiles and upload it to MapBox Hosting.&lt;/p&gt;&lt;h3 id='picking_out_colors_in_quantumgis'&gt;Picking out colors in QuantumGIS&lt;/h3&gt;&lt;p&gt;After selecting the &amp;#8216;style&amp;#8217; tab in the properties pane, set the Colormap drop down menu to &amp;#8216;ColorMap&amp;#8217;.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7239/6972988928_2234a27262_z.jpg' alt='colormap' /&gt;&lt;/p&gt;&lt;p&gt;Now head over to the ColorMap tab. Set the &amp;#8216;Number of Entries&amp;#8217; field to 5, and hit classify. This will classify your data into quantiles.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm9.staticflickr.com/8142/7119069289_d7deebb55c_z.jpg' alt='quantile' /&gt;&lt;/p&gt;&lt;p&gt;QGIS should default to a pretty ridiculous blue-to-red color ramp. You can edit the colors by clicking on them directly, or by specifying a pre-determined ramp from the drop down menu.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7212/6972989008_fdc44fb64e_z.jpg' alt='picker' /&gt;&lt;/p&gt;&lt;h3 id='using_gdal_to_color_your_raster_data'&gt;Using GDAL to color your raster data&lt;/h3&gt;&lt;p&gt;Once you&amp;#8217;ve picked out a color ramp you like, it&amp;#8217;s time to use GDAL to permanently re-color your image. Grab the RGB values from the color picker, pictured above, and copy them into a .txt file with your favorite text editor. The first column will need to be your data values from qgis, followed by the red, green, and blue values, each separated by a tab. No need for column header. Here&amp;#8217;s the ramp I used.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;0   0   0   0
18.25   0   17  73
36.5    84  0   167
54.7    186 0   219
65  255 4   248&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I tweaked the data values to exaggerate the color ramp, but the differences should be minor. Save the file as &lt;code&gt;simard-forest-ramp.txt&lt;/code&gt;. Now you can run the following command from your command line:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;gdaldem color-relief ~/&amp;lt;path-to&amp;gt;/Simard_Pinto_3DGlobalVeg_JGR.tif simard-forest-ramp.txt output-forest.tif&lt;/code&gt;&lt;/pre&gt;&lt;h3 id='tilemill'&gt;TileMill&lt;/h3&gt;&lt;p&gt;Open a new project in TileMill and load your .tiff as a new layer. Get rid of the &lt;code&gt;#countries&lt;/code&gt; layer, and change the map background so that your Carto looks like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Map { background-color: #000}

#simardforests {
  raster-opacity:1;
  raster-scaling: bilinear;
  }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Your map should appear. Just hit upload in the export menu to start sharing your map online. Read our &lt;a href='http://mapbox.com/help'&gt;documentation&lt;/a&gt; for more info on &lt;a href='http://mapbox.com/tilemill/docs/guides/reprojecting-geotiff/'&gt;reprojecting geotiffs&lt;/a&gt; and &lt;a href='http://mapbox.com/tilemill/docs/guides/terrain-data/'&gt;working with terrain data&lt;/a&gt;. If you want more inspiration, check out some of previous work like &lt;a href='https://twitter.com/#!/aj_ashton'&gt;AJ&amp;#8217;s&lt;/a&gt; map of gridded population density&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.flickr.com/photos/developmentseed/6286976630/in/photostream/lightbox/'&gt;&lt;img src='http://farm7.staticflickr.com/6100/6286976630_3569786983_o.png' alt='' /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks to &lt;a href='https://twitter.com/#!/jatorre'&gt;Javier&lt;/a&gt; and the &lt;a href='http://www.vizzuality.com/'&gt;Vizzuality&lt;/a&gt; team for putting on EcoHackNYC. It was great to see so many highly motivated scientists, designers, data analysts, and hardware hackers come together to hack on some of the most compelling new technologies being used to address environmental problems. Among the highlights were &lt;a href='http://csabuilder.herokuapp.com/'&gt;csabuilder&lt;/a&gt;, a tool to crowdsource interest in Community Supported Agriculture, and new balloons for &lt;a href='http://publiclaboratory.org/home'&gt;The Public Laboratory&lt;/a&gt;&amp;#8217;s balloon mapping kit. One of the most impressive projects was &lt;a href='http://saleiva.github.com/EcoHack2012/#'&gt;Species Sphere&lt;/a&gt;, an interactive visualization of the international trade in wildlife built with &lt;a href='http://cartodb.com/'&gt;CartoDB&lt;/a&gt; and &lt;a href='http://mbostock.github.com/d3/'&gt;d3.js&lt;/a&gt; put together in only eight hours. Check out Vizzuality&amp;#8217;s &lt;a href='http://blog.vizzuality.com/post/21666739936/visualizing-endangered-species-trades-at-ecohacknyc'&gt;blog&lt;/a&gt; for a full recap.&lt;/p&gt;</description>
  <pubDate>2012-04-27T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/visualizing-global-forest-height</guid>
</item>
<item>
  <title>New 'Pay as You Grow' Pricing Plans</title>
  <link>http://mapbox.com/blog/granular-pricing</link>
  <description>&lt;p&gt;We just launched new &amp;#8216;pay as you grow&amp;#8217; pricing plans, allowing you to pay for what you use without needing to upgrade to the next plan tier if you have overages. We are now measuring all usage by map views to make our pricing plans easier to understand. Additionally, we just published the progressive discounts we offer high-volume subscribers.&lt;/p&gt;&lt;h2 id='granular_pricing'&gt;Granular pricing&lt;/h2&gt;&lt;p&gt;All MapBox accounts now have automatic overage pricing of $1 per 1,000 additional map views, allowing you to pay for the extra map views you use without having to upgrade your account to the next level when you go over your limit. For example, if you have a $5 Basic plan and see a spike in traffic, there is no need to jump all the way to a $50 Standard plan - you can just pay for the overages incurred. At at certain point, it will become more cost-effective to transition to a larger plan if you see consistent overages, but you can decide that at any time.&lt;/p&gt;&lt;h2 id='increased_plus_and_premium_account_limits'&gt;Increased Plus and Premium account limits&lt;/h2&gt;&lt;p&gt;We&amp;#8217;ve raised the map views for our Plus and Premium accounts by 100,000 and 200,000 views respectively, while offering them at the same prices as before. Plus accounts now provide 250,000 map views per month for $149 and Premium accounts now provide 1,000,000 views per month for $499. More details are available on the &lt;a href='http://mapbox.com/plans/'&gt;MapBox pricing page&lt;/a&gt;.&lt;/p&gt;&lt;h2 id='highvolume_discounts'&gt;High-volume discounts&lt;/h2&gt;&lt;p&gt;We&amp;#8217;ve published our &lt;a href='http://mapbox.com/plans/premium/'&gt;Premium-level cost structure&lt;/a&gt;. Now you can see at a glance the discounts we give for high-volume subscribers, ranging up to 30% off, or &lt;a href='http://mapbox.com/pricing/'&gt;use the new calculator&lt;/a&gt; to figure out exactly what this means for you.&lt;/p&gt;&lt;p&gt;We want to be transparent, because MapBox is incredibly cost competitive. Our CPM - or cost per thousand map views - is &lt;a href='http://mapbox.com/switch/'&gt;several times lower than Google&amp;#8217;s&lt;/a&gt;. And while we don&amp;#8217;t include all the features and services of the Google Maps API, like imagery and geocoding, we offer beautiful design, custom styles, and the flexibility of open data, which is ideal for those looking for a custom world base map upon which to build a location feature for a website or mobile app.&lt;/p&gt;&lt;p&gt;All current subscribers have the option to opt-in to take advantage of the new plans. Just visit your account page and select &amp;#8216;change your plan&amp;#8217;. If you&amp;#8217;d prefer to keep your current bandwidth-based plan, no problem - you&amp;#8217;re automatically grandfathered in.&lt;/p&gt;&lt;p&gt;MapBox is &lt;a href='http://mapbox.com/plans/'&gt;free to get started&lt;/a&gt;. Try out making a custom map now. And &lt;a href='/contact'&gt;let us know&lt;/a&gt; if you have any questions or would like to talk about a custom plan to meet your needs.&lt;/p&gt;</description>
  <pubDate>2012-04-24T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/granular-pricing</guid>
</item>
<item>
  <title>Surveying Brasilia with Walking Papers</title>
  <link>http://mapbox.com/blog/surveying-brasilia</link>
  <description>&lt;p&gt;&lt;a href='http://mapbox.com/blog/osm-mapping-brasilia/'&gt;Last week in Brasilia&lt;/a&gt; Eric and I joined efforts with &lt;a href='https://twitter.com/sparkdf'&gt;Luiz Carlos&lt;/a&gt; from the Track Source community, &lt;a href='https://twitter.com/#!/fczuardi'&gt;Fabricio&lt;/a&gt; and &lt;a href='https://twitter.com/#!/limareis'&gt;Lima&lt;/a&gt; from Transparency Hackers, and &lt;a href='https://twitter.com/#!/johnwonderlich'&gt;John&lt;/a&gt; from the Sunlight Foundation to survey several neighborhoods for street names and points of interest to add to &lt;a href='http://www.openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt;. We were in town for the &lt;a href='http://www.opengovpartnership.org/Brasilia2012'&gt;Open Government Partnership meetings&lt;/a&gt; and wanted to showcase the power of open geo data and take advantage of being in town to catch up with local community members and do useful work. Here&amp;#8217;s a quick first report before we start entering the collected data into OpenStreetMap.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7091/7104558195_47e9329228_z.jpg' alt='Getting started for surveying the Cruzeiro neighborhood of Brasilia' /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Getting started for surveying the Cruzeiro neighborhood of Brasilia. Photo: John Wonderlich.&lt;/em&gt;&lt;/p&gt;&lt;h2 id='prep_work'&gt;Prep work&lt;/h2&gt;&lt;p&gt;We prepped our surveys in Washington, DC by doing &lt;a href='http://mapbox.com/blog/osm-mapping-brasilia/'&gt;extensive satellite tracing&lt;/a&gt; to create good ground coverage. Before we got on the plane, we selected a series of neighborhoods by street name sparseness and accessibility and printed &lt;a href='http://walking-papers.org/'&gt;walking papers&lt;/a&gt; for them. Walking papers is a great tool from &lt;a href='http://mike.teczno.com/'&gt;Michal Migurski&lt;/a&gt; offering essentially a quick way to print OpenStreetMap onto a series of papers, linking them back to OpenStreetMap with a QR code.&lt;/p&gt;&lt;p&gt;Underestimating the dimensions of Brasilia (it&amp;#8217;s at least twice as large as a first look at the map would suggest), we had initially printed our walking papers too small but this was quickly fixed by printing new ones at the hotel before we got started. Next time, we&amp;#8217;ll take a much closer look at satellite imagery before getting started in a city we don&amp;#8217;t know.&lt;/p&gt;&lt;h2 id='on_the_ground'&gt;On the ground&lt;/h2&gt;&lt;p&gt;We had one team in a car surveying the neighborhoods, and another team walking. The car had the clear advantage in Brasilia, where traffic density is comparatively low and street blocks are large. Working with two to three people per team, we collected block name data and points of interest, entering it on our walking papers.&lt;/p&gt;&lt;p&gt;Aside from the walking papers, we used GPS trackers and cameras to capture points of interest and, from time to time, our assumed location on the walking paper. By synchronizing the camera&amp;#8217;s time to the GPS tracker&amp;#8217;s time, the photos can be geo coded and used later for reference. This saved us time jotting down long names of points of interest and gives us a way to double check the accuracy of our survey now.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm9.staticflickr.com/8149/7104556669_a24207ce4b_z.jpg' alt='Photo of a POI' /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Saving time by taking a picture of what otherwise needs to be jotted down. Screenshot from JOSM after geocoding.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7217/6958486890_80e45decfd_z.jpg' alt='Photo of walking papers and pen' /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Double checking by taking a picture of the assumed location on the map. Screenshot from JOSM after geocoding.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A special challenge was posed by the fact that Brasilia does not use street names, but rather block names. Brasilienses are quick to admit that the system is messy and indeed it was hard to wrap our minds around it. Even with the help of local Luiz Carlos, we had trouble, as the block system slightly varies in different parts of the city. In Taguatinga for instance, commercial blocks occupy a full city block, while residential blocks occupy two block halves around a street.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7254/7104556919_f12068d1a9_z.jpg' alt='Screenshot of a block in Taguatinga' /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Taguatinga residential block sign. Q stands for Quadra (block), S for Sul (South). C is the alphabetic section letter, 9, 10, 11 are different block numbers found on this street.&lt;/em&gt;&lt;/p&gt;&lt;h2 id='data_entry'&gt;Data entry&lt;/h2&gt;&lt;p&gt;We&amp;#8217;re using &lt;a href='http://josm.openstreetmap.de/'&gt;JOSM&lt;/a&gt; for data entry. In JOSM we loaded up our GPS tracks and synchronized them with the pictures we had taken. Once the pictures are synchronized, it&amp;#8217;s straightforward to enter data in OpenStreetMap using the information in pictures and the notes on our papers&amp;#8230; if it wasn&amp;#8217;t for Brasilia&amp;#8217;s block system.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7178/6958486764_e6d5aaab25.jpg' alt='Synchronizing + synchronized tracks' /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Synchronizing the GPS tracker time with camera time by simply taking a picture of the GPS time. Screenshot shows the JOSM dialog comparing the actual photo time with the time read from the GPS tracker.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Before we enter actual block name data, we need to better resolve how to capture them. Turning block names into street names (like Google and others do) forces awkward compromises where streets are shown between two differently named blocks. At the same time, OpenStreetMap does not seem to provide an appropriate tag for blocks. Existing block name data in Brasilia is entered inconsistently. I invite you to join our &lt;a href='http://lists.openstreetmap.org/pipermail/tagging/2012-April/009878.html'&gt;discussion on the mailing list&lt;/a&gt; to hammer out a solution.&lt;/p&gt;&lt;p&gt;If this has gotten you interested in surveying your own neighborhood or the next place you&amp;#8217;re traveling to, &lt;a href='http://www.learnosm.org/beginners-guide/chapter-5-using-walking-papers/'&gt;LearnOSM - Using Walking Papers&lt;/a&gt; is a great guide to get started.&lt;/p&gt;</description>
  <pubDate>2012-04-23T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/surveying-brasilia</guid>
</item>
<item>
  <title>Open Mapping Coming to a Campus Near You</title>
  <link>http://mapbox.com/blog/open-mapping-college-campuses</link>
  <description>&lt;p&gt;We just wrapped up a mapping sprint adding building footprints to college campuses in &lt;a href='http://openstreetmap.org'&gt;OpenStreetMap&lt;/a&gt;, which we prioritized since that&amp;#8217;s where students check in using social apps that are switching to &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets/'&gt;MapBox Streets&lt;/a&gt;. To find colleges that needed more data added to OpenStreetMap we started by looking at schools where students spend more time on their phones than on their studies: party schools.&lt;/p&gt;&lt;p&gt;We researched &lt;a href='http://www.huffingtonpost.com/2011/04/14/top-party-schools-playboy_n_849215.html#s264482&amp;amp;title=University_of_Colorado'&gt;Playboy&amp;#8217;s Top Ten Party Schools&lt;/a&gt; and found a handful of campuses that lacked building footprints and pathways in OpenStreetMap. Then we combed through all U.S. colleges with more than 25,000 students from U.S. News and World Report&amp;#8217;s &lt;a href='http://colleges.usnews.rankingsandreviews.com/best-colleges/rankings/national-universities/data/sort+total_all_students/sortdir+desc'&gt;National University Ranking&lt;/a&gt; and emerged with a list of roughly 20 universities that needed additional features. Here are our results.&lt;/p&gt;&lt;h3 id='university_of_oregon'&gt;University of Oregon&lt;/h3&gt;&lt;p&gt;Before editing, the University of Oregon had many footpaths on OpenStreetMap but zero buildings. After tracing all buildings, quick communications with the university got us the greenlight to use the building names from their website.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5035/7085494657_7f3b81036b_z.jpg' alt='University of Oregon in OpenStreetMap' /&gt;&lt;/p&gt;&lt;h3 id='louisiana_state_university'&gt;Louisiana State University&lt;/h3&gt;&lt;p&gt;With almost 29,000 students, Louisiana State University had almost no buildings on the map. You can see how that&amp;#8217;s changed after our tracing efforts. &lt;img src='http://farm8.staticflickr.com/7049/6939433722_e5d74c6bde_z.jpg' alt='Louisiana State University in OpenStreetMap' /&gt;&lt;/p&gt;&lt;h3 id='university_of_central_florida'&gt;University of Central Florida&lt;/h3&gt;&lt;p&gt;The University of Central Florida is the second largest campus in the nation and one of the fastest growing schools in the world, with more than 50,000 students. &lt;img src='http://farm6.staticflickr.com/5232/6939483214_52c024bc91_z.jpg' alt='University of Central Florida in OpenStreetMap' /&gt;&lt;/p&gt;&lt;p&gt;Here&amp;#8217;s a close up of UCF&amp;#8217;s athletic facilities. &lt;img src='http://farm8.staticflickr.com/7140/7085511613_c2df8c396f_z.jpg' alt='University of Central Floridas Athletic Facilities in OpenStreetMap' /&gt;&lt;/p&gt;&lt;h2 id='adding_your_campus_on_openstreetmap'&gt;Adding your campus on OpenStreetMap&lt;/h2&gt;&lt;p&gt;While adding building and footpath traces to OpenStreetMap, we reached out to these colleges to get permission to add building names to OSM based on their online maps. This worked remarkably well, and we received some great feedback and learned exciting things about ongoing campus mapping projects in the process. University of Oregon, for instance, is beginning a program where geography students will update and maintain the University&amp;#8217;s buildings, paths, and roads in OpenStreetMap. Some schools like the &lt;a href='http://maps.rdms.udel.edu/map/index.php'&gt;University of Delaware&lt;/a&gt; and the &lt;a href='http://terpnav.cs.umd.edu/map/'&gt;University of Maryland&lt;/a&gt; are already using OpenStreetMap as the base layer for their online campus maps. The fact that the majority of U.S. universities already had comprehensive coverage in OpenStreetMap shows how easy it is for schools and students to keep their data up to date. As OSM becomes increasingly easy to edit and customize, we hope to see many other universities using and maintaining their campuses here.&lt;/p&gt;&lt;p&gt;If your campus is missing on OpenStreetMap, you can easily become a contributor and add your most frequented campus buildings to the map. All you have to do is &lt;a href='https://www.openstreetmap.org/user/new'&gt;sign up&lt;/a&gt; and follow our directions to &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;begin editing&lt;/a&gt;. Once you have &lt;a href='http://josm.openstreetmap.de/'&gt;JOSM&lt;/a&gt; downloaded and running, trace any necessary footpaths and use the buildings tool to trace university buildings. To do this go to JOSM&amp;#8217;s Preferences, select the plug-ins tab, and add the “buildings” plug-in.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5231/6941361082_bef656fae1_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;If you know the building names, you can add them. If you don&amp;#8217;t you can always try emailing your university to get permission to use their campus map as a naming reference. After you have the buildings and names added, upload changes, and now your campus is on the map!&lt;/p&gt;</description>
  <pubDate>2012-04-23T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/open-mapping-college-campuses</guid>
</item>
<item>
  <title>Using Open Source Tools to Map Health Data</title>
  <link>http://mapbox.com/blog/open-source-to-map-health-data</link>
  <description>&lt;p&gt;Today I&amp;#8217;m at the &lt;a href='http://www.uniteforsight.org/conference/'&gt;Global Health and Innovation Conference&lt;/a&gt; at Yale University to talk about using open source tools to map public health data. The annual conference brings together students and professionals to discuss advances in technology and tools for global health and international development. I&amp;#8217;m excited to hear what others are working on and to share examples on how MapBox&amp;#8217;s tools can be used to map global health data.&lt;/p&gt;&lt;p&gt;Specifically, I will walk through how to make this map.&lt;/p&gt;&lt;iframe src='http://a.tiles.mapbox.com/v3/devseed.map-hw6ew799.html#6/0.808/41.995' height='400' frameBorder='0' width='600'&gt; &lt;/iframe&gt;&lt;p&gt;&lt;em&gt;Hexagon gridded density map of Kenya&amp;#8217;s health facilities&lt;/em&gt;&lt;/p&gt;&lt;h2 id='how_to_make_the_map'&gt;How to make the map&lt;/h2&gt;&lt;p&gt;A map like this can be published using open source tools that are freely available: &lt;a href='http://www.qgis.org/'&gt;QuantumGIS&lt;/a&gt; and &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt;. I&amp;#8217;ll talk about how the greater availability and openness of organizations and governments make it easier to access key datasets that can then be used to gain a better understanding topics and regions. For this map, I simply downloaded the master health facility list made available by the &lt;a href='https://opendata.go.ke/'&gt;Kenya Open Data&lt;/a&gt; project. I can browse and manipulate the data using QuantumGIS. Here I&amp;#8217;ve used the grid function to create an arbitrary grid and then counted the number of facilities within each grid polygon. Using a grid for density allows for the quick aggregation of data along more understandable geographies than an administrative area.&lt;/p&gt;&lt;p&gt;I then designed a custom map in just a few clicks and lines of code. TileMill allows me to create custom classes for defining a scale and determine the best visualization of the data to create a fully interactive map. I can then export the map to publish it on the web or use on a mobile device. Using &lt;a href='http://mapbox.com/plans/'&gt;MapBox Hosting&lt;/a&gt;, I can publish to the web and leverage the API and embed functionality to post the map here.&lt;/p&gt;&lt;p&gt;I&amp;#8217;ll be presenting in Session L31: Policy &amp;amp; Research Tools at 1:15 pm. Here are the slides for my idea pitch:&lt;/p&gt;&lt;iframe marginheight='0' scrolling='no' src='http://www.slideshare.net/slideshow/embed_code/12621497' marginwidth='0' frameborder='0' height='455' width='640'&gt; &lt;/iframe&gt;</description>
  <pubDate>2012-04-21T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/open-source-to-map-health-data</guid>
</item>
<item>
  <title>Integrating MapBox with ESRI and more in Wax</title>
  <link>http://mapbox.com/blog/integrating-mapbox-esri-in-wax</link>
  <description>&lt;p&gt;&lt;a href='http://mapbox.com/wax/'&gt;MapBox Wax&lt;/a&gt; now supports &lt;a href='http://www.esri.com/'&gt;ESRI&lt;/a&gt;&amp;#8217;s &lt;a href='http://help.arcgis.com/en/webapi/javascript/arcgis/'&gt;Javascript API 2.8&lt;/a&gt;, allowing you to easily use tiles from your MapBox account in your ESRI projects and &lt;a href='http://mapbox.com/tour/'&gt;use super-fast interactive overlays&lt;/a&gt;.&lt;/p&gt;&lt;h2 id='open_source_integration'&gt;Open Source Integration&lt;/h2&gt;&lt;iframe src='http://mapbox.com/wax/esri_embed.html' frameBorder='0' height='350' width='600'&gt;(map)&lt;/iframe&gt;&lt;p&gt;You can &lt;a href='http://mapbox.com/wax/'&gt;download Wax v6.0.0-beta5&lt;/a&gt; and see demos &amp;amp; docs of the &lt;a href='http://mapbox.com/wax/interaction.html'&gt;interaction control&lt;/a&gt; and &lt;a href='http://mapbox.com/wax/connector.html'&gt;connector&lt;/a&gt; now.&lt;/p&gt;&lt;p&gt;Wax already supported many APIs: &lt;a href='http://leaflet.cloudmade.com/'&gt;Leaflet&lt;/a&gt;, &lt;a href='http://modestmaps.com/'&gt;Modest Maps&lt;/a&gt;, &lt;a href='http://openlayers.org/'&gt;OpenLayers&lt;/a&gt;, and &lt;a href='https://developers.google.com/maps/documentation/javascript/'&gt;Google Maps API v3&lt;/a&gt;. In most cases, the very basic &lt;a href='https://github.com/mapbox/wax/tree/master/connectors'&gt;integration code&lt;/a&gt; is minimal - &lt;a href='https://github.com/mapbox/wax/blob/master/connectors/leaf/connector.js'&gt;Leaflet&amp;#8217;s connector&lt;/a&gt;, for instance, is only 11 lines long.&lt;/p&gt;&lt;p&gt;Containing the variation between APIs makes it possible to have more consistent code. Here are the APIs for all of the available toolkits:&lt;/p&gt;&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='c1'&gt;// Modest Maps&lt;/span&gt;
&lt;span class='nx'&gt;map&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;addLayer&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;new&lt;/span&gt; &lt;span class='nx'&gt;wax&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;mm&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;connector&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;tilejson&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
&lt;span class='c1'&gt;// Leaflet&lt;/span&gt;
&lt;span class='nx'&gt;map&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;addLayer&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;new&lt;/span&gt; &lt;span class='nx'&gt;wax&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;leaf&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;connector&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;tilejson&lt;/span&gt;&lt;span class='p'&gt;))&lt;/span&gt;
&lt;span class='c1'&gt;// Google Maps&lt;/span&gt;
&lt;span class='nx'&gt;map&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;mapTypes&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;set&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s1'&gt;&amp;#39;mapbox&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='k'&gt;new&lt;/span&gt; &lt;span class='nx'&gt;wax&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;g&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;connector&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;tilejson&lt;/span&gt;&lt;span class='p'&gt;));&lt;/span&gt;
&lt;span class='c1'&gt;// OpenLayers&lt;/span&gt;
&lt;span class='nx'&gt;map&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;addLayer&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;wax&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;ol&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;connector&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;tilejson&lt;/span&gt;&lt;span class='p'&gt;));&lt;/span&gt;
&lt;span class='c1'&gt;// ESRI&lt;/span&gt;
&lt;span class='nx'&gt;map&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;addLayer&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='k'&gt;new&lt;/span&gt; &lt;span class='nx'&gt;wax&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;esri&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;connector&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;tilejson&lt;/span&gt;&lt;span class='p'&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;If you don&amp;#8217;t want to use Wax in your project, just check out the &lt;a href='https://github.com/mapbox/wax/tree/master/connectors'&gt;source code of the connector&lt;/a&gt; and use it as a guide - it&amp;#8217;s open source.&lt;/p&gt;&lt;p&gt;In order to make this spread maintainable, Wax v6 has a high level of abstraction that allows &lt;a href='https://github.com/mapbox/wax/blob/master/control/esri/interaction.js'&gt;the new ESRI interaction control&lt;/a&gt; to be 50 lines of concise code - containing application logic in the &lt;a href='https://github.com/mapbox/wax/tree/master/control/lib'&gt;shared library&lt;/a&gt;.&lt;/p&gt;&lt;h2 id='using_the_esri_javascript_api'&gt;Using the ESRI Javascript API&lt;/h2&gt;&lt;p&gt;The ESRI API is most similar to &lt;a href='http://openlayers.org/'&gt;OpenLayers&lt;/a&gt; in that it devotes much of its complexity to dealing with projections and coordinate systems, and treats much of the web component as an implementation detail. This has some negative ramifications in that Wax needs to rely on a private API in order to provide interactivity - the API doesn&amp;#8217;t document access to tile elements.&lt;/p&gt;&lt;p&gt;ESRI&amp;#8217;s Javascript API is actually &lt;a href='http://resources.arcgis.com/content/web/arcgis-javascript-api-download'&gt;available for download&lt;/a&gt; by those who have ESRI accounts. Despite taking advantage of a great deal of open source code in the &lt;a href='http://dojotoolkit.org/'&gt;Dojo toolkit&lt;/a&gt;, ESRI&amp;#8217;s code is explicitly copywritten and labeled as &lt;code&gt;TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL&lt;/code&gt;. This is unfortunate in an ecosystem of open and understandable code.&lt;/p&gt;&lt;p&gt;Being able to mix tools is what enables people to create powerful stories through maps. Wax is one of the many tools that can be built from the &lt;a href='http://mapbox.com/hosting/api/'&gt;MapBox API&lt;/a&gt; and the open standards we&amp;#8217;ve been pushing like &lt;a href='https://github.com/mapbox/tilejson'&gt;TileJSON&lt;/a&gt; and &lt;a href='https://github.com/mapbox/utfgrid-spec'&gt;UTFGrid&lt;/a&gt;. Recently &lt;a href='http://www.nps.gov/npmap/'&gt;NPMap&lt;/a&gt; from the National Park Service and &lt;a href='http://drupal.org/project/slashmaps'&gt;slashmaps&lt;/a&gt; from &lt;a href='https://seabourneinc.com/projects/fcc/'&gt;Seabourne Consulting&lt;/a&gt; have demonstrated other ways to use the toolkit and integrate maps into websites.&lt;/p&gt;&lt;p&gt;Integrating with ESRI and Google Maps open up new possibilities for MapBox users, and we hope this bridges web and GIS worlds, getting the best of both.&lt;/p&gt;</description>
  <pubDate>2012-04-19T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/integrating-mapbox-esri-in-wax</guid>
</item>
<item>
  <title>Introducing the MapBox iOS SDK</title>
  <link>http://mapbox.com/blog/introducing-mapbox-ios-sdk</link>
  <description>&lt;p&gt;We&amp;#8217;re proud to introduce our MapBox iOS SDK, a powerful open source tool that lets developers on Apple&amp;#8217;s iPhone and iPad build custom, high performance maps with tight integration into &lt;a href='http://mapbox.com/plans'&gt;MapBox Hosting&lt;/a&gt;, offline maps capabilities, embedded interactivity, and gorgeous customizability by leveraging our design studio &lt;a href='http://mapbox.com/tilemill'&gt;TileMill&lt;/a&gt;.&lt;/p&gt;&lt;a href='/mobile'&gt;&lt;img src='http://farm6.staticflickr.com/5339/6938732258_1b161dfa42.jpg' /&gt;&lt;/a&gt;&lt;p&gt;We&amp;#8217;re kicking off this beta release with a suite of resources that we hope to enhance going forward.&lt;/p&gt;&lt;h3 id='sdk_codebase'&gt;SDK codebase&lt;/h3&gt;&lt;p&gt;Open source on GitHub and based on the popular &lt;a href='https://github.com/route-me/route-me'&gt;Route-Me&lt;/a&gt; mapping library, our &lt;a href='/mobile'&gt;SDK&lt;/a&gt; is everything you need to add custom maps to your app. Pan, pinch, and zoom and watch your map instantly snap into place. We will continue to develop enhancements to the codebase and merge in improvements and bug fixes from the open source community. You can follow the &lt;a href='https://github.com/mapbox/mapbox-ios-sdk/issues'&gt;issue queue&lt;/a&gt; to track our progress and open feature requests of your own.&lt;/p&gt;&lt;h3 id='custom_styled_maps'&gt;Custom styled maps&lt;/h3&gt;&lt;p&gt;Get direct integration with &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt;, providing worldwide block-level coverage based on high quality open data from &lt;a href='http://www.openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt;. MapBox Streets comes in a &lt;a href='http://mapbox.com/blog/custom-styles-mapbox-streets/'&gt;variety of gorgeous preset color schemes&lt;/a&gt; or you can customize the features of your map to fit the look and feel of your app. This is all built right into the control panel of your MapBox.com user account, letting you change the colors of the base map in seconds. It&amp;#8217;s a beautiful alternative to Google Maps.&lt;/p&gt;&lt;a href='/maps'&gt;&lt;img src='http://farm7.staticflickr.com/6049/7030394287_c94965062d.jpg' style='border: 0px;' /&gt;&lt;/a&gt;&lt;h3 id='overview_documentation'&gt;Overview documentation&lt;/h3&gt;&lt;p&gt;We&amp;#8217;ve created &lt;a href='/mobile/docs/sdk'&gt;general documentation&lt;/a&gt; on the installation of the tools, major parts of the SDK, and the use of the main classes. Read this if you want a solid technical overview. We are also looking into Xcode-native API documentation available in an Atom feed. We really like what projects like &lt;a href='http://zwaldowski.github.com/BlocksKit/'&gt;BlocksKit&lt;/a&gt; have done with this. Follow the &lt;a href='https://github.com/mapbox/mapbox-ios-sdk/issues/4'&gt;enhancement request&lt;/a&gt; on this for future updates.&lt;/p&gt;&lt;h3 id='example_ios_app'&gt;Example iOS app&lt;/h3&gt;&lt;p&gt;We&amp;#8217;ve built a simple &lt;a href='https://github.com/mapbox/mapbox-ios-example'&gt;open source app&lt;/a&gt; showing use of online, offline, and embedded interactivity map layers in a straightforward iPhone example. We&amp;#8217;ll continue to update this app as our API and features evolve.&lt;/p&gt;&lt;h3 id='mobile_apps_guide'&gt;Mobile apps guide&lt;/h3&gt;&lt;p&gt;We have a &lt;a href='/mobile/docs'&gt;planning resource&lt;/a&gt; for developers thinking about mobile apps - pointers to technology and examples and important considerations for thinking about maps in a mobile context.&lt;/p&gt;&lt;h3 id='support_resources'&gt;Support resources&lt;/h3&gt;&lt;p&gt;On our support site, we&amp;#8217;ve created a &lt;a href='http://support.mapbox.com/discussions/mapbox-ios-sdk'&gt;public forum&lt;/a&gt; for discussing use of the SDK in your own apps. Like the rest of our support site, we hope to grow the discussion archive here and continually make it more useful to app developers.&lt;/p&gt;&lt;h3 id='go_make_an_app'&gt;Go make an app!&lt;/h3&gt;&lt;p&gt;While this is a beta release, we are planning to evolve the SDK rapidly in the coming months. We&amp;#8217;re sure that the &lt;a href='http://mapbox.com/switch/'&gt;year of the open map&lt;/a&gt; still has a lot of surprises in store and we want to remain on the forefront of the most dynamic mobile platform as they continue. Go give our &lt;a href='/mobile'&gt;SDK&lt;/a&gt; or &lt;a href='https://github.com/mapbox/mapbox-ios-example'&gt;example app&lt;/a&gt; a spin and see how you easily you can start using custom maps created with open source tools in your own development.&lt;/p&gt;</description>
  <pubDate>2012-04-17T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/introducing-mapbox-ios-sdk</guid>
</item>
<item>
  <title>How to Map Where You've Mapped in OpenStreetMap</title>
  <link>http://mapbox.com/blog/how-to-map-contributions-openstreetmap</link>
  <description>&lt;p&gt;Over the last month we&amp;#8217;ve been &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;tracing satellite imagery&lt;/a&gt; in &lt;a href='http://www.openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt;, most recently the &lt;a href='http://mapbox.com/blog/tracing-openstreetmap-sahel/'&gt;Sahel region of West Africa&lt;/a&gt; and &lt;a href='http://mapbox.com/blog/osm-mapping-brasilia/'&gt;Brasilia&lt;/a&gt;. A major focus throughout the process has been on how best to &lt;a href='http://mapbox.com/blog/osm-analysis/'&gt;analyze and fix OpenStreetMap data&lt;/a&gt; to make it the best world map available, including ways to track your own contributions. Here&amp;#8217;s a quick step-by-step tutorial on how to visualize the areas of the world that you have mapped on OpenStreetMap, like we have in the example below. If you want to get involved in improving OpenStreetMap, check out our &lt;a href='https://github.com/mapbox/mapping'&gt;public issue tracker&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7229/6893986266_19ef76baa8_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Our team&amp;#8217;s contributions to Burkina Faso&lt;/em&gt;&lt;/p&gt;&lt;h2 id='tools_to_start_visualizing'&gt;Tools to start visualizing&lt;/h2&gt;&lt;p&gt;Before getting started, you&amp;#8217;ll want to be familiar with OpenStreetMap&amp;#8217;s open source desktop editor &lt;a href='http://josm.openstreetmap.de/'&gt;JOSM&lt;/a&gt; and the process of &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;tracing satellite imagery&lt;/a&gt;. Then to begin download the region you want to visualize and save the layer as an &lt;code&gt;.osm&lt;/code&gt; file.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7093/6938708522_cd7d3de44f_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;Next you need to convert this OSM file to GeoJSON format for styling in &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt;, which will require installing &lt;a href='http://www.python.org/download/releases/2.7.3/'&gt;Python 2.7&lt;/a&gt; if you don&amp;#8217;t have it. To do this &lt;a href='http://mapbox.com/team/tom-macwright/'&gt;Tom&lt;/a&gt; wrote a python script that outputs each node as a geo-referenced point along with the user associated and a timestamp marking when it was created.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;from xml.etree.ElementTree import ElementTree
from datetime import datetime
import time
from sys import argv
import json
tree = ElementTree()

if (len(argv) &amp;lt; 3):
    print &amp;quot;specify an input &amp;amp; output filename, and year. input is osm, output is geojson&amp;quot;
    exit()

tree.parse(argv[1])

geojson = { &amp;quot;type&amp;quot;: &amp;quot;FeatureCollection&amp;quot;, &amp;quot;features&amp;quot;: [] }

nodeidx = {}

print &amp;#39;mapping nodes&amp;#39;

for n in tree.iterfind(&amp;#39;node&amp;#39;):
    if (n.attrib.has_key(&amp;#39;user&amp;#39;)):
        pt = {
            &amp;quot;type&amp;quot;: &amp;quot;Feature&amp;quot;,
            &amp;quot;geometry&amp;quot;: {
                &amp;quot;type&amp;quot;: &amp;#39;Point&amp;#39;,
                &amp;quot;coordinates&amp;quot;: [float(n.attrib[&amp;#39;lon&amp;#39;]), float(n.attrib[&amp;#39;lat&amp;#39;])]
            },
            &amp;quot;properties&amp;quot;: {
                &amp;quot;user&amp;quot;: n.attrib[&amp;#39;user&amp;#39;],
                &amp;quot;version&amp;quot;: n.attrib[&amp;#39;version&amp;#39;],
                &amp;quot;timestamp&amp;quot;: time.mktime(datetime.strptime(n.attrib[&amp;#39;timestamp&amp;#39;], &amp;#39;%Y-%m-%dT%H:%M:%SZ&amp;#39;).utctimetuple())
            }
        }
        geojson[&amp;#39;features&amp;#39;].append(pt)

json.dump(geojson, open(argv[2], &amp;#39;w&amp;#39;))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copy and paste this code into a text editor and save the file as &lt;code&gt;converts-times.py&lt;/code&gt; to the same directory housing your OSM file. Then navigate to this directory in terminal and run the following command:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;python converts-times.py ouagadougou.osm ougadougou-time.json&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will output the &lt;code&gt;oouagadougou-time.json&lt;/code&gt; file in the same directory. Now you are ready to import into TileMill. In TileMill create a new project and navigate to the layer list in the toolbar to add a layer.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5238/6938466456_4294abe930.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;In the &lt;code&gt;Datasource&lt;/code&gt; browser navigate to your &lt;code&gt;.json&lt;/code&gt; file, give it an ID, and save the layer.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7070/7084542995_1393f2b826_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;h2 id='styling_in_tilemill'&gt;Styling in TileMill&lt;/h2&gt;&lt;p&gt;Now comes the fun part - styling your visualization. For our purposes, we wanted to gauge the progress being made in the regions we were mapping while also providing the context to allow viewers to locate where they are in the world. With that in mind, we went with a dark gray marker fill for the layer as a whole, while styling each individual user differently with bright colors to make their contributions pop.&lt;/p&gt;&lt;h3 id='stylemss'&gt;Style.mss&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;Map { background-color:#000; }

#countries {
  line-color:#fff;
  line-join:round;
  line-width:0.5;
  }

@blue: #00aacc;
@magenta: #ff0094;
@green: #0F0;
@red: #fc0303;
@yellow: #FF0;
@grey: #2d2c2c;

#ouagadougou {
  marker-width:1;
  marker-line-opacity:0;
  marker-allow-overlap:true;
  marker-fill:@grey;
  [timestamp &amp;gt;= 1330581600] [version = &amp;#39;1&amp;#39;] {
  [user = &amp;#39;Chad Lawlis&amp;#39;] { marker-fill: @magenta;} 
  [user = &amp;#39;Rub21&amp;#39;] { marker-fill: @blue;}
  [user = &amp;#39;Dan Wood&amp;#39;] {marker-fill: @yellow;}
  [user = &amp;#39;mayar&amp;#39;] {marker-fill: @green;}
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We also wanted to limit points for each user to only nodes created (excluding nodes altered or tagged) to provide the most honest representation of OSM growth, while limiting individual contributions by date added. We went with all nodes created on or after March 1, 2012, using the unix timestamp 1330581600, which you can convert with any time stamp translator online.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7095/6938466604_5f25dcd393_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;With a bit of &lt;a href='http://mapbox.com/tilemill/docs/guides/advanced-legends/'&gt;html/css in the legend&lt;/a&gt;, you are ready to export the visualization. Navigate to &lt;code&gt;Export&lt;/code&gt; in the main toolbar and select PNG.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5280/6938466670_cf3617d5f7_m.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;Hold shift while dragging over the area you wish to export, enter the file size and name, and select export.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5196/7084543305_3b93440f85_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;Once the file has uploaded, hit save. You now have a visualization of where you have mapped in OpenStreetMap.&lt;/p&gt;&lt;p&gt;Remember to include &lt;a href='http://www.openstreetmap.org/copyright'&gt;OSM attribution&lt;/a&gt; where appropriate, and be sure to check out our &lt;a href='https://github.com/mapbox/mapping'&gt;public issue tracker&lt;/a&gt; for OpenStreetMap contributions if you are looking to get involved.&lt;/p&gt;</description>
  <pubDate>2012-04-16T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/how-to-map-contributions-openstreetmap</guid>
</item>
<item>
  <title>Letter-Spacing in a Multilingual World</title>
  <link>http://mapbox.com/blog/multilingual-character-spacing</link>
  <description>&lt;p&gt;On Wednesday at the &lt;a href='http://foss4g-na.org/'&gt;FOSS4G North America conference&lt;/a&gt; here in Washington, DC I spoke about some of the technical and design details that went into the cartography of &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt;. One of the subjects I touched on was typography and methods we are using to make it work well in many different languages at once.&lt;/p&gt;&lt;p&gt;The main typographic tool I discussed was letter-spacing because of the various challenges we ran into with it. This is a design element that is useful to indicate that a label covers a relatively large area, and something we also apply to street names to keep the letters from bunching up around curves.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7190/6927990348_a0ff1a99ed_z.jpg' alt='Kamloops' /&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href='http://mapnik.org'&gt;Mapnik&lt;/a&gt; renderer supports letter-spacing and can be adjusted with &lt;a href='http://mapbox.com/carto'&gt;Carto&lt;/a&gt; in &lt;a href='http://tilemill.com'&gt;TileMill&lt;/a&gt;. This is the simplest and most straight forward way to define letter-spacing:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;text-character-spacing: 2;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the past this would only work for labels positioned on points, not labels positioned along lines (as road names often are). For a long time we took advantage of &lt;a href='http://mapnik.org/news/2009/12/16/mapnik_regex_replace/'&gt;Mapnik&amp;#8217;s replace() feature&lt;/a&gt; to fake letter-spacing in these situations by replacing every character in a label with itself plus a space (or multiple spaces). This is no longer necessary with bleeding edge versions of Mapnik.&lt;/p&gt;&lt;p&gt;There is still a problem though. Our map of the world contains text in many different languages and writing systems, including scripts like Arabic and Bengali. The characters in these scripts are meant to flow together and remain attached, not spread apart at all. Applying letter-spacing effectively breaks such text.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5464/6927990434_b5b9e25e75_z.jpg' alt='Dont forget about Arabic' /&gt;&lt;/p&gt;&lt;p&gt;To get around this we come back to the same text replacement hack we were using before, but with a more specific expression to match.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;text-name:&amp;quot;[name].replace(&amp;#39;([^؀-ۿঀ-৿])&amp;#39;,&amp;#39;\1 &amp;#39;)&amp;quot;;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here we are replacing &lt;strong&gt;most&lt;/strong&gt; characters with themselves plus a space, however the regular expression does not match characters falling within the Unicode blocks for Arabic and Bengali characters. (Note that as of TileMill 0.9.0 the replace feature does not support Unicode text in the Windows or Mac versions, so this is a Linux-only example for now. The next update should address this issue.)&lt;/p&gt;&lt;p&gt;Doing these replacements at the character level is important because labels are not necessarily restricted to a single language.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5114/6927990398_27551f3d4c_z.jpg' alt='Abu Dhabi' /&gt;&lt;/p&gt;&lt;p&gt;Something important to note in the above code snippet is that the replacement space is a &lt;strong&gt;non-breaking space&lt;/strong&gt;. This is necessary for labels placed on points where there will potentially be a line break. Using a normal space in that situation could cause the label to break in the middle of a word.&lt;/p&gt;&lt;p&gt;Another thing about spaces - there are &lt;strong&gt;lots of different kinds&lt;/strong&gt;. Wikipedia &lt;a href='http://en.wikipedia.org/wiki/Space_%28punctuation%29#Spaces_in_Unicode'&gt;lists about two dozen in Unicode&lt;/a&gt;. What&amp;#8217;s cool about this is that you can use some of them to alleviate the lack of control you have with the replacement hack versus traditional letter-spacing methods. Only want to space out your text a little bit? Try a &lt;strong&gt;thin space&lt;/strong&gt; (&lt;code&gt;U+2009&lt;/code&gt;) or a &lt;strong&gt;hair space&lt;/strong&gt; (&lt;code&gt;U+200A&lt;/code&gt;). There&amp;#8217;s also a &lt;strong&gt;narrow no-break space&lt;/strong&gt; (&lt;code&gt;U+202F&lt;/code&gt;), useful for slight spacing in multi-line situations.&lt;/p&gt;&lt;p&gt;Ideally we can figure out ways to improve the flexibility of typography tools in Mapnik. Hermann Kraus has &lt;a href='http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/herm/22002'&gt;proposed a Google Summer of Code project&lt;/a&gt; to address issues relating to non-Latin text, which will be an important aspect. But for the short and medium term we&amp;#8217;ll continue to look for hacks like this to make sure our maps look great in all languages.&lt;/p&gt;&lt;p&gt;I&amp;#8217;ll blog about several other ideas from my &lt;a href='http://foss4g-na.org/schedule/cartography-with-tilemill-postgis-and-openstreetmap/'&gt;Cartography with TileMill, PostGIS, and OpenStreetMap session&lt;/a&gt;, and in the meantime here are my slides.&lt;/p&gt;&lt;iframe src='http://www.slideshare.net/slideshow/embed_code/12530418' frameborder='0' height='497' width='595'&gt; &lt;/iframe&gt;</description>
  <pubDate>2012-04-13T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/multilingual-character-spacing</guid>
</item>
<item>
  <title>OpenStreetMap Open Government Partnership Mapping Party in Brasilia</title>
  <link>http://mapbox.com/blog/osm-mapping-brasilia</link>
  <description>&lt;p&gt;&lt;a href='http://www.openstreetmap.org'&gt;OpenStreetMap&lt;/a&gt; is a critical open data platform for governments embracing open data and is shaping up to be a big focus at the upcoming &lt;a href='http://www.opengovpartnership.org/Brasilia2012'&gt;OGP High-Level Conference&lt;/a&gt; in Brasilia next week. Eric and I are participating in Tuesday&amp;#8217;s &lt;a href='http://www.opengovpartnership.org/news/innovation-village'&gt;OGP Innovation Village&lt;/a&gt;, where we will present our open source mapping tools and MapBox Streets, which is powered by OpenStreetMap, and the panel “Open Data As a Means, Not an End: Getting to Impact” on Wednesday morning. To kick off the OGP meetings we will spend Sunday afternoon mapping Brasilia in OpenStreetMap. We would love it if you joined us.&lt;/p&gt;&lt;p&gt;A lot is already moving. Brasilia has great coverage on OpenStreetMap and it is rapidly improving. &lt;a href='http://www.openstreetmap.org/user/Rub21'&gt;Ruben&lt;/a&gt;, &lt;a href='http://www.openstreetmap.org/user/Chad%20Lawlis'&gt;Chad&lt;/a&gt;, and &lt;a href='http://www.openstreetmap.org/user/Dan%20Wood'&gt;Dan&lt;/a&gt; from our team have spent the last two weeks tracing many of Brasilia&amp;#8217;s surrounding cities. Here is a look at the progress made by &lt;em&gt;all&lt;/em&gt; OpenStreetMap contributors since the beginning of the month.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7226/6924998468_6b6d925bc6_z.jpg' alt='OpenStreetMap contributions in Brazil this month' /&gt;&lt;/p&gt;&lt;p&gt;For our mapping on Sunday on the ground, we are excited to add local knowledge. We plan to prepare &lt;a href='http://walking-papers.org/'&gt;walking papers&lt;/a&gt;, grab a camera and a GPS, get in a car, and collect street name and point of interest data. We are still figuring out which areas to focus on but we&amp;#8217;ll likely pick &lt;a href='http://osm.org/go/NuO3Zw7h-'&gt;Taguatinga and around&lt;/a&gt; as this is most accessible to us. Let us know of specific areas you think would benefit from better local geo information.&lt;/p&gt;&lt;p&gt;If you would like to join us, we will meet on Sunday (that&amp;#8217;s April 15) in the lobby of the &lt;strong&gt;Comfort Inn, Setor Hoteleiro-Projeção I, Taguatinga&lt;/strong&gt; at 11:00 am. You don&amp;#8217;t need anything particular to participate, and if you have a camera and a GPS (maybe just your smart phone) bring it along.&lt;/p&gt;&lt;p&gt;If you&amp;#8217;re interested, please send me an email to alex &lt;code&gt;at&lt;/code&gt; mapbox &lt;code&gt;dot&lt;/code&gt; com by Saturday or find us on Twitter at &lt;a href='http://twitter.com/ericg'&gt;@ericg&lt;/a&gt; and &lt;a href='https://twitter.com/lxbarth'&gt;@lxbarth&lt;/a&gt;. Looking forward to it!&lt;/p&gt;</description>
  <pubDate>2012-04-12T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/osm-mapping-brasilia</guid>
</item>
<item>
  <title>Expanding Mapnik's Cartographic Capabilities</title>
  <link>http://mapbox.com/blog/expanding-mapnik-carto</link>
  <description>&lt;p&gt;We are well into the the &lt;a href='http://neocartography.icaci.org/2012/01/year-of-the-open-map'&gt;year of the open map&lt;/a&gt;, and people are waking up to what this means for them in all areas of data and design. One size simply doesn&amp;#8217;t fit all where maps are concerned and we are actively developing new features in core &lt;a href='http://mapnik.org'&gt;Mapnik&lt;/a&gt; to give more power to designs.&lt;/p&gt;&lt;p&gt;Up until now Mapnik has concentrated mainly on vector processing - you configure your data sources, apply styles and filters, and get a beautiful map at the end of the process. In the case of tiled maps, these are small raster images which are assembled into the final map. This is where Mapnik would usually stop, after all there lots of tools out there to do post-processing. But bearing in mind the new innovative ways people want to use maps, things would get interesting if you could embed image processing/filtering in that chain. Both vector and image processing should play together, complimenting each other.&lt;/p&gt;&lt;p&gt;Consider the recent &lt;a href='http://maps.stamen.com/#watercolor/13/37.8302/-122.3107'&gt;beautiful &amp;#8216;watercolor&amp;#8217; maps from Stamen&lt;/a&gt;, or even our own process at MapBox of &lt;a href='http://mapbox.com/maps/'&gt;assembling (compositing) tiles from multiple sources&lt;/a&gt;. You can apply post-processing on a rendered map image, perhaps splitting a map into multiple maps, then processing using third-party tools and finally combining them. But this requires a programmatic approach. Granted, writing a Python or JavaScript to accomplish this is reasonably easy and fun, but having this implemented internally opens new, interesting doors.&lt;/p&gt;&lt;p&gt;What about making it possible to control both vector and raster processing from within the UI? This would give the power back to cartographers and designers and give them access to the custom cartography they&amp;#8217;re looking for. If this is the goal, here are some first steps to get there. The features I&amp;#8217;m working on fall into two categories: vector and raster processing or &amp;#8216;vertex converters&amp;#8217; and &amp;#8216;image filters&amp;#8217;.&lt;/p&gt;&lt;h2 id='converters'&gt;Converters&lt;/h2&gt;&lt;p&gt;In the vector domain, we have &amp;#8216;converters&amp;#8217; whose concept is influenced by AGG design. A &amp;#8216;converter&amp;#8217; takes input (vertex source) and applies some kind of useful transformation on each vertex. Most importantly, they can be chained. For example, &amp;#8216;vertex converter&amp;#8217; pipe-line for closed paths (PolygonSymbolizer) looks like:&lt;/p&gt;&lt;code&gt;
[original source] -&gt; [projection transform] -&gt; [viewport transform]
&lt;/code&gt;&lt;p&gt;To improve rendering speed at high zoom levels a &amp;#8216;clip&amp;#8217; converter can be introduced:&lt;/p&gt;&lt;code&gt;
[original source] -&gt; [clip_poly] -&gt; [projection transform] -&gt; [viewport transform]

&lt;/code&gt;&lt;p&gt;LineSymbolizer uses two more converters (conv_stroke and conv_dash(optional)):&lt;/p&gt;&lt;code&gt;
[original source] -&gt; [clip_poly] -&gt; [projection transform] -&gt; [viewport transform] -&gt; if(dash):[dash conv] -&gt; [stroke conv]

&lt;/code&gt;&lt;p&gt;There is also a &amp;#8216;smooth&amp;#8217; converter which automatically approximates straight segments with Bezier curves, and can be plugged into this chain:&lt;/p&gt;&lt;code&gt;
[original source] -&gt; [clip_poly] -&gt; [projection transform] -&gt; [viewport transform] -&gt; [ smooth val:0.5] -&gt; if(dash)[dash conv] -&gt; [stroke conv]
&lt;/code&gt;&lt;p&gt;The ability to &amp;#8216;lazily&amp;#8217; chain conversions is a powerful concept. More converters can be added - for example &amp;#8220;svg-styled transform&amp;#8221; to offset/rotate/scale geometries. There are also use cases when clipping is undesirable and needs to be switched off (e.g curvy ocean text).&lt;/p&gt;&lt;p&gt;From the user&amp;#8217;s point of view, we want to be able to mix and match converters easily, but there is a problem here. While the use case is clear, the &amp;#8216;lazy&amp;#8217;/compiled nature of these pipe-lines makes implementing them cumbersome. All possible permutations result in lots of lines of repetitive/redundant code. I think I&amp;#8217;ve solved this with some help from meta-programming &lt;a href='http://www.boost.org/doc/libs/1_49_0/libs/mpl/doc/index.html'&gt;Boost.MPL&lt;/a&gt;. I abstracted the &amp;#8216;converter&amp;#8217; logic into something more managable and easy to use:&lt;/p&gt;&lt;pre&gt;
&lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;c++   
&lt;/span&gt;&lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;declare all possible converters to choose from for this particular case (LineSymbolizer)
&lt;/span&gt;&lt;span class='keyword'&gt;typedef&lt;/span&gt; &lt;span class='constant'&gt;boost&lt;/span&gt;::&lt;span class='constant'&gt;mpl&lt;/span&gt;::&lt;span class='type'&gt;vector&lt;/span&gt;&amp;lt;clip_line_tag,transform_tag, smooth_tag, dash_tag, stroke_tag&amp;gt; &lt;span class='type'&gt;conv_types&lt;/span&gt;;

&lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;create 'converter' object supporting types declared above
&lt;/span&gt;&lt;span class='type'&gt;vertex_converter&lt;/span&gt;&amp;lt;&lt;span class='type'&gt;box2d&lt;/span&gt;&amp;lt;&lt;span class='type'&gt;double&lt;/span&gt;&amp;gt;,rasterizer,line_symbolizer, proj_transform, CoordTransform,&lt;span class='type'&gt;conv_types&lt;/span&gt;&amp;gt; 
&lt;span class='function-name'&gt;converter&lt;/span&gt;(ext,*ras_ptr,sym,t_,prj_trans);

&lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;enable individual converters as required
&lt;/span&gt;&lt;span class='keyword'&gt;if&lt;/span&gt; (sym.clip())  converter.&lt;span class='type'&gt;set&lt;/span&gt;&amp;lt;clip_line_tag&amp;gt;(); &lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;optional clip
&lt;/span&gt;converter.&lt;span class='type'&gt;set&lt;/span&gt;&amp;lt;transform_tag&amp;gt;(); &lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;always apply coordinate transform
&lt;/span&gt;&lt;span class='keyword'&gt;if&lt;/span&gt; (sym.smooth() &amp;gt; 0.0) converter.&lt;span class='type'&gt;set&lt;/span&gt;&amp;lt;smooth_tag&amp;gt;(); &lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;optional smooth converter
&lt;/span&gt;&lt;span class='keyword'&gt;if&lt;/span&gt; (has_dash()) converter.&lt;span class='type'&gt;set&lt;/span&gt;&amp;lt;dash_tag&amp;gt;(); &lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;optional dash       
&lt;/span&gt;converter.&lt;span class='type'&gt;set&lt;/span&gt;&amp;lt;stroke_tag&amp;gt;(); &lt;span class='comment-delimiter'&gt;//&lt;/span&gt;&lt;span class='comment'&gt;always apply stroke converter
&lt;/span&gt;
&lt;span class='keyword'&gt;for&lt;/span&gt; (&lt;span class='type'&gt;unsigned&lt;/span&gt; &lt;span class='variable-name'&gt;i&lt;/span&gt;=0;i&amp;lt;feature-&amp;gt;num_geometries();++i)
{
  converter.apply(geom); &lt;span class='comment-delimiter'&gt;// &lt;/span&gt;&lt;span class='comment'&gt;apply chained conversions and feed into rasterizer
&lt;/span&gt;}
&lt;/pre&gt;&lt;p&gt;The above might look scary but it is by far more readable and maintainable than what we have &lt;a href='https://github.com/mapnik/mapnik/blob/master/src/agg/process_line_symbolizer.cpp#L98'&gt;currently&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Let&amp;#8217;s see how this functionality to turn on/off converters can be used. One such example is applying &amp;#8216;smoothing&amp;#8217; to water polygons:&lt;/p&gt;&lt;h4 id='original_style_from_demopython'&gt;Original style from demo/python&lt;/h4&gt;&lt;pre&gt;
  &amp;lt;PolygonSymbolizer fill=&quot;rgb(153,204,255)&quot;/&amp;gt;
&lt;/pre&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5459/7056197525_80ec7482d9.jpg' alt='Alt smooth=0.0' /&gt;&lt;/p&gt;&lt;h4 id='smooth_water_polygons'&gt;Smooth water polygons&lt;/h4&gt;&lt;pre&gt;
  &amp;lt;PolygonSymbolizer fill=&quot;rgb(153,204,255)&quot; smooth=&quot;0.7&quot;/&amp;gt;
&lt;/pre&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7040/6910110140_3ff94b9646.jpg' alt='Alt smooth=0.7' /&gt;&lt;/p&gt;&lt;p&gt;In the future I&amp;#8217;m sure we can come up with some interesting converters to add to the pipelines.&lt;/p&gt;&lt;h2 id='image_filters_and_compositing'&gt;Image filters and compositing&lt;/h2&gt;&lt;p&gt;This is another area I&amp;#8217;m working on and where I think Mapnik can lead the way. I&amp;#8217;m experimenting with different ways of applying compositing and filters. As it currently stands, compositing can be applied at &amp;#60;Symbolizer&amp;#62; and/or &amp;#60;Style&amp;#62; level e.g:&lt;/p&gt;&lt;pre&gt; 
  &amp;lt;Style name=&quot;my-style&quot; comp-op=&quot;color_dodge&quot;/&amp;gt;
  &amp;lt;PolygonSymbolizer comp-op=&quot;src_atop&quot;/&amp;gt;
&lt;/pre&gt;&lt;p&gt;All &lt;a href='http://dev.w3.org/SVG/modules/compositing/master/SVGCompositingPrimer.html'&gt;compositing modes&lt;/a&gt; defined in SVG 1.2 are supported.&lt;/p&gt;&lt;p&gt;One change to be aware of is that a &amp;#8216;pre-multiplied&amp;#8217; pixel format is used throughout the rendering process now - it is important for correct compositing. At the end, the final image is &amp;#8216;demultiplied&amp;#8217; to play nicely with PNG format which expects plain (not-multiplied by alpha) R,G,B values.&lt;/p&gt;&lt;p&gt;This week I also started work to implement image filters in the Mapnik core. The idea is to provide a framework for adding and chaining image filters at &amp;#60;Style&amp;#62; level. Similar to converters in many ways. So far, I implemented 3x3 2D convolution kernels as in &lt;a href='http://docs.gimp.org/en/plug-in-convmatrix.html'&gt;Gimp&lt;/a&gt; using &lt;a href='http://www.boost.org/doc/libs/1_49_0/libs/gil/doc/index.html'&gt;Boost.GIL library&lt;/a&gt;. The syntax to expose this has not been finalised, but I envisage something along these lines:&lt;/p&gt;&lt;pre&gt;
&amp;lt;Style name=&quot;my-style&quot; image-filter=&quot;grey|blur:rx=4,ry=4|emboss|...&quot;/&amp;gt;
&lt;/pre&gt;&lt;p&gt;Here are some maps I made using and abusing some of the above features:&lt;/p&gt;&lt;h3 id='compositingblursmoothing'&gt;Compositing/Blur/Smoothing&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7266/7056197797_9ca2dcbf51.jpg' alt='Alt compositing+blur' /&gt;&lt;/p&gt;&lt;h3 id='embose'&gt;Embose&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5120/7056197711_8725794c9a.jpg' alt='Alt emboss' /&gt;&lt;/p&gt;&lt;h3 id='sobel'&gt;Sobel&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7089/6910110554_f0154ca5c9.jpg' alt='Alt sobel' /&gt;&lt;/p&gt;&lt;h3 id='blurred_text_halos'&gt;Blurred text halos&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5452/6910110442_2b7315d548.jpg' alt='Alt text' /&gt;&lt;/p&gt;&lt;h3 id='watercolor_texturesneon_roads'&gt;Watercolor textures/neon roads&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7136/6924132636_d985a09b47.jpg' alt='Alt watercolour' /&gt;&lt;/p&gt;&lt;p&gt;These new features are all works in progress and can be pulled from &lt;a href='https://github.com/mapnik/mapnik/tree/compositing'&gt;origin/compositing&lt;/a&gt; branch.&lt;/p&gt;</description>
  <pubDate>2012-04-12T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/expanding-mapnik-carto</guid>
</item>
<item>
  <title>Transcript of Rendering the World Presentation</title>
  <link>http://mapbox.com/blog/rendering-the-world</link>
  <description>&lt;p&gt;This is a transcript of my &lt;a href='http://foss4g-na.org/schedule/rendering-the-world/'&gt;Rendering the World&lt;/a&gt; session for anyone who was not able to attend the &lt;a href='http://foss4g-na.org/'&gt;FOSS4G conference&lt;/a&gt;. This transcript is based on my memory and is not a recording so there may be differences from the actual presentation.&lt;/p&gt;&lt;p&gt;&lt;script class='speakerdeck-embed' src='//speakerdeck.com/assets/embed.js' async='async' data-id='4f85bb12b9af9600220002e2' data-ratio='1.3333333333333333'&gt; &lt;/script&gt;&lt;/p&gt;&lt;p&gt;My name is Young Hahn. You can follow me on &lt;a href='https://twitter.com/#!/younghahn'&gt;twitter&lt;/a&gt; or on &lt;a href='https://github.com/yhahn'&gt;GitHub&lt;/a&gt;. Today I&amp;#8217;m going to be presenting not just my work but the work of my colleagues: &lt;a href='https://twitter.com/#!/aj_ashton'&gt;AJ Ashton&lt;/a&gt;, &lt;a href='https://twitter.com/#!/dhcole'&gt;Dave Cole&lt;/a&gt;, &lt;a href='https://twitter.com/#!/kkaefer'&gt;Konstantin Kaefer&lt;/a&gt;, &lt;a href='https://twitter.com/#!/mapnik'&gt;Artem Pavlenko&lt;/a&gt;, &lt;a href='https://twitter.com/#!/springmeyer'&gt;Dane Springmeyer&lt;/a&gt;, &lt;a href='https://twitter.com/#!/tmcw'&gt;Tom MacWright&lt;/a&gt;, and &lt;a href='https://twitter.com/#!/willwhitedc'&gt;Will White&lt;/a&gt;. If you&amp;#8217;re going to follow anyone, please follow these people.&lt;/p&gt;&lt;p&gt;We work at MapBox here in Washington, DC. MapBox is a mapping company that focuses on open source and open data solutions for web and mobile mapping. Our best known product is probably the open source map design studio &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt;.&lt;/p&gt;&lt;h3 id='mapbox_streets'&gt;MapBox Streets&lt;/h3&gt;&lt;p&gt;We recently launched a new product called &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt;. MapBox Streets is a base map with global coverage - we&amp;#8217;re in New York, Paris, Tokyo, and everywhere in between. It includes deep zoom levels so you can see individual city blocks, tunnels and subway stations.&lt;/p&gt;&lt;p&gt;Great, we&amp;#8217;ve got a cool map. So let&amp;#8217;s render the world! Not so fast. It turns out the world is a really big place. Big can mean a lot of different things, even in the context of rendering the world. For the purposes of this talk, big is going to mean two things. One, taking a long time to render. And two, taking a lot of space to store.&lt;/p&gt;&lt;p&gt;Suppose you were to start up TileMill and ask it to render the world down to zoom level 15, 16, maybe 17. And say you put aside all kinds of other performance factors &amp;#8211; not worry about PostGIS tuning, or optimizing styles, or even Mapnik performance. Say we wanted to render a very simple or blank map down to zoom level 17. TileMill would show you a screen that looks something like this: 443 days remaining.&lt;/p&gt;&lt;p&gt;And if you were to do a little googling around the web for how much space it would take to store all these tiles you would probably run across this OSM wiki page. It would take some 54 terabytes of space to store OSM tiles up to z17 or 18 and OSM&amp;#8217;s tile images are really small.&lt;/p&gt;&lt;p&gt;If you&amp;#8217;re new to tile-based mapping or even if you&amp;#8217;re familiar you might think: WTF. It&amp;#8217;s pretty hard to wrap your head around how or why these numbers are so big.&lt;/p&gt;&lt;h3 id='tilebased_mapping'&gt;Tile-based mapping&lt;/h3&gt;&lt;p&gt;Let&amp;#8217;s do a quick review of tile-based mapping. By tile based mapping I mean maps that load progressively through 256x256px image tiles. Usually these images are square, but they can really be any size and dimension. These tiles are rendered at multiple zoom levels. So using the ubiquitous web mercator projection, zoom level 0 has 1 tile and contains the entire world. At the next zoom level, we double the amount of detail so our 1x1 grid becomes a 2x2 grid and contains 4 tiles total. The next zoom level is a 4x4 grid and contains 16 tiles. The next 8x8 and 64 tiles. We can calculate the number of tiles at a given zoom level using this equation: 4^z is the number of tiles at a given zoom level z.&lt;/p&gt;&lt;p&gt;Then suppose we have a super fast map renderer and really tiny tiles. Say we can render 1000 tiles/sec and each of our tiles is about 400 bytes. These numbers are pretty arbitrary but you&amp;#8217;ll see in a second that tweaking these numbers is not going to make much of a difference.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5337/6922142292_864b2eca6a_z.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;At zoom level 15 there are 4 to 15 tiles, or 1.1 billion tiles. That would be 12 days of rendering time and take 644 GB of storage. z16 will be four times that amount, so about 4.3 billion tiles, 50 days and 2.6 terabytes of storage. And z17 will be 17.2 billion tiles, 200 days, 10.3 terabytes of storage.&lt;/p&gt;&lt;p&gt;With these numbers you can see that even if we worked really hard to optimize PostGIS or tune our renderer &amp;#8211; say we could double our speed and get to 2000 tiles/sec &amp;#8211; we&amp;#8217;d be looking at a render time around 100 days. If I kicked this off now it would probably finish in time for the next FOSS4G.&lt;/p&gt;&lt;h3 id='live_rendering'&gt;Live rendering&lt;/h3&gt;&lt;p&gt;Common sense says: don&amp;#8217;t even try this. It&amp;#8217;s not reasonable. Instead there&amp;#8217;s some accepted wisdom to how you serve a global baselayer. Users are only going to request a small fraction of these tiles at any given time. So you could render each tile only when it&amp;#8217;s requested by a user.&lt;/p&gt;&lt;p&gt;This scenario looks like this: on the right is a big beefy render server and on the left a computer or mobile device that wants your map. When the device requests the map the server renders it and sends it over.&lt;/p&gt;&lt;p&gt;Of course in reality there may be dozens or hundreds of devices that are viewing your map at any given time and your beefy render server is going to start looking a lot less beefy. So the solution is quite straightforward - you just add a lot more render servers, right?&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7130/7068223201_3031ffa70d_z.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;Not so fast. It turns out the internet is actually a really big place. You&amp;#8217;re going to need to scale to not hundreds but thousands of requests per second. Your maps are going to start to get slow and your render servers may actually go down.&lt;/p&gt;&lt;p&gt;Render servers are slow, costly and stressful. We have a small team at MapBox and any time we&amp;#8217;re spending babysitting servers is time we could be spending on our open source projects or improving the experience for our users.&lt;/p&gt;&lt;p&gt;On the other hand, serving pre-rendered tiles is fast, cheap and reliable. We don&amp;#8217;t have to worry about spikes in traffic or whether our servers can keep up &amp;#8211; we know all of the tiles are there and are cheap and fast to serve.&lt;/p&gt;&lt;h3 id='rendering_the_world'&gt;Rendering the world&lt;/h3&gt;&lt;p&gt;These are the reasons why we set out to try to solve this very hard problem. So how do you render the world?&lt;/p&gt;&lt;p&gt;We had two tools in our belt when we started work on this problem that I didn&amp;#8217;t know would play an important role, but they did. Just keep these in the back of your mind as we go through the problem.&lt;/p&gt;&lt;p&gt;Tool #1: MBTiles is a tile storage format we&amp;#8217;ve been using for a while. It&amp;#8217;s an sqlite-based format that can store an image once and reference it multiple times for different tile coordinates.&lt;/p&gt;&lt;p&gt;Tool #2: One of the features of MapBox Hosting is fast image compositing. We take multiple pre-rendered tiles and blend them together into a single image and we&amp;#8217;ve found that this can be quite fast and efficient.&lt;/p&gt;&lt;h3 id='tile_redundancy'&gt;Tile redundancy&lt;/h3&gt;&lt;p&gt;So back to our problem. What&amp;#8217;s actually on these 17.2 billion tiles at z17? If you were to pluck a tile out of the pile at random you would sometimes get this - some roads, buildings, parks, lakes. But mostly you&amp;#8217;ll get this: a patch of blue somewhere in the middle of the Pacific. In fact, mostly is about 60% of the time. You may remember from gradeschool that the world&amp;#8217;s surface is some 70-80% ocean but in the web mercator projection that percentage is more like 60. Antarctica and Greenland are really huge.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5231/7068223251_2395851960_z.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;This solid blue tile is an example of redundancy. Once I&amp;#8217;ve seen this blue tile once, I actually know what 60% of the map looks like - it&amp;#8217;s exactly the same. It&amp;#8217;s a lot like this example from information theory: &amp;#8220;if u cn rd ths msg u cn gt a gd jb w hi pa&amp;#8221; or &amp;#8220;If you can read this message you can get a good job with high pay.&amp;#8221; It turns out some 50% of the letters in English are redundant. You can get your message across without these letters.&lt;/p&gt;&lt;p&gt;How much of the world is actually redundant? This next slide has a clue where we&amp;#8217;ve split the world up into 4 different layers. For now let&amp;#8217;s focus on the bottom two, the land and water layers. If we take just these two layers our map looks like this. Now we know that of all these tiles, about 60% of them are solid blue areas of water. Pretty good.&lt;/p&gt;&lt;p&gt;But wait, there&amp;#8217;s another type of redundant tile on this map. If you were to pan to the middle of Kansas you&amp;#8217;re going to see a lot of this tile here: the solid land tile. This tile is also redundant. Once you&amp;#8217;ve seen this sandy color you know what all the other solid areas of land look like.&lt;/p&gt;&lt;p&gt;The only type of tile on this map that contains information is a tile containing coastline. Tiles that show where water and land meet, that show a distinction. Under this analysis then, some 38% of the world is solid land leaving just 2% of the tiles containing coastline information.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7257/7068223301_c45b75ebf3_z.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;That&amp;#8217;s great but a map with just water and land is pretty boring. What about roads, parks, buildings&amp;#8230; human stuff? It turns out that humans really haven&amp;#8217;t touched much of the earth at all in this respect &amp;#8211; about 1%.&lt;/p&gt;&lt;p&gt;Thinking of tiles in terms of information and redundancy changes our equation from the beginning: 4^z. Consider a map with just a single point. At z0 it would take 1 tile to capture this point. But at z1, if we throw out the redundant tiles, it still takes just 1 tile to represent this point. And at z2, z3, z4 it still takes just 1 tile to represent the point. Instead of quadrupling at each next zoom level, the number of tiles it takes to represent a point stays constant.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5339/7068223359_f7b03aa092_z.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;If you play this thought experiment out you can see that for points the equation is going to be a lot more like 1^z, and for lines somewhere between 2 to 3^z. For polygons interestingly you only need to represent the perimeter in tiles like in our analysis of the land and water layer where only the coastline contained actual information.&lt;/p&gt;&lt;h3 id='getting_to_2'&gt;Getting to 2%&lt;/h3&gt;&lt;p&gt;Theoretically then we only need to store some 2% of those 17.2 billion tiles. But to do this we&amp;#8217;ll need a storage format that actually represents redundancy. MBTiles does this very well. It can store an image once and then reference it many times for different zxy coordinates using an id. So we only need to store the blue ocean tile once for billions of different coordinates.&lt;/p&gt;&lt;p&gt;So 10 terabytes times 2% is 200GB. Pretty good.&lt;/p&gt;&lt;p&gt;What about render time though? Remember those 400 days it would take to render the world? We still have to render a tile before we know that it&amp;#8217;s a solid blue ocean tile and can be thrown out or one that contains actual information. Can you know a tile is redundant without rendering, querying or even iterating? If we take Mapnik and PostGIS out of the equation, even just iterating over 17.2 billion zxy coordinates in node.js, python, whatever language you choose, takes a long time.&lt;/p&gt;&lt;p&gt;First, let&amp;#8217;s look at how our latest release TileMill 0.9.0 renders an export. It does a scanline. If you&amp;#8217;ve ever pre-seeded or rendered tiles you&amp;#8217;ll be familiar with this scheme: you start at the first zoom level and do one row, one tile at a time. Once you&amp;#8217;ve finished all the tiles at that zoom level you move on to the next, and so on.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5113/7068223395_e4b6ea5a05_z.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;In TileMill master we&amp;#8217;ve been working on a new rendering scheme. The pyramid scheme takes a tile and looks at its child tiles on the next zoom level. And then it takes each of those and looks at their children. And so on, recursively. If it finds a tile that is redundant at z5 it assumes that all of its child tiles are redundant as well at z6, z7, z8 all the way down to z17. With this method we can skip millions of tiles per second.&lt;/p&gt;&lt;p&gt;It works. Mostly. There are some cases where this scheme will skip tiles too aggressively and I worked hard with our cartographer AJ so that there&amp;#8217;s usually an indication at lower zoom levels of features coming up on higher zoom levels.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7180/6922142560_2d92091457.jpg' alt='slide' /&gt;&lt;/p&gt;&lt;p&gt;So 2% of 200 days and we&amp;#8217;re down to 4 days of rendering. Not bad. With tiles pre-rendered all our servers need to do is composite them together and serve them. We&amp;#8217;ve found that it&amp;#8217;s fast, affordable and reliable.&lt;/p&gt;&lt;p&gt;Of course, the truth is a bit more complicated. We also had to tune PostGIS, optimize our OSM import, materialize imposm tables, find a high i/o cloud service, parallelize our renders - we do 32 of them at a time - and optimize our sqlite storage. If you&amp;#8217;re curious about these things, please ask us. Thank you.&lt;/p&gt;</description>
  <pubDate>2012-04-11T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/rendering-the-world</guid>
</item>
<item>
  <title>Geo Meetup in Guadalajara on April 18th</title>
  <link>http://mapbox.com/blog/geo-meetup-guadalajara</link>
  <description>&lt;p&gt;Next week on April 18 @hackergarage Guadalajara will host its first Geo Meetup that focuses on OpenStreetMap. After having done &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;serious tracing work&lt;/a&gt; for Guadalajara, Mexico, it&amp;#8217;s particularly exciting to have an opportunity to work with the local community. While remote satellite tracing allows us to quickly put streets and building footprints in vast areas of a city on a map, local knowledge is needed to add crucial elements like street names.&lt;/p&gt;&lt;p&gt;This is an example where Guadalajara local &lt;a href='http://www.openstreetmap.org/user/jackbravo'&gt;jackbravo&lt;/a&gt; has provided location names on traced street data largely provided by remote tracing user &lt;a href='http://www.openstreetmap.org/user/juey'&gt;juey&lt;/a&gt; (main traffic arteries were provided by &lt;a href='http://www.openstreetmap.org/user/minoxfilm'&gt;minoxfilm&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;a href='http://osm.org/go/S3k5vFSd--'&gt;&lt;img src='http://farm8.staticflickr.com/7058/6914875350_462fef626b_z.jpg' alt='' /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I look forward to join the meetup via Skype and further explore ways to grow the Guadalajara OpenStreetMap community and coordinate our efforts. In addition to getting a chance to learn about how we can support local mappers, I&amp;#8217;ll be giving a short presentation on the work we have done so far in Guadalajara and other cities, with a focus on the import of main traffic arteries we are planning for the state of Jalisco.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7055/7060957255_76dd832944_z.jpg' alt='' /&gt;&lt;/p&gt;</description>
  <pubDate>2012-04-09T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/geo-meetup-guadalajara</guid>
</item>
<item>
  <title>FOSS4G: Presenting on the Future of Web Mapping, Cartography, and MapBox Streets</title>
  <link>http://mapbox.com/blog/foss4g-conference</link>
  <description>&lt;p&gt;This week we&amp;#8217;ll be at the &lt;a href='http://foss4g-na.org/'&gt;FOSS4G&lt;/a&gt; conference here in Washington, DC discussing the current state and what the future should look like for open source geospatial technology. The &lt;a href='http://foss4g-na.org/schedule/'&gt;conference schedule&lt;/a&gt; looks awesome with deep dives on technologies like &lt;a href='http://foss4g-na.org/schedule/introduction-to-postgis/'&gt;PostGIS&lt;/a&gt;, &lt;a href='http://foss4g-na.org/schedule/a-technical-look-at-the-future-of-postgresql/'&gt;PostgreSQL&lt;/a&gt;, and &lt;a href='http://foss4g-na.org/schedule/using-quantum-qgis-for-mapping-coverage-of-hiv-prevention-services-in-iringa-region-tanzania/'&gt;Quantam GIS&lt;/a&gt;, case studies from folks like the &lt;a href='http://foss4g-na.org/speakers/michaelbyrne/'&gt;FCC&lt;/a&gt;, &lt;a href='http://foss4g-na.org/schedule/noaas-capabilities-for-image-delivery-during-an-emergency-response/'&gt;NOAA&lt;/a&gt;, and the &lt;a href='http://foss4g-na.org/schedule/risiko-using-python-gdal-and-geonode-for-the-estimation-of-impact-from-natural-disasters/'&gt;World Bank&lt;/a&gt;, and design talks on topics like &lt;a href='http://foss4g-na.org/schedule/watercolor-maps-using-osm/'&gt;making watercolor maps with OpenStreetMap&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We&amp;#8217;re participating in four sessions, described below, on the future of open source web mapping, the tech behind our street-level map of the world, and cartography tricks. We also have an exhibit table where we&amp;#8217;ll be running demos of &lt;a href='http://mapbox.com/blog/custom-styles-mapbox-streets/'&gt;new custom styles for MapBox Streets&lt;/a&gt; and the map design tool &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt;. Stop by our sessions or table to chat, or message us on Twitter at &lt;a href='https://twitter.com/#!/tmcw'&gt;Tom&lt;/a&gt;, &lt;a href='https://twitter.com/#!/aj_ashton'&gt;AJ&lt;/a&gt;, &lt;a href='https://twitter.com/#!/ericg'&gt;Eric&lt;/a&gt;, &lt;a href='https://twitter.com/#!/djindc'&gt;DJ&lt;/a&gt;, &lt;a href='http://twitter.com/bonnie/'&gt;Bonnie&lt;/a&gt;, and &lt;a href='https://twitter.com/#!/younghahn/'&gt;Young&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href='http://foss4g-na.org/schedule/gaps-and-voids-in-open-source-geo-technology/'&gt;&lt;strong&gt;Keynote: Gaps and Voids in Open Source Geo Technology&lt;/strong&gt;&lt;/a&gt;: Tom will join four others on this panel to talk about what&amp;#8217;s missing in open source geo technology and where the community should focus its efforts on. Design will weigh heavy in this conversation. &lt;em&gt;Tuesday 3:00 pm, Room 103 AB&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href='http://foss4g-na.org/schedule/new-maps-beyond-the-google-maps-paradigm/'&gt;&lt;strong&gt;New Maps: Beyond the Google Maps Paradigm&lt;/strong&gt;&lt;/a&gt;: Big strides have been made recently in map interactivity and user experience. Tom will talk about the technology and APIs that are changing this, how they&amp;#8217;re being used to tell stories with maps, and what you can already do to display crazy maps on your devices, whether they&amp;#8217;re handheld or giant monitors. &lt;em&gt;Tuesday 1:00 pm, Room 103 AB&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href='http://foss4g-na.org/schedule/rendering-the-world/'&gt;&lt;strong&gt;Rendering the World&lt;/strong&gt;&lt;/a&gt;: Rendering a street map of the world used to be unthinkable, but not any more. Young will talk about how we made &lt;a href='http://mapbox.com/tour/#maps'&gt;MapBox Streets&lt;/a&gt; with our open source technology stack leveraging Node.js, Mapnik, MBTiles, and TileMill.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href='http://foss4g-na.org/schedule/cartography-with-tilemill-postgis-and-openstreetmap/'&gt;&lt;strong&gt;Cartography with TileMill, PostGIS, and OpenStreetMap&lt;/strong&gt;&lt;/a&gt;: AJ will share his best tricks for designing beautiful, unique maps using TileMill. He&amp;#8217;ll touch on import decisions, stylesheet techniques, spatial queries, and data massaging – and how to do it all with free, open-source software.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;We&amp;#8217;re looking forward to catching up with folks, learning what they&amp;#8217;re working on, and sharing our latest thoughts on open source geo technology.&lt;/p&gt;</description>
  <pubDate>2012-04-08T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/foss4g-conference</guid>
</item>
<item>
  <title>Where Conference Keynote Launching Custom Styles for MapBox Streets</title>
  <link>http://mapbox.com/blog/where-conference-keynote</link>
  <description>&lt;p&gt;Our keynote launching &lt;a href='http://mapbox.com/blog/custom-styles-mapbox-streets'&gt;custom styles for MapBox Streets&lt;/a&gt; at the &lt;a href='http://whereconf.com/where2012'&gt;O’Reilly Where Conference&lt;/a&gt; this week is now online! You can see &lt;a href='http://mapbox.com/team/eric-gundersen/'&gt;Eric&lt;/a&gt; walk though both the new custom styles and see how this fits into our larger platform. Eric&amp;#8217;s talk ends by focusing on the larger conversation around what &lt;a href='https://twitter.com/#!/digiphile'&gt;Alex Howard&lt;/a&gt; is calling the &amp;#8221;&lt;a href='http://radar.oreilly.com/2011/12/2011-gov2-year-in-review.html#open-mapping'&gt;year of the open map&lt;/a&gt;&amp;#8221; and how this is about more than just code - it&amp;#8217;s about a larger open movement and the community of companies and developers pushing the open stack forward. This ultimately makes technology easier and open data move actionable, and that is going to be what radically changes the larger marketplace.&lt;/p&gt;&lt;iframe src='http://www.youtube.com/embed/xovRk6IAWgo' height='360' width='640'&gt; &lt;/iframe&gt;&lt;p&gt;&lt;em&gt;Eric&amp;#8217;s keynote on &lt;a href='http://whereconf.com/where2012/public/schedule/detail/24486'&gt;Designing Fast and Beautiful Maps&lt;/a&gt; on Tuesday, April 3rd at the O’Reilly Where Conference.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A special thank you to &lt;a href='https://twitter.com/#!/brady'&gt;Brady Forrest&lt;/a&gt; and &lt;a href='https://twitter.com/#!/laurelatoreilly'&gt;Laurel Ruma&lt;/a&gt; for an awesome conference!&lt;/p&gt;</description>
  <pubDate>2012-04-06T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/where-conference-keynote</guid>
</item>
<item>
  <title>Mapping for Nonprofits at the NTC</title>
  <link>http://mapbox.com/blog/mapping-nonprofits-ntc</link>
  <description>&lt;p&gt;Today at the &lt;a href='http://www.nten.org/'&gt;Nonprofit Technology Network&amp;#8217;s&lt;/a&gt; &lt;a href='http://www.nten.org/ntc'&gt;annual conference&lt;/a&gt;, &lt;a href='http://developmentseed.org/team/eric-gundersen/'&gt;Eric&lt;/a&gt; will present on how nonprofits can use online maps to tell the stories behind their work and their data, along with &lt;a href='http://thinkshout.com/blog/Sean'&gt;Sean Larkin&lt;/a&gt; and &lt;a href='http://thinkshout.com/blog/Lev'&gt;Lev Tsypin&lt;/a&gt; from &lt;a href='http://thinkshout.com/'&gt;ThinkShout&lt;/a&gt;. It&amp;#8217;s an interesting time for mapping in the nonprofit space, with the barrier to entry being lowered with more open source and user friendly tools being released, making mapping possible for nonprofits of any budget size.&lt;/p&gt;&lt;p&gt;This session will focus in part on showing what&amp;#8217;s possible, showing examples of nonprofits using maps in their &lt;a href='http://one.org/us/actnow/horn.html'&gt;advocacy work&lt;/a&gt;, to &lt;a href='http://data.internews.org/af-media/'&gt;report survey findings&lt;/a&gt;, and to &lt;a href='http://www.thousanddays.org/resources/nutrition-map'&gt;track and collaborate around operations&lt;/a&gt;. It will provide an overall of existing open source interactive mapping technologies and how they can be used. Then Eric will give a hands on demo on how &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt; can be used to design custom maps, walking through how to go from a spreadsheet of data to custom map, and then how to take it online and embed it in a website or application. With &lt;a href='http://mapbox.com/plans/'&gt;free accounts&lt;/a&gt; from &lt;a href='http://mapbox.com/'&gt;MapBox&lt;/a&gt;, this is easier than ever.&lt;/p&gt;&lt;p&gt;If you&amp;#8217;re at the NTC, check out &lt;a href='http://e.myntc.zerista.com/event/member/40755'&gt;Geek Out With Online Maps As Storytelling Devices&lt;/a&gt; today at 10:30 am in the Franciscan B room. For background on the open source mapping landscape, read &lt;a href='http://www.nten.org/articles/2012/terms-and-trends-in-diy-and-open-source-online-maps'&gt;Sean&amp;#8217;s article&lt;/a&gt;, and for a jump start with TileMill, check out the &lt;a href='http://mapbox.com/tilemill/docs/crashcourse/introduction/'&gt;crash course&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-04-04T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/mapping-nonprofits-ntc</guid>
</item>
<item>
  <title>GeoDC Meetup: Presenting MapBox Streets New Custom Styles</title>
  <link>http://mapbox.com/blog/geo-dc-april</link>
  <description>&lt;p&gt;At &lt;a href='http://www.meetup.com/Geo-DC/events/55512602/'&gt;tonight&amp;#8217;s GeoDC meetup&lt;/a&gt;, we will demo the new custom styles we &lt;a href='http://mapbox.com/blog/custom-styles-mapbox-streets/'&gt;released yesterday&lt;/a&gt; for our &lt;a href='http://mapbox.com/tour/#maps'&gt;MapBox Streets&lt;/a&gt; world base map. This new feature allows you to choose from 12 different map styles and change the colors of land, water, areas, and streets on your map via a color switcher. It brings an new level of design flexibility to our world maps, and we&amp;#8217;re already seeing some fun examples of it in action like this n&lt;a href='http://tiles.mapbox.com/saxbarm/map/map-xdgh3mb4'&gt;eon map of bike path&amp;#8217;s in Portland&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;There are two other interesting lightning talks on the schedule:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;William Hurley from Forum One will talk about the &lt;a href='http://www.countyhealthrankings.org/'&gt;County Health Rankings&lt;/a&gt; map that was just launched, specifically touching on how it&amp;#8217;s rendering dynamic tiles with Mapnik and Tilelive.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;Kevin Webb of OpenPlans will talk about &lt;a href='https://github.com/openplans/OpenTripPlanner/wiki/'&gt;OpenTripPlanner&lt;/a&gt;, how it works, and its transit analysis extensions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The meetup starts at 7:00 pm, with presentations kicking off at 7:30 pm, at the upstairs bar at Stetson&amp;#8217;s at the intersection of 16th and U Streets NW.&lt;/p&gt;&lt;p&gt;The GeoDC meetups draw a vibrant crowd of people interested in and working with maps, data collection, GIS, and other related technologies. The group meets once a month on the first Wednesday of the month. Join the &lt;a href='http://www.meetup.com/Geo-DC/'&gt;meetup group&lt;/a&gt; and follow &lt;a href='https://twitter.com/#!/geo_dc'&gt;@geo_dc&lt;/a&gt; on Twitter for updates.&lt;/p&gt;</description>
  <pubDate>2012-04-04T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/geo-dc-april</guid>
</item>
<item>
  <title>Custom Styles for MapBox Streets</title>
  <link>http://mapbox.com/blog/custom-styles-mapbox-streets</link>
  <description>&lt;p&gt;We just launched custom styles for our &lt;a href='http://mapbox.com/tour/#maps'&gt;MapBox Streets&lt;/a&gt; world base map at the O&amp;#8217;Reilly Where Conference, as part of Eric&amp;#8217;s keynote on &lt;a href='http://whereconf.com/where2012/public/schedule/detail/24486'&gt;Designing Fast and Beautiful Maps&lt;/a&gt;. Now whether you need a clean canvas for data visualization, a film noir atmosphere for setting the mood, or map labels in the language of your audience, MapBox Streets is up to the job. With our scalable cloud infrastructure, we are proud to offer custom styling to all of our users at no extra charge.&lt;/p&gt;&lt;a href='/maps/'&gt;&lt;img src='http://farm7.staticflickr.com/6049/7030394287_c94965062d.jpg' style='border:0px;' /&gt;&lt;/a&gt;&lt;h2 id='integrated_styling'&gt;Integrated styling&lt;/h2&gt;&lt;p&gt;&lt;img src='http://farm7.staticflickr.com/6119/6884293596_b44a31bf0a_z.jpg' alt='Custom styles UI' /&gt;&lt;/p&gt;&lt;p&gt;MapBox Streets is integrated right into our map builder and gives you control over how land, water, areas, and streets look. You can adjust the color scheme of your map, toggle between localized and English labels, and toggle any of these components on or off. To help you get started quickly we&amp;#8217;ve created a dozen presets including &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-nightvision'&gt;Nightvision&lt;/a&gt;, monochromatic &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-light'&gt;Light&lt;/a&gt;, and &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-graphite'&gt;Graphite&lt;/a&gt; that work well with data overlays, and some more artistic schemes like &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-st-clair'&gt;St Clair&lt;/a&gt; and &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-lacquer'&gt;Lacquer&lt;/a&gt;. For the hackers out there, we&amp;#8217;ve even done a cartographic take on the popular vim color scheme &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-zenburn'&gt;Zenburn&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
&lt;iframe src='http://a.tiles.mapbox.com/v3/mapbox.mapbox-lacquer.html#11/37.778/-122.403' height='400' frameBorder='0' width='680'&gt; &lt;/iframe&gt;
&lt;small&gt;The Lacquer custom style preset. View it &lt;a href='http://a.tiles.mapbox.com/v3/mapbox.mapbox-lacquer.html#11/37.778/-122.403'&gt;full screen&lt;/a&gt;.&lt;/small&gt;
&lt;/p&gt;&lt;p&gt;In addition to matching your look and feel, using MapBox Streets with custom styles is a great way to supplement data visualizations context while maintaining a clean canvas.&lt;/p&gt;&lt;h2 id='powered_by_open_source_and_open_data'&gt;Powered by open source and open data&lt;/h2&gt;&lt;p&gt;MapBox Hosting is powered by dozens of open source &lt;a href='http://nodejs.org'&gt;Node.js&lt;/a&gt; modules. Custom styles for MapBox Streets are made possible by &lt;a href='/team/konstantin-kafer/'&gt;Konstantin&lt;/a&gt;&amp;#8217;s work on &lt;a href='http://github.com/developmentseed/node-blend'&gt;node-blend&lt;/a&gt; for fast image compositing and &lt;a href='http://github.com/developmentseed/node-tint'&gt;node-tint&lt;/a&gt; for efficient PNG color manipulation.&lt;/p&gt;&lt;p&gt;The data for our latest MapBox Streets render comes from &lt;a href='http://www.openstreetmap.org/'&gt;OpenStreetMap&amp;#8217;s&lt;/a&gt; March 21st database snapshot. MapBox Streets includes recent data contributions from the OSM community and the results of our own efforts to &lt;a href='/blog/osm-analysis/'&gt;identify&lt;/a&gt; and &lt;a href='/blog/satellite-tracing-osm/'&gt;address&lt;/a&gt; areas with low coverage.&lt;/p&gt;&lt;h2 id='get_started_fast'&gt;Get started fast&lt;/h2&gt;&lt;p&gt;Creating a custom styled map is easy, fast, and free. &lt;a href='/plans/'&gt;Sign up&lt;/a&gt; for MapBox Hosting to create a new map and customize MapBox Streets. From there you can embed it in your website or request your custom map tiles directly using &lt;a href='/hosting/api-embed'&gt;our API&lt;/a&gt;. We&amp;#8217;re looking forward to seeing some awesome maps!&lt;/p&gt;</description>
  <pubDate>2012-04-03T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/custom-styles-mapbox-streets</guid>
</item>
<item>
  <title>Update from #Whereconf</title>
  <link>http://mapbox.com/blog/update-from-whereconf</link>
  <description>&lt;p&gt;Tom, Eric and I are wrapping up a full day of presentations and conversations with attendees at &lt;a href='http://whereconf.com/where2012'&gt;Where Conference&lt;/a&gt; in San Francisco. This afternoon, Tom and I had a chance to present on our tools and process for open source mapping. We had a great response: people here are really excited to see what&amp;#8217;s possible with open source geospatial tools and open datasets.&lt;/p&gt;&lt;p&gt;You can &lt;a href='http://ds.io/H9Ktqg'&gt;check out our slides&lt;/a&gt; now, and a video should be posted shortly. Tom summed up the main takeaway as this:&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;open source libraries &amp;gt; their © equivalents&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;To start there are incredibly detailed and easy-to-work-with datasets like &lt;a href='http://openstreetmap.org'&gt;OpenStreetMap&lt;/a&gt; that make it possible to design completely custom base maps, such as what we&amp;#8217;ve done with &lt;a href='http://mapbox.com/maps/'&gt;MapBox Streets&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;There are also great open source tools for processing both large and small datasets, like &lt;a href='http://www.qgis.org/'&gt;Quantum GIS&lt;/a&gt;, which we use to &lt;a href='http://mapbox.com/tilemill/docs/guides/optimizing-shapefiles/'&gt;reproject&lt;/a&gt;, &lt;a href='http://mapbox.com/tilemill/docs/guides/google-docs/'&gt;analyze&lt;/a&gt;, and &lt;a href='http://mapbox.com/tilemill/docs/guides/joining-data/'&gt;join geographic data&lt;/a&gt; to tabular spreadsheets.&lt;/p&gt;&lt;p&gt;Check out &lt;a href='http://ds.io/H9Ktqg'&gt;our slides&lt;/a&gt; for more links and thoughts on building an open mapping stack. If you have questions or want more detailed information, reach out to us &lt;a href='http://twitter.com/mapbox'&gt;on Twitter&lt;/a&gt; or &lt;a href='http://mapbox.com/help'&gt;check out our help docs&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Also, &lt;a href='http://whereconf.com/where2012/public/content/video'&gt;tune in to the live stream&lt;/a&gt; tomorrow at 9:25am PT (12:25pm ET) for Eric&amp;#8217;s keynote presentation and a special announcement.&lt;/p&gt;</description>
  <pubDate>2012-04-02T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/update-from-whereconf</guid>
</item>
<item>
  <title>Tracing OpenStreetMap data in the Sahel</title>
  <link>http://mapbox.com/blog/tracing-openstreetmap-sahel</link>
  <description>&lt;p&gt;We just finished a three day sprint of &lt;a href='http://www.openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt; tracing, adding critical features to the main capitals in the &lt;a href='http://en.wikipedia.org/wiki/Sahel'&gt;Sahel region of West Africa&lt;/a&gt;. This is in response to a &lt;a href='http://www.fews.net/docs/Publications/Alert_West_2012_03_en.pdf'&gt;new food security alert&lt;/a&gt; issued last week from Famine Early Warning System Network (&lt;a href='http://www.fews.net/Pages/default.aspx'&gt;FEWS NET&lt;/a&gt;) for the Sahel. Currently five countries are in danger of famine due to drought and food security conditions - Mauritania, Mali, Burkina Faso, Niger, and Chad.&lt;/p&gt;&lt;p&gt;OpenStreetMap is a critical resource in disaster response, particularly in this part of the world where current map data is often lacking. In this sprint, we focused our efforts on adding data to OpenStreetMap for capitals in the five at-risk countries.&lt;/p&gt;&lt;h2 id='hitting_capitals_first'&gt;Hitting capitals first&lt;/h2&gt;&lt;p&gt;We&amp;#8217;ve added road data to the capitals using satellite imagery. We are working to receive higher-resolution imagery for critical areas outside of the capitals, and are planning another tracing sprint once that is available. Here are some of the results of the work we&amp;#8217;ve completed so far.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ouagadougou, Burkina Faso&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7229/6893986266_19ef76baa8_z.jpg' alt='' /&gt; &lt;em&gt;Within the capital of Burkina Faso, we&amp;#8217;ve increased detail in the roads and paths in the outskirts of the city.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7056/6893641222_9714f22aef_z.jpg' alt='' /&gt; &lt;em&gt;You can see many areas around the city have informal road tracks.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Bamako, Mali&lt;/strong&gt;&lt;br /&gt;&lt;img src='http://farm8.staticflickr.com/7235/7039737339_65ed4cc6bd_z.jpg' alt='' /&gt; &lt;em&gt;Areas that weren&amp;#8217;t on the map before are now on the map.&lt;/em&gt;&lt;/p&gt;&lt;h2 id='facilitating_data_sharing_between_organizations'&gt;Facilitating data sharing between organizations&lt;/h2&gt;&lt;p&gt;We&amp;#8217;re also working to boost the transportation networks and place data within OpenStreetMap in the Sahel region to facilitate data sharing between organizations. All of this tracing work is being done in conjunction with other data coordination activities in the region. Having a common operating picture is critical for the international community to respond to early warnings.&lt;/p&gt;&lt;p&gt;We&amp;#8217;re just kicking this effort off. The mapping team - &lt;a href='https://twitter.com/#!/DanielPWWood'&gt;Dan Wood&lt;/a&gt;, &lt;a href='https://twitter.com/#!/ChadLawlis'&gt;Chad Lawlis&lt;/a&gt;, &lt;a href='http://twitter.com/mayarichman'&gt;Maya Richman&lt;/a&gt;, and &lt;a href='https://twitter.com/#!/rub21tk'&gt;Ruben Lopez Mendoza&lt;/a&gt; - have done incredible work during this first sprint. Join us in our &lt;a href='https://github.com/mapbox/mapping'&gt;public github repo&lt;/a&gt; to contribute and give feedback. We&amp;#8217;re tracking our progress and listing out the priority areas of where we&amp;#8217;ll be tracing in the &lt;a href='https://github.com/mapbox/mapping/wiki'&gt;wiki page&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-04-02T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/tracing-openstreetmap-sahel</guid>
</item>
<item>
  <title>MapBox Streets and OpenStreetMap License Change Schedule</title>
  <link>http://mapbox.com/blog/osm-license-changes</link>
  <description>&lt;p&gt;&lt;a href='http://blog.osmfoundation.org/2012/03/27/service-schedule-march-april-2012'&gt;The service schedule for the OpenStreetMap license change&lt;/a&gt; was announced yesterday. It will put the OpenStreetMap database into read only-mode between April 1st and April 4th, and then start slowly processing all non-clean objects, meaning objects contributed by the few users who have not agreed to the license change by April 1st.&lt;/p&gt;&lt;p&gt;We will pull a copy of the last available OpenStreetMap database export on March 31st, meaning that all changes to the OpenStreetMap database made up until then will go into our next render of &lt;a href='http://mapbox.com/tour/#maps'&gt;MapBox Streets&lt;/a&gt;, which is scheduled for April 14th. After that, we are aiming for another render of MapBox streets by mid May. By then, we expect the impact of the license change on the data to be largely mitigated by remapping efforts.&lt;/p&gt;&lt;p&gt;For background, read &lt;a href='http://www.osmfoundation.org/wiki/License/About_The_License_Change'&gt;about the license change&lt;/a&gt; on the OpenStreetMap Foundation blog.&lt;/p&gt;</description>
  <pubDate>2012-03-29T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/osm-license-changes</guid>
</item>
<item>
  <title>Open Mapping Discussion on TWiT.tv</title>
  <link>http://mapbox.com/blog/open-mapping-twit</link>
  <description>&lt;p&gt;Yesterday &lt;a href='https://twitter.com/#!/brady'&gt;Brady Forrest&lt;/a&gt; from O&amp;#8217;Reilly Media led a &lt;a href='http://www.youtube.com/watch?v=LK0i7R1zPRE&amp;amp;feature=youtu.be&amp;amp;t=48m30s'&gt;great conversation on This Week in Google&lt;/a&gt; on TWiT.tv on open mapping and the growing discussion around Google Maps versus OpenStreetMap. Of course Google&amp;#8217;s new pricing came up as one of the driving factors behind companies like &lt;a href='http://mapbox.com/blog/streeteasy-makes-the-switch-to-mapbox-from-google/'&gt;StreetEasy&lt;/a&gt; and &lt;a href='http://mapbox.com/blog/foursquare-switches-mapbox-streets-openstreetmap/'&gt;foursquare&lt;/a&gt; switching to alternatives, but much of the conversation was also around the benefits of using open data - instead of proprietary - and the flexibility that allows.&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;One of the things that&amp;#8217;s happening with OpenStreetMap is that people will start to look around and go, oh wait a minute, I&amp;#8217;m going from free with Google Maps to suddenly I have to pay in some cases hundreds of thousands of dollars for it. Is there another option? And when they see OpenStreetMap suddenly they&amp;#8217;re like oh, but I can have a little more control.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;We were psyched for out tools to get a generous &lt;a href='http://www.youtube.com/watch?v=LK0i7R1zPRE&amp;amp;feature=youtu.be&amp;amp;t=55m0s'&gt;shout out&lt;/a&gt; as not only alternatives to Google Maps, but also open source tools that help people make better, custom maps.&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;But the people who are really going to capitalize on the switch to OSM are Development Seed, which is a company working out of DC run by this guy Eric Gundersen, and that&amp;#8217;s who StreetEasy and foursquare both used. I was chatting with him the other day, and it&amp;#8217;s really, in the past year, the data has gotten better and the open stack has gotten better. Leaflet is a JavaScript control for maps, MapBox is Development Seed&amp;#8217;s product that they serve the maps from, and then TileMill which lets you make your own tiles.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;You can watch the &lt;a href='http://www.youtube.com/watch?v=LK0i7R1zPRE&amp;amp;feature=youtu.be&amp;amp;t=48m30s'&gt;whole segment here&lt;/a&gt;, starting at the 48 minute mark.&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.youtube.com/watch?v=LK0i7R1zPRE&amp;amp;feature=youtu.be&amp;amp;t=48m30s'&gt;&lt;img src='http://farm8.staticflickr.com/7060/7006112195_0ca58027b4_z.jpg' alt='' /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We&amp;#8217;re excited to be at the &lt;a href='http://whereconf.com/where2012'&gt;Where2.0 conference&lt;/a&gt; next month to talk more with folks about open geo data, how we&amp;#8217;re &lt;a href='http://mapbox.com/blog/osm-analysis/'&gt;helping improve OpenStreetMap data&lt;/a&gt;, and how to use our tools like &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill&lt;/a&gt;, &lt;a href='http://mapbox.com/plans/'&gt;MapBox&lt;/a&gt;, and &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets/'&gt;MapBox Streets&lt;/a&gt;. Eric and Tom will give a keynote presentation on &lt;a href='http://whereconf.com/where2012/public/schedule/detail/24486'&gt;designing fast and beautiful maps&lt;/a&gt;, and a &lt;a href='http://whereconf.com/where2012/public/schedule/detail/23598'&gt;workshop on making web maps with open source tools&lt;/a&gt;. We&amp;#8217;ll post more details here on the conference in the coming weeks.&lt;/p&gt;</description>
  <pubDate>2012-03-22T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/open-mapping-twit</guid>
</item>
<item>
  <title>Experiments in the 3rd Dimension</title>
  <link>http://mapbox.com/blog/experiments-3rd-dimension</link>
  <description>&lt;style&gt;
.blog .prose iframe {
border: 1px solid #ddd;
padding: 3px;
max-width: 680px;
margin: 0px auto 20px;
}
&lt;/style&gt;&lt;p&gt;The good folks at &lt;a href='http://www.sanborn.com/'&gt;Sanborn&lt;/a&gt; were kind enough to send us a sample extract of processed 3D building data from their &lt;a href='http://www.sanborn.com/products/citysets.asp'&gt;3D Cities archive&lt;/a&gt;, so I set out to see what we could do with it using TileMill and the building symbolizer in &lt;a href='http://mapnik.org/'&gt;Mapnik&lt;/a&gt;.&lt;/p&gt;&lt;iframe src='http://a.tiles.mapbox.com/v3/dhcole.map-6ssdy5ac.html#16.00/40.7501/-73.9889' frameborder='0' height='480' width='640'&gt; &lt;/iframe&gt;&lt;h2 id='mapping_3d_buildings'&gt;Mapping 3D buildings&lt;/h2&gt;&lt;p&gt;Out of the box, the Sanborn 3D data is ready to map. To &lt;a href='/tilemill/docs/guides/optimizing-shapefiles/'&gt;make it fast in TileMill&lt;/a&gt;, I reprojected the data to Spherical Mercator and added a Mapnik shape index. Then seeing the buildings pop up was just a matter of adding the shapefile as a layer in TileMill and setting the &lt;code&gt;building-height: 100;&lt;/code&gt; style. The Sanborn data contains a &lt;code&gt;bld_h_m&lt;/code&gt; value for each polygon, which is the shape&amp;#8217;s building height in meters. To accurately extrude shapes according to this value, we need to do a &lt;a href='https://github.com/mapbox/carto/issues/126'&gt;slight patch to TileMill&lt;/a&gt; so we can set &lt;code&gt;building-height: &amp;quot;[bld_h_m]&amp;quot;;&lt;/code&gt;, which uses the data value instead of a fixed number.&lt;/p&gt;&lt;p&gt;Finally, to get the polygons to render in the right order, I imported the data into &lt;a href='/tilemill/docs/guides/postgis-work/'&gt;PostGIS&lt;/a&gt; and sorted it with &lt;code&gt;ORDER BY ST_YMax(ST_Envelope(the_geom)) DESC&lt;/code&gt;.&lt;/p&gt;&lt;h2 id='other_abuses_for_3d_in_tilemill'&gt;Other (ab)uses for 3d in TileMill&lt;/h2&gt;&lt;p&gt;In the past, we&amp;#8217;ve hacked around with using the building symbolizer to show data, particularly like major earthquakes:&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm6.staticflickr.com/5027/5593951262_53d2c2977d_z.jpg' alt='Japan earthquake in 2011' /&gt;&lt;/p&gt;&lt;p&gt;If you&amp;#8217;re looking to add some basic depth to your map features, you can get creative with the building symbolizer. It supports three basic styles for the &lt;a href='http://mapbox.com/carto/#section-building'&gt;color and height&lt;/a&gt; of extruded shapes. There&amp;#8217;s a lot you can do with these styles, particularly by stacking lots of semi-transparent features.&lt;/p&gt;&lt;iframe src='http://a.tiles.mapbox.com/v3/dhcole.popup/mm/share,zoompan.html#5.00/18.688/10.020' frameborder='0' height='480' width='640'&gt; &lt;/iframe&gt;&lt;p&gt;Here, I&amp;#8217;ve made a 3D population density map by taken randomly distributed points within census tract polygons and summarized them on a diamond grid. Looking close up, you can see this is just a grid with lots of extruded shapes.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7067/7003749571_bf212feeac_z.jpg' alt='Close up of the 3D population grid' /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='/tilemill'&gt;TileMill&lt;/a&gt;&amp;#8217;s not intended to be a substitute for a full 3D rendering application, but it&amp;#8217;s quite powerful for building data and some quirky visualizations. Check it out and let us know (&lt;a href='http://mapbox.com/mapbox'&gt;@mapbox&lt;/a&gt;) what you make.&lt;/p&gt;</description>
  <pubDate>2012-03-22T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/experiments-3rd-dimension</guid>
</item>
<item>
  <title>Analyzing, Fixing, and Improving OpenStreetMap</title>
  <link>http://mapbox.com/blog/osm-analysis</link>
  <description>&lt;p&gt;We&amp;#8217;re looking at new ways to find out how and where &lt;a href='http://openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt; needs improvement. The collaborative mapping project that provides the street data in our world map &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets/'&gt;MapBox Streets&lt;/a&gt; is remarkably complete, as well as open and free, but it is continually unfinished as roads are built and borders changed.&lt;/p&gt;&lt;p&gt;&lt;a href='http://mapbox.com/blog/foursquare-switches-mapbox-streets-openstreetmap/'&gt;Foursquare&amp;#8217;s adoption of MapBox Streets and OpenStreetMap&lt;/a&gt; and &lt;a href='http://mapbox.com/blog/apple-and-their-maps/'&gt;Apple&amp;#8217;s likely usage&lt;/a&gt; have directed many more eyes at the project - all users who are likely to spot missing roads and features, and be able to give incredibly valuable feedback. This feedback has been one of the guiding elements of our &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;tracing efforts over the past few weeks&lt;/a&gt;, but we&amp;#8217;re working on ways to get global, fine-grained priorities set.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7100/6854177962_1167667662_z.jpg' alt='Analyzing MapBox Streets for gaps' /&gt;&lt;/p&gt;&lt;p&gt;One of the tools we&amp;#8217;ve been using is simply an overlay of social checkins on the map. Often city centers are well mapped, but completeness falls off quickly from the center and there&amp;#8217;s still a lot of population and activity in the outskirts.&lt;/p&gt;&lt;p&gt;Of course social network activity isn&amp;#8217;t an absolute indicator of where general populations are or what areas important to map, but it&amp;#8217;s a useful heuristic - and one that can be derived on a global level.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm7.staticflickr.com/6045/6854195838_9ce36dd6ab_z.jpg' alt='Street density analysis' /&gt;&lt;/p&gt;&lt;p&gt;But it&amp;#8217;s not just important where people are - we need to know where the map doesn&amp;#8217;t cover. For this we&amp;#8217;ve been working on finding the street density, measured by the file size of tile pyramids, of MapBox Streets. I talked about that &lt;a href='http://macwright.org/presentations/nodedc/#0'&gt;analysis at NodeDC on Monday, a presentation that&amp;#8217;s available online&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This is just one angle of finding and improving data gaps and flaws in OpenStreetMap - the community has &lt;a href='http://wiki.openstreetmap.org/wiki/Quality_Assurance'&gt;created many other methods&lt;/a&gt;, and novel ideas like &lt;a href='http://wiki.openstreetmap.org/wiki/TIGER_fixup/250_cities'&gt;fixing routing between cities&lt;/a&gt; have been used to drive improvements. The fact that OSM&amp;#8217;s data is available &lt;a href='http://planet.openstreetmap.org/'&gt;in its entirety&lt;/a&gt; and freely licensed enables all of these approaches.&lt;/p&gt;&lt;p&gt;When we find areas that need improvement, we start &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;tracing&lt;/a&gt;, finding and supporting local contributors, and working with organizations to find &lt;a href='http://developmentseed.org/blog/2009/apr/22/thousands_of_miles_added_open_street_map/'&gt;freely licenseable data&lt;/a&gt; to add to the map.&lt;/p&gt;</description>
  <pubDate>2012-03-21T12:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/osm-analysis</guid>
</item>
<item>
  <title>Design and Data Updates for MapBox Streets Down to Zoom Level 17</title>
  <link>http://mapbox.com/blog/design-data-updates-mapbox-streets</link>
  <description>&lt;p&gt;We&amp;#8217;ve rolled out new updates for &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets/'&gt;MapBox Streets&lt;/a&gt;, our colorful &lt;a href='http://openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt;-based world map. The underlying data has been updated to include many of the &lt;a href='http://mapbox.com/blog/osm-contributors-surge/'&gt;amazing OSM contributions&lt;/a&gt; that have happened in recent weeks, and the design has received substantial refinements to improve readability and display more map features. All of this is also now available down to zoom level 17 across the entire world.&lt;/p&gt;&lt;p&gt;Here are some of the design changes that we &lt;a href='http://tiles.mapbox.com/mapbox/map/mapbox-streets'&gt;just rolled out&lt;/a&gt;.&lt;/p&gt;&lt;h3 id='labels'&gt;Labels&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7219/6995833823_abf2fdec19_z.jpg' alt='Labels' /&gt;&lt;/p&gt;&lt;p&gt;One of the more noticeable changes is the we are now using abbreviations for many common suffixes and prefixes in English road labels. The abbreviation logic attempts to work intelligently so that, for example, &amp;#8220;West Main Street&amp;#8221; becomes &amp;#8220;W Main St&amp;#8221; but &amp;#8220;North Road&amp;#8221; becomes &amp;#8220;North Rd&amp;#8221; and not &amp;#8220;N Rd&amp;#8221;. More short roads are now being labeled as a result of the abbreviations. (Let us know if you find situations where things aren&amp;#8217;t working correctly.)&lt;/p&gt;&lt;p&gt;Street label clarity has been improved by enlarging the text, darkening the shade, and decreasing the letter spacing. We are including more important road names at lower zoom levels and showing more labels overall.&lt;/p&gt;&lt;p&gt;Other labels have also been adjusted. Place names are better distinguished from street names, and priorities for school labels have been adjusted to fix many urban areas where they appeared too densely.&lt;/p&gt;&lt;h3 id='roads_and_tunnels'&gt;Roads and tunnels&lt;/h3&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7040/6995833839_0519736c24_z.jpg' alt='Roads and tunnels' /&gt;&lt;/p&gt;&lt;p&gt;Previously tunnel visibility was poor, but they are now properly distinguished from other roads. Various road widths have been adjusted to try to better highlight primary routes, and one way arrows have been made a bit smaller and more subtle.&lt;/p&gt;&lt;h3 id='more_map_features'&gt;More map features&lt;/h3&gt;&lt;p&gt;A number of features that were not previously included are now visible on the map. Most noticeably a bug that caused many wooded areas to not appear has been fixed. You can also now see beaches, sand, cliffs, piers, and docks.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7205/6849709740_ccea96c176_z.jpg' alt='Beaches and cliffs' /&gt;&lt;/p&gt;&lt;p&gt;We&amp;#8217;ve added rail stations (including subways) and added icons for airports. We&amp;#8217;ve also added labels to larger buildings at the highest zoom levels.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm7.staticflickr.com/6108/6849709766_ae6c4efcdd_z.jpg' alt='SFO and better POI lables' /&gt;&lt;/p&gt;&lt;h3 id='color_adjustments'&gt;Color adjustments&lt;/h3&gt;&lt;p&gt;The colors of many features have been tweaked to improve the overall aesthetic. Forests and buildings have been toned down to not stand out as much. Elementary and high school grounds are no longer as prominent as college and university campuses.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm7.staticflickr.com/6234/6995833925_3a39406a9e_z.jpg' alt='Color adjustments' /&gt;&lt;/p&gt;&lt;h2 id='get_started_with_mapbox_streets'&gt;Get started with MapBox Streets&lt;/h2&gt;&lt;p&gt;MapBox Streets can be used within &lt;a href='http://mapbox.com/plans/'&gt;MapBox Hosting plans&lt;/a&gt;, including a free option. Our documentation site has &lt;a href='http://mapbox.com/hosting/mapbox-streets/'&gt;detailed instructions and examples&lt;/a&gt; to help you get started.&lt;/p&gt;</description>
  <pubDate>2012-03-19T12:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/design-data-updates-mapbox-streets</guid>
</item>
<item>
  <title>Demos and Workshop at TUgis Conference</title>
  <link>http://mapbox.com/blog/tugis-conference</link>
  <description>&lt;p&gt;For the next two days, &lt;a href='http://developmentseed.org/team/dave-johnson/'&gt;DJ&lt;/a&gt; and I are at the &lt;a href='http://www.towson.edu/tugis/index.htm'&gt;TUgis conference&lt;/a&gt;, Towson University&amp;#8217;s annual GIS conference. We&amp;#8217;re looking forward to connecting with folks coming at mapping from the GIS side, learning more about what they need, and teaching them about what&amp;#8217;s possible now in web mapping. I&amp;#8217;m particularly excited for today&amp;#8217;s keynote from &lt;a href='https://twitter.com/#!/BarneyKrucoff'&gt;Barney Krucoff&lt;/a&gt;, Maryland&amp;#8217;s GIO officer, who gave a great talk about what the state is doing to release its GIS data at this month&amp;#8217;s &lt;a href='http://www.meetup.com/Geo-DC/events/47770192/'&gt;Geo DC meetup&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;DJ and I will be running &lt;a href='http://mapbox.com/tilemill'&gt;TileMill&lt;/a&gt; and &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets'&gt;MapBox Streets&lt;/a&gt; demos all day from the MapBox exhibit booth. Tomorrow, we&amp;#8217;ll lead two sessions:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Designing Fast and Beautiful Maps with MapBox and TileMill&lt;/strong&gt;: In this session we&amp;#8217;ll walk through how to use TileMill to design maps, taking participants from a spreadsheet to a custom designed map, and then sharing it online with our cloud map hosting service and getting it live on a website via embeddable widgets and the MapBox API. &lt;em&gt;&lt;em&gt;Tuesday, 10:45 am&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;An Open Source Web Mapping Tool Box&lt;/strong&gt;: This 90 minute workshop starts with a brief walk through of open source mapping tools and examples of what&amp;#8217;s possible in the world of web mapping. It will be followed by two one hour simultaneous workshops to suit different mapping needs. Participants will choose between a hands on workshop with GIS analysis and cartography using open sources tools, or a walk through of the fundamentals of building a microsite with your maps and some light web languages. &lt;em&gt;&lt;em&gt;Tuesday, 3:30 pm&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7121/6850606292_eacef45d9c_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;If you want to talk about open source maps, MapBox, or anything else, come find us at the MapBox exhibit table. We&amp;#8217;ll be posting updates from TUgis via Twitter as well at &lt;a href='https://twitter.com/#!/ian_villeda'&gt;@ian_villeda&lt;/a&gt; and &lt;a href='https://twitter.com/#!/djindc'&gt;@djindc&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-03-19T11:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/tugis-conference</guid>
</item>
<item>
  <title>Presenting on Big Data Processing and Visualization at NodeDC Tonight</title>
  <link>http://mapbox.com/blog/big-data-visualization-nodedc</link>
  <description>&lt;p&gt;The &lt;a href='http://nodedc.github.com/'&gt;March NodeDC meetup&lt;/a&gt; is &lt;strong&gt;tonight at 7:00 pm at Stetson&amp;#8217;s Bar and Grill&lt;/strong&gt;. There will be two presentations, both on visualizing large data sets using &lt;a href='http://nodejs.org/'&gt;node.js&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href='http://developmentseed.org/team/tom-macwright/'&gt;Tom&lt;/a&gt; will talk about big data processing and visualization with node.js, and specifically on solving the problem of analyzing road density data with &lt;a href='http://redis.io/'&gt;redis&lt;/a&gt;, &lt;a href='http://mbostock.github.com/d3/'&gt;d3&lt;/a&gt;, &lt;a href='http://www.sqlite.org/'&gt;sqlite&lt;/a&gt;, and &lt;a href='http://polymaps.org/'&gt;polymaps&lt;/a&gt;. As part of our &lt;a href='http://mapbox.com/blog/satellite-tracing-osm/'&gt;improvements to OpenStreetMap&lt;/a&gt;, we&amp;#8217;ve been doing intense analysis of the data that we have and what we&amp;#8217;re missing - this talk will review the problems of missing data and fundamentals of processing like binning and prototyping. Check out &lt;a href='http://macwright.org/presentations/nodedc/#0'&gt;his slides&lt;/a&gt; for a preview.&lt;/p&gt;&lt;p&gt;Then &lt;a href='https://twitter.com/#!/kylehill'&gt;Kyle Hill&lt;/a&gt; will talk about visualizing &lt;a href='http://www.capitalbikeshare.com/'&gt;Capital Bikeshare&lt;/a&gt; data as a scoreboard for the fastest point-to-point trips in the systsm using the Persevere API.&lt;/p&gt;&lt;p&gt;The NodeDC meetup is open to anyone interested in node.js and is a great opportunity to hear what folks are doing with node. The group meets once a month, usually on the third Monday of the month. Watch &lt;a href='http://nodedc.github.com/'&gt;nodedc.github.com&lt;/a&gt;, join &lt;a href='http://www.meetup.com/node-dc/'&gt;the meetup group&lt;/a&gt;, or follow &lt;a href='http://twitter.com/nodedc'&gt;@nodedc&lt;/a&gt; on Twitter for updates.&lt;/p&gt;</description>
  <pubDate>2012-03-19T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/big-data-visualization-nodedc</guid>
</item>
<item>
  <title>Tracing Satellite Imagery in OpenStreetMap</title>
  <link>http://mapbox.com/blog/satellite-tracing-osm</link>
  <description>&lt;p&gt;For the past two weeks we have been tracing satellite imagery into &lt;a href='http://www.openstreetmap.org/'&gt;OpenStreetMap&lt;/a&gt; to support some of our subscribers using &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets/'&gt;MapBox Streets&lt;/a&gt;. OpenStreetMap&amp;#8217;s real power is that if something isn&amp;#8217;t on the map, you can just add it. So this is more than just open data for us, this is about co-creation and collaborating with a larger community.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7189/6989844955_818e026270.jpg' alt='The sprint table' /&gt; &lt;em&gt;Around the sprint table at the MapBox office in Washington DC&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The fact that the geography around us is constantly changing is why we are using OpenStreetMap to power our key maps. Not only does OpenStreetMap have amazing data today - every day the data improves as the its network of contributors &lt;a href='http://mapbox.com/blog/osm-contributors-surge/'&gt;grows&lt;/a&gt;. Right now, our team is focusing on completing a few key populous cities, making sure that suburbs and popular features like buildings, rivers, and parks provide meaningful and attractive context for users. With a team of six people heads down we can very quickly light up a city and meet other local contributors working on the ground.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7204/6839220552_d5f5b387b3.jpg' alt='Guadalajara Tracing' /&gt; &lt;em&gt;A look at new edits over the last week to Guadalajara, Mexico, a huge city with the metropolitan area of over 4 million people.&lt;/em&gt;&lt;/p&gt;&lt;h1 id='the_tools_to_start_tracing'&gt;The Tools to Start Tracing&lt;/h1&gt;&lt;p&gt;To add all of these features, we&amp;#8217;re using &lt;a href='http://josm.openstreetmap.de/'&gt;JOSM&lt;/a&gt; an open source desktop editor for OpenStreetMap. Here is a quick step by step of how you can start tracing imagery in 5 minutes using the same tools and processes we are.&lt;/p&gt;&lt;p&gt;Before you start tracing, be sure to read the OpenStreetMap &lt;a href='http://wiki.openstreetmap.org/wiki/Editing_Standards_and_Conventions'&gt;editing standards and conventions&lt;/a&gt;, then &lt;a href='http://josm.openstreetmap.de/'&gt;download JOSM&lt;/a&gt;. It&amp;#8217;s helpful to have a mouse on hand (versus a trackpad), as you&amp;#8217;ll want to do a lot of precise clicking. Once you&amp;#8217;ve set up and run JOSM, click the &amp;#8216;download data&amp;#8217; button at the top left.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7210/6989857109_063721a42f.jpg' alt='downloading data from JOSM' /&gt;&lt;/p&gt;&lt;p&gt;You will see a map similar to openstreetmap.org. Find and select the area you are interested in and click download. To pan around the map, press and hold CTRL. To select an area, just use the left mouse button.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7199/6989859927_259740001a.jpg' alt='bounding box for data downloads into JOSM' /&gt;&lt;/p&gt;&lt;p&gt;To edit, add Bing Imagery under the Imagery dropdown menu.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7059/6843736806_89e0b20a2d.jpg' alt='Bing Imagery in JOSM' /&gt;&lt;/p&gt;&lt;p&gt;You&amp;#8217;ll then want to toggle between JOSM&amp;#8217;s three modes using these key bindings: draw (A), select (S), and delete (D). Use draw to add nodes, ways and areas. When you&amp;#8217;re done adding a way, double click on the last node. To create an area simply close a series of nodes by attaching the last node the the first. For more advanced editing, check out &lt;a href='http://wiki.openstreetmap.org/wiki/Josm'&gt;the online guide&lt;/a&gt; and &lt;a href='http://wiki.openstreetmap.org/wiki/JOSM/Plugins'&gt;useful plugins&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Once you&amp;#8217;ve created your features, tag them appropriately with a preset (see &amp;#8216;Presets&amp;#8217; menu) or directly via the &amp;#8216;Properties&amp;#8217; window (see &amp;#8216;Windows&amp;#8217; menu). Good resources for learning how to tag elements in OpenStreetMap include &lt;a href='http://taginfo.openstreetmap.org/'&gt;TagInfo&lt;/a&gt; and the &lt;a href='http://wiki.openstreetmap.org/wiki/Map_Features'&gt;Map Features&lt;/a&gt; page of the &lt;a href='http://wiki.openstreetmap.org/wiki/Main_Page'&gt;OSM wiki&lt;/a&gt;. Explore the &lt;a href='http://lists.openstreetmap.org/listinfo'&gt;various list-serves&lt;/a&gt; and engage others in the OSM community.&lt;/p&gt;&lt;p&gt;Now you&amp;#8217;re ready to map the world.&lt;/p&gt;&lt;h2 id='designing_your_map'&gt;Designing your Map&lt;/h2&gt;&lt;p&gt;If you are looking to create your own custom designed map of OpenStreetMap data, it is easy to do so. Once your data is in OpenStreetMap, download &lt;a href='http://mapbox.com/tilemill/'&gt;TileMill, the open source design studio&lt;/a&gt; then read &amp;#8221;&lt;a href='http://mapbox.com/blog/create-a-custom-map-of-your-city-in-30-minutes-with-tilemill-and-openstreetmap/'&gt;Create a custom map of your city in 30 minutes with TileMill and OpenStreetMap&lt;/a&gt;&amp;#8221;. You will be able to make maps that look a lot like &lt;a href='http://mapbox.com/blog/announcing-mapbox-streets'&gt;MapBox Streets&lt;/a&gt; and host them on your own &lt;a href='http://mapbox.com/plans/'&gt;MapBox account&lt;/a&gt;, with even &lt;a href='https://tiles.mapbox.com/signup/free'&gt;free plans&lt;/a&gt;. If you have questions post them to &lt;a href='http://support.mapbox.com'&gt;support.mapbox.com&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-03-17T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/satellite-tracing-osm</guid>
</item>
<item>
  <title>We're going to the Toronto OSM Hack Weekend</title>
  <link>http://mapbox.com/blog/osm-hack-weekend-toronto</link>
  <description>&lt;p&gt;This weekend Tristen and I are attending the &lt;a href='http://wiki.openstreetmap.org/wiki/Toronto_Hack_Weekend_March_2012'&gt;OpenStreetMap hacking event in Toronto&lt;/a&gt;, organized by &lt;a href='http://twitter.com/rweait'&gt;Richard Weait&lt;/a&gt; and hosted by Ryerson University. Over a dozen people have RSVPed so far and we&amp;#8217;re excited to get together.&lt;/p&gt;&lt;p&gt;&lt;img src='http://farm8.staticflickr.com/7042/6841370806_a7e913dbab_z.jpg' alt='' /&gt;&lt;/p&gt;&lt;p&gt;OSM hack weekends are events that bring together community members to tackle programming, design, and documentation tasks for the OpenStreetMap project. The focus is on improving the tools we use to access, edit, and display the map data.&lt;/p&gt;&lt;p&gt;This afternoon starting at 2:00 pm there will be an introductory presentation for Ryerson students, faculty, and anyone who is curious to learn more about OpenStreetMap followed by a roundtable Q&amp;amp;A session. Richard Weait will lead the presentation, outlining various aspects of the project, and questions will be fielded by some of the OpenStreetMappers who are already in town for the hack weekend (including myself and Tristen).&lt;/p&gt;&lt;p&gt;The hacking will happen on Saturday and Sunday. Tristen and I will likely focus on graphics and web interface work, and I may tackle some cartography and Mapnik related tasks as well. Some of this work was already started at the &lt;a href='http://wiki.openstreetmap.org/wiki/DC_Hack_weekend_Feb_2012'&gt;recent OSM hack weekend in DC&lt;/a&gt;, and a number of the same attendees will be in Toronto as well so we will be able to keep the momentum and continue conversations here.&lt;/p&gt;&lt;p&gt;You can follow &lt;a href='http://twitter.com/aj_ashton'&gt;me&lt;/a&gt; and &lt;a href='http://twitter.com/fallsemo'&gt;Tristen&lt;/a&gt; on Twitter for updates throughout the event. And if you&amp;#8217;re in the Toronto area and are interested in OpenStreetMap you can join us! Full details are &lt;a href='http://wiki.openstreetmap.org/wiki/Toronto_Hack_Weekend_March_2012'&gt;on the OSM wiki&lt;/a&gt;.&lt;/p&gt;</description>
  <pubDate>2012-03-16T00:00:00-07:00</pubDate>
  <dc:creator>MapBox</dc:creator>
  <guid isPermaLink="true">http://mapbox.com/blog/osm-hack-weekend-toronto</guid>
</item>

</channel>
</rss>

