Stamen is a design and technology studio in San Francisco.

You are at Stamen's blog, mostly written by Eric Rodenbeck. You can subscribe via RSS, or get email alerts.

Contact Stamen

    follow Stamen on Twitter

    Recent blog posts

    May 5, 2015

    Diving into ecosystem data with Berkeley's Ecoengine and interfaces from Stamen

    New Tools for Research with UC Berkeley

    Explore, Compare, Inspire!

    Most people know that the University of California at Berkeley is a world-class research university. Some folks have heard of the Hearst Museum of Anthropology. But not so many people know that the university houses seven natural history museums which together hold 12 million specimens that form the most complete representation of our state’s living and extinct plants and animals. Our new work with Cal is designed to help change that. The Ecoengine is a powerful resource for understanding changing ecosystems, more than ever a crucial challenge for our times.

    We’re thrilled to have built the main interfaces for searching and analyzing that data about those specimens, along with a whole lot more information that’s been brought together in a single database and API called the Berkeley Ecoinformatics Engine (also known as the Ecoengine).

    The Ecoengine API is already a remarkable resource for the most tech-savvy academics. Our job was to make it searchable by researchers and students who would rather use a web browser to discover data and test hypotheses than jump straight into the statistics package R or proprietary desktop GIS systems.

    The challenge, then, was to create interfaces that hide none of the complexity of the data — researchers want to see it all, no dumbing down! — but also that are intuitive to use and that produce findings that are easy to share.

    The Ecoengine has data from specimens collected around the world, though the collections are concentrated in California.

    Explore

    With millions of data points across thousands of categories, Explore presented a challenge of designing a search interface that’s highly flexible, but also gets results quickly and is easy to learn.

    The facets along the left side, which are a key part of the underlying database, also give an immediate sense of the scope of the Ecoengine data and allow you to quickly drill into the data even if you’re not sure what to search for at the outset. In the screenshot above, in just a few clicks, we narrowed the scope down to just birds in California with known locations and physical specimens in the collection.

    At right, the default facets immediately tell you the scope of the available data: mostly in the United States, mostly in California, and predominantly animals.

    The search box at the top allows for very specific queries (like for a species name) and the timeline next to it lets you narrow your search to a slice of a few years.

    Compare

    After we developed Explore, Charles Marshall (director of the Museum of Paleontology and one of the principal investigator on the Holos/Ecoengine project) challenged us to push further in our second phase.

    A common limitation of web-based biodiversity databases is that you’re limited to seeing one query at a time. Our charge from Charles was to “break the lock of single-taxa views of change.”

    So we designed an interface purpose-built for comparing diverse spatial datasets. It starts with either simple term queries of the Ecoengine entered directly in the Compare tool, or with more complex queries brought over from the Explore tool. These can include facet selections, time ranges and bounding box filters as well as search terms.

    Here’s an example comparing observations of western fence lizards and dusky-footed woodrats:

    That might seem like an obscure thing to search for! But by different indirect mechanisms, fence lizards help keep Lyme disease occurrence low. Woodrats increase occurrence. So this is a map with some direct interest for anyone concerned about Lyme disease.

    The interface is highly configurable, with drag-and-drop layers, custom labels, editable colors, and multiple basemap options. It includes boundaries (like state, county, ecoregion), our own Terrain layer, and the light and dark maps we designed for CartoDB:

    And every map configuration can be easily bookmarked and shared, since we write the queries and configurations into the stateful URL.

    Inspire

    The Explore and Compare interfaces needed to look at home on the holos.berkeley.edu website (and work within a larger production environment). Just as important, our work needed to lay the foundation for other developers to use the freely available API to build their own tools for use cases none of us at Stamen or at the University had previously considered.

    Making code open source is one thing (and we’ve done a lot of that). Making it easy to understand and reuse is another. and that’s even harder if the code then needs to work within a production CMS (in this case, Mezzanine).

    The solution here came about rather naturally: divide the load. So we have two production interfaces that can be built and deployed on the main Holos site, and then we have other versions and prototypes of many more interfaces that are right at home on Github Pages:

    Steal this code!

    The Explore and Compare interfaces also run just fine on Github Pages (see Explore and Compare). So fork and modify! But those are pretty complex, and we made many other prototypes along the way. We hope the examples below will inspire others to grab the code and try their hands at making their own ecovisualizations.

    Antarctic Chordata

    • A stress-test of loading all Chordata in a non-Mercator projection centered on Antarctica

    Arctic Chordata

    • The same as the previous, but centered on the North Pole

    Lizards and Woodrats

    • Spot spatially co-occurring observations by toggling layers

    Taxa Sampling Distributions

    • Example of small multiples to compare sampling distributions.

    • ColorBrewer palettes

    Woodrats over Decades

    • Example of small multiples to compare temporal distributions

    Quercus

    • Small multiples with search functionality (edit "quercus")

    • Split by search facet

    • Displays top 24 facets for a search

    Photos

    • Simple photo-viewing app, accepts URLs in the same format as Explore

    Bulk Download

    • A tool for generating CSV text from a query

    • Downloads multiple pages of data. A limitation of the API is that results are always paginated, so loading all data for a query requires some work.

    Observations

    • An early version of Explore with search box, time filter, pagination and export options

    • Could be a good starting place for new EcoEngine applications, since the app is only about 250 lines long and uses only d3.js

    Early version of Explore

    • An early version of explore with a preview of available photos and a "Detail" pane that lists out information about observations that are hovered over.

    Sensors

    • A simple "hello world" of accessing and printing EcoEngine data with d3

    • Lists an index of available sensors

    Scatterplot

    • A simple D3.js scatterplot showing observations by country over time.

    Parallel Coordinates

    • A D3.js parallel coordinates plot showing a sample of 2000 observations.

    The Berkeley Ecoinformatics Engine is funded by the W. M. Keck Foundation.

    Apr 27, 2015

    Humaniterrain

    Cross-posted from http://openterrain.tumblr.com/

    Two days ago a magnitude 7.8 earthquake struck Nepal. The Humanitarian OpenStreetMap Team (HOT) sprang into action, coordinating mapping activities from remote mappers (read about how you can help) and working with open source mapping groups on the ground like Kathmandu Living Labs.

    One of the key components in any HOT activation is the humanitarian OSM style, hosted by OpenStreetMap France.

    Unfortunately, the humanitarian style doesn’t include terrain data, which would be very useful when mapping in remote mountainous areas such as the Himalayan foothills that make up the hardest-hit area in this recent earthquake.

    Using the SRTM 90m hillshade overlay that is the first outcome of our Open Terrain project, we created a composite style that adds hillshades to the existing humanitarian style. We’re calling this style humaniterrain.

    You can access the style at this URL: http://tiles.openterrain.org/?humaniterrain#9/27.8403/84.9133.

    The XYZ template (for use in any online mapping library or GIS) looks like this: http://{s}.tiles.openterrain.org/humaniterrain/{z}/{x}/{y}.png

    This is a very rough attempt to get something useful up and running as fast as possible. Let us know if you have any questions, via email at openterrain@stamen.com or on twitter at @stamen.

    Apr 21, 2015

    Hacking for Parks in DC: Agency Data
+
Citizen Data

    On April 11 and 12, the Interior Department held its first-ever hackathon. The topic was one that's close to our hearts: Parks! The myAmerica Dev Summit attracted people from all over the country interested in parks and code, and especially the new Recreation Information Database API (RIDB).

    Two Stamen folks went to the hackathon and worked on two things, both aimed at better telling the stories of parks through open data and social media.

    First, we brought along a dataset of links to about 77,000 Flickr photos harvested from within parks (using the tools we built for CaliParks.org). Those images came in handy for another team at the event: The folks from Booz Allen Hamilton built an awesome WanderList site to search the RIDB parks and show flickr photos in those parks (here's their code).

    And second, we worked with our friends at Trailhead Labs to figure out efficient ways to both improve trails data in OpenStreetMap and increase agency engagement with the OSM community. Here's more on that front.

    Trail Assist: Agency Data
+
Citizen Data

    Slides on SpeakerDeck

    Our goal over the weekend of the #dev4outdoors hackathon at the Department of the Interior was to make substantial progress on adding detail and texture inside the 3,000+ parks in the Recreation Information Database (RIDB).

    The RIDB gets you point locations and more than 40 text attributes like “camping” and “paddling.”

    But where exactly are those amenities? And what do those parks actually look like? People visit parks not for the point at the other end of a driving route but rather for the rich experience they’ll have when they get there.

    They’re going to want to know what that experience is before they get there. And once they’re, they want a good map.

    When faced with thousands of parks, we think social media and open data are key resources to not only fill in the gaps but also show the diversity of experiences you can have in parks.

    So, how to fill in a map of thousands of parks?

    Ask all the people: Agency staff, park volunteers, OpenStreetMappers, social media users. Fill in the details of the park with help from social media and crowd-sourced map data!

    On Caliparks.org, we harvest Instagram photos to show how people experience thousands of parks:

    Trailhead Labs built the open source traileditor.org so people can email in photos of trailheads, to build a crowd-sourced trailhead database with images and detailed information:

    But crowdsourced data is not without its challenges. It can work amazingly well at scale, but it can also be wrong.

    That’s where Trail Assist comes in. We propose to make it easier than ever for the parks community, including park visitors, to report and flag bootleg trails (also called social trails or even desire lines). The system can also help agencies improve their own data.

    First, email a photo of the suspected bootleg trail to social@traileditor.org, and that will add it to the TrailEditor site.

    Then we provide some information about what bootleg trails are and why we should be concerned about them.

    But more important, we push that point location to OpenStreetMap (OSM), the largest and most detailed publicly accessible map of the world ever made.

    That information then appears on OSM and alerts agencies or volunteer mappers that they should inspect the area more closely.

    For that, we’ve begun developing tools that make it much simpler to see where open data and official data differ.

    Working within the open source Java OSM editor (JOSM), we used some tools built by Stamen (the backend of Map Stack) and API integration with CartoDB to make a view like this:

    The yellow is agency data. The magenta is OSM data, and the variable blue lines are the Strava Global Heatmap. We use layer compositing blend modes to make yellow and magenta cancel to white, and then layer on the Strava map, making it instantly obvious which trails are most likely to be social trails and which of those are most heavily used.

    Bringing richer trails data into the OSM community

    One of our key goals is to improve data within OSM in a way that is true to the community that makes the map, and therefore gets owned by volunteer mappers, vastly increasing the likelihood that data quality will be maintained and improved over time.

    While we worked on-site during the hackathon, we engaged in a larger conversation (via Slack and social media) with members of the OSM community about trails and trailhead data. Brandon Knight (@geobrando) published a detailed proposal for a new standard for defining trailheads within OSM.

    That inspired community discussion (so far, 20 responses in the community thread), and a clear, succinct definition (in our opinion) emerged: A transition point between a trail network and the developed transportation network of roads, mass transit, etc. (See the start of the discussion here.)

    In our work at the hackathon, we also began circulating a proposal for a new social_path tag to clearly mark areas where trails exist that aren’t part of the official trail network.

    Our goals for this proposal are twofold: to enrich the data already present within OSM and to facilitate exclusion of such trails. Deleting unsanctioned trails is problematic, as they clearly exist in the real world.

    Like roads, most trails fall under the responsibility of a government agency that designates the permitted uses of a trail (whether horses or bikes are allowed, for example), and they also determine when a trail should not be used, particularly if there are safety or environmental considerations. The trail still exists, and (rather than deleting it) we can further specify its characteristics within OSM.

    Beyond preventing edit wars, we attempted to come up with a scheme that would facilitate easy exclusion of the data from most maps (to discourage use in the real world) while remaining available for cases when such data is legitimately useful (e.g. for evacuation or firefighting). Within the OSM community, such tagging could be considered “tagging for the renderer” (since there’s a clear intent to influence how they’re displayed, and this is generally discouraged), but we prefer to look at it as being akin to describing the precedence and use of roads using highway=tertiary, highway=service, etc.

    As with roads, not all trails are equal.

    For developers of websites and apps for parks, there’s a huge benefit in using OSM as a (free!) one-stop-shop for data regardless of jurisdiction. In fact, the benefit is so huge that developers will keep doing it. Even if the data is wrong.

    Better to make the data right AND provide easy tools for hiding or marking prohibited trails. So let map designers query for trails where highway != social_path and they get to serve better data, while agencies get a clear path to better maps across products they might not even know about and the open data community gets more accurate data.

    What’s next?

    • Enhance the proof of concept to more easily incorporate data from any source.
    • Investigate potential integration with the NPMap team’s Places Editor modifications to iD.
    • Work with the OSM community and local agencies to propose and drive adoption of a social trail tagging norm.
    • Organize a grassroots Trail Blitz in the Bay Area to field test the tools.
    • Field test the tools with data from local agencies.
    • Package up the tools for use by others.

    Apr 17, 2015

    Open Terrain: Work In-Progress for the Knight Foundation

    by Beth, Alan & Seth

    For the past few months, we’ve been quietly working under a grant from the Knight Foundation to do something that no one seems to have done before: publicly compiling as many open-licensed, locally-created terrain data sets as possible to stitch together a global set.

    Esri, Mapbox, NASA,Google, Mapquest and others already make terrain maps available. The challenge our project is intended to address, in addition to bringing a different set of design values to the maps themselves, is access to what’s under the hood. Access to the underlying data is often proprietary (like Esri’s terrain data) or otherwise restricted. This means that if someone wants to experiment with this data, they’re pretty much SOL. Low-resolution data exists for the whole world, thanks to NASA and their freely available SRTM 90m dataset, and the ongoing release of 30m data. The challenge is that once you start zooming in, even at 30m resolution, the visual impact of the data starts to break down:

    The free and open medium- to high-resolution data that we can find is often limited to a single country or region, and it’s scattered all over the place. We want to use this project to change that by creating a public repository containing lists of these open datasets, a merged “best available open data” view, and creating instructions and processes to stitch these datasets together.

    To make things more complicated, most raw digital elevation data requires some amount of cleanup to fill in holes in the data or otherwise remove artifacts. Everybody who uses the same open data sources has to fix the same errors, resulting in a lot of unnecessarily duplicated effort. Our workflow will include these cleanup steps (which typically involve using data sourced elsewhere), providing a seamless and ready-to-use service sourced from various datasets all over the world.

    Yesterday we put out a call for these datasets on Twitter, and have been amazed and delighted by the response. In less than 24 hours, we’ve been given leads to data sets that we were unaware of from Norway (thx @andershartmann), Australia (thx @AllanBarger), Germany (thx @cartocalypse), and more. We’ve also gotten pointers to bathymetry data, too! We’ll take it!

    This is a great start, but we need your help to make this the best data collection it can be.

    Here’s how you can help:

    1. Send us open terrain data sets. There’s a few different ways to get this to us:

    If you know the license and the resolution of the data, please include that too. Licensing is important, and is one of the major hurdles encountered when we work with terrain data. Keeping track of all data sources regardless of license is incredibly helpful, although we intend to stick to non-ambiguously licensed open data when producing the worldwide map.

    2. Follow what we’re doing at openterrain.tumblr.com. It’s our hub for public project updates, which are sometimes super nerdy and often really pretty.

    3. Spread the word! You might not know where to find this data, but you might know someone who does. Send them this post, or even just retweet this Tweet.

    Once we have this data, we’ll update our in-house terrain style and create terrain-enhanced versions of the Positron and Dark Matter basemaps we designed for CartoDB. These basemaps are free for anyone to use in their own mapping projects!

    Plus, we can make more beautiful experiments like these, for everywhere in the world:

    What’s even better, is that you’ll be able to, too.

    Mar 9, 2015

    A New Map for Instagram’s Instameets

    All around the world, people are getting together for Instameets, where Instagrammers gather to take lovely, fabulously filtered square photos of the world around them. It had been a challenge to effectively and elegantly map this community activity, so Instagram reached out to us to help to them out with a new map of community activity around the world.

    The new, now mobile-friendly Instameet map foregrounds photos instead of standard icons, and it distinguishes between gatherings old and new. Red dots and photo borders reflect Instameets in the future, while blue dots and photo borders reflect meetings in the past. Photos along the bottom of the map are organized chronologically, too, so that it’s easy to see what’s happening, when.

    Photo selection is also much clearer and cleaner:

    And you can search for locations of Instameets as well:

    As a cherry on top, for people who are looking to just see what’s out there, we implemented a simple animation cycling between featured Instameet photos.

    Learn more about Instameets and go play with the map at community.instagram.com!

    Mar 4, 2015

    Parks are social

    There’s a story in the American nature-loving tradition that people go to the outdoors in part to get away from other people. Some people might even say that’s the main reason to go outside.

    We’re ever more certain, however, that in truth parks are social, people live their lives in them, and bringing together support for parks means embracing that with open arms.

    That’s what we’ve been trying to do with the concept, design, and launch of CaliParks.org, our web application that brings together curated park location and activity data with completely uncurated image feeds from Instagram and Flickr, capturing images posted by anyone within the boundaries of California’s nearly 12,000 public parks.

    We’re thrilled with stories like this one from New America Media—soon to be translated into Spanish, Chinese, Korean, and Vietnamese! There you’ll meet young, diverse urban dwellers ready to visit and support parks, and also leaders like José Gonzalez of Latino Outdoors and Rue Mapp of Outdoor Afro, who are leading the way in showing the parks world that diverse communities already use and support parks and are ready to do more, given the right context.

    And that context is all about the conversations we collectively have about, in, and for parks. What stories do we tell? Who do we ask to share their experiences?

    As many people as possible!

    Right after we launched CaliParks.org last month, we worked with our friends at Upwell to hold a “Parkinar” about social media in parks — a conversation about conversations in parks.

    The response was amazing: More than 80 people participated directly in the Parkinar, including a range of influencers from large agencies like the National Park Service, community groups like Riverside’s Save Our Chinatown Committee, and blogs like Outdoorsy Mama and Modernhiker.com.

    Upwell’s research on the conversational impact showed that a single virtual event actually increased parks conversation more than LA Times:

    That’s nice for CaliParks.org, but it’s even better for parks as a whole: When we open up the conversation, the stories start flowing.

    Let’s keep that going!

    We’re working on improving CaliParks.org, so send us your feedback. There’s a feedback link on the bottom of every page on the site — and we do read those submissions!

    And let us know how we can help you expand the conversation. Here are some ideas:

    • CaliParks.org has what we call featured “story blocks” prominently on the home page. Right now we’re featuring “Explore State Parks.” Yeah! Do you have a favorite set of parks that speak to you and the community you’re part of? Send us a list of ten or twenty parks and a link to a Creative Commons photo on Flickr, and we’ll feature your favorite parks (and your group in the story block!), and then you can share the list with your community. (And if you need help finding an image, we can do that too.)
    • Embed maps from CaliParks.org along with activities and social media from your favorite parks in your blog or website. Just find your favorite parks, hit the “Embed” button, and copy the code into your site (like this)!
    • Take control of the way your favorite parks appear on CaliParks.org, and on social media. Post photos from your favorite parks to Instagram and Flickr and we’ll harvest them within a day to show on CaliParks.org. Just be sure you turn on location services so that your geolocation gets picked up.
    • Keep talking about parks on social media! Use the hashtag #caliparks so we can all share the conversation.

    And keep in touch! Thanks!

    Feb 26, 2015

    Taking Up Space: The Largest Leaseholders in San Francisco

    by Eric

    Ever wondered what companies are taking up the most space in San Francisco? Kalin Kelly, a director at boutique real estate firm CM Commercial, has been wondering the same thing and decided to take action to find out.

    Over the past few months, she’s been collecting all of the data she can find about leasing transactions in San Francisco. What she’s found is that the biggest real estate deals happening in the city (in terms of space) are mainly being done with technology companies, and that the lion’s share of it is happening along Market Street and into the Mission and Dogpatch. She predicts that the trend will continue south into the Mission.

    Is her prediction correct? Only time will tell. In the meantime, take a look at the map and see for yourself and read more about it in TechCrunch.

    Stamen founder and creative director Eric Rodenbeck has worked with Kalin Kelly as part of his work with the Community Arts Stabilization Trust (CAST).

    Jan 13, 2015

    The Zachary Watson Memorial Education Fund

    by Eric

    Last year, our friend and colleague Zachary Watson tragically died in an accident at the age of 29, leaving many of us shocked and deeply saddened. In his memory and honor, a few current and former Stamens have set up an education fund. It's being administered by our friends and neighbors down the street at Gray Area Foundation for the Arts.

    Zach was a well-loved and much-respected member of our community, involved with and leading some of Stamen's most iconic work. He was a free and independent man, quirky and full of life, pursuing his varied interests with a fresh eye and a big smile. So in that spirit, each year on March 14 (Pi Day) one promising young creative coder will receive a $5,000 grant from Zach's fund to help further their education. The funds will be provided free and clear, and recipients may use the money for whatever they wish.

    You can donate to the fund if you like; we want to keep his memory alive through helping others like him. And if you'd like to apply, or know someone who would, please take a look here for directions.

    I saw a lot of myself in Zach. Among other things, we were both the kinds of young men that thought suits and mohawks went well together. He was a smart and talented and fun guy, and I miss him a lot.

    Donate or apply to the Zachary Watson Memorial Education Fund here.

    Dec 16, 2014

    Get a drink of open data with MapIsArt

    Just in time for your holiday gift buying rush, we're announcing today a new partnership with MapIsArt. They're a new company formed to take advantage of the increased availability and accuracy of OpenStreetMap data by offering custom map products based on our watercolor maps. We're starting off with a couple different custom products: canvas, table lamps, marble clocks, serving trays, and (drum roll please) table coasters, and there's more to come as things develop. But in the meantime, show your love for Stamen & OSM by heading over to MapIsArt for custom map goodies!

    Dec 1, 2014

    Introducing Positron & Dark Matter: New Basemap Styles for CartoDB

    By Beth & Seth

    Ready to make lovely maps using open source data on an open source platform? Two new basemap styles – Positron and Dark Matter – are available from mapping platform CartoDB, waiting for you to make your own beautiful visualizations.

    CartoDB already has a suite of styles to choose from, but some of the ones using OpenStreetMap data were only available at limited zoom levels. With our new styles, visualization possibilities await at all zooms, creating an opportunity for depth beyond what’s been possible before now.

    Throughout both maps we’ve made clear labeling for cities, parks, water bodies, and administrative boundaries. We’ve also worked out the relationships between line thickness and outlines for roads, railroads, rivers, and lakes across all zoom levels. Relative brightness of various features have been tweaked to create an appropriate hierarchy of importance at all zoom levels.

    And finally, we’ve given some extra special love to the CartoDB offices in Madrid and Brooklyn, and the Stamen office in San Francisco (only visible when you zoom all the way in).

    It’s been great working with CartoDB to make it easier for everyone to make data visualizations. Now we’re excited to see what you make with what we made together.

    Want to use these basemaps with Leaflet.js? Here's how:

    var layer = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',{
      attribution: '© OpenStreetMap contributors, © CartoDB'
    });
    
    var map = L.map('map', {
        scrollWheelZoom: false,
        center: [40.7127837, -74.0059413],
        zoom: 6
    });
    
    map.addLayer(layer);

    Let your data story sing!