Indiemapper made…
Posted by ben on January 29th, 2010. 2 Comments…a map of Hurricane Gustav showing its path and wind speed, 25 August – 2 September 2008. The reference map data, including bathymetry, is from Natural Earth.
…a map of Hurricane Gustav showing its path and wind speed, 25 August – 2 September 2008. The reference map data, including bathymetry, is from Natural Earth.
We’re featuring template-based map typography in indiemapper, an idea borrowed from TypeBrewer that should make the process of choosing fonts and font styles for indiemapper-made maps quick and easy. We never like having to manually dig through long lists of fonts to find those that work best on maps, so decided to extend some additional typographic selection guidance that will hopefully benefit mapmakers.
Each typographic template in indiemapper consists of a set of “Web-safe” or freely-available fonts and font styles (e.g., colors, sizes, and letter spacing values), chosen by us in light of good cartographic design conventions and principles. Of course, all of your own fonts will be available to use as well, for when you feel the need to go out on your own! Using templates in indiemapper will also prevent those annoying missing font problems — wherever you make maps with indiemapper, template fonts will be there.
Special thanks to the typographers and type foundries who produced all of the great-looking, professional-quality, free fonts used in indiemapper:
Jos Buivenga’s exljbris Font Foundry:
1) Fontin
2) Fontin Sans
3) Delicious
http://www.josbuivenga.demon.nl/index.html
Steve Matteson at Ascender Corporation:
1) Liberation Serif
2) Liberation Sans
http://www.ascendercorp.com/fonts/liberation/
https://www.redhat.com/promo/fonts/
3) Droid Serif
4) Droid Sans
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=data/fonts;hb=HEAD
Jim Lyles at Bitstream, Inc.
1) Bitstream Vera Serif
2) Bitstream Vera Sans
Victor Gaultney at SIL International
1) Gentium
http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=Gentium

…a map of 30-day precipitation totals in the United States and Mexico with city, country, and ocean labels.

…a bivariate proportional symbol map showing 2008 election results by county.
After a few months of indieprojector, we thought it’d be interesting to see how it’s being used. Two questions sounded particularly fun to visualize: what geographic areas being mapped with indieprojector, and what projections are the most/least popular? So I grabbed some data and generated some maps, which Mark turned into snazzy visualizations.
click to see full-size (lots of detail)
You’ll want to click that image to see it at its full size and glory. The map shows the bounding boxes of all geographic data uploaded to indieprojector (it excludes layers loaded from the shapefile library we provide). The US is pretty clearly the most popular region for data in indieprojector, but the map shows some interesting variety.
We also made a map for each individual projection available in indieprojector in order to see how the patterns differ. Some projections are appropriate for continent-sized areas, some are appropriate for global data, etc. For the most part, it looks like the projections are being used the way you’d expect: Robinson and cylidrical equal area are popular with global data sets, Albers equal area conic is very popular in the US, and so on. It’s a little hard to discern any significant patterns in the maps, but here they are for each projection. Click the image for a larger size.
It’s worth noting, by the way, that indieprojector was used to export these maps about itself!
The most popular projection is Winkel Tripel, which is not surprising as it is perhaps the best projection for global data. A somewhat surprising second place is orthographic, the “Earth from space” view. The least popular is the sinusoidal projection, which is useful in that it is equal-area, but is not especially attractive. Winkel Tripel has been used about six times more often than sinusoidal.
Stay tuned for some indiemapper upates and a couple of new projections to enter the mix soon!
Our recent release of indieprojector is a fitting first step toward indiemapper, as it was the experiments with web-based map projection that sparked the idea for indiemapper a year and a half ago. Control of map projections, we found, is sorely lacking in the explosively popular and powerful world of web cartography. So we began working in Flash on a tool that would read shapefiles and re-project them for display and eventual export, and at least that goal has now been realized with indieprojector. Here we thought we’d pass on some of what we’ve learned along the way about working with map projections in ActionScript 3.
Projecting geo-data: the basics
To simply draw geo-data to a certain map projection is a pretty easy process. The data are loaded from SHP or KML files and stored as a series of latitude/longitude coordinates. (KML parsing takes advantage of AS3’s native XML capabilities, and our SHP loading and parsing are based on Edwin van Rijkom’s libraries.) Then, re-projecting the data is just a matter of plugging the lat/long values (in radians) into a projection’s transformation equation, incorporating applicable centering coordinates and standard parallels. Generally the math is straightforward. Here are the equations for a Mercator projection, for example (from Wikipedia):

We found lots of help in Wikipedia, Wolfram MathWorld, and the PROJ.4 library, or more specifically this Java spinoff, which is easy to translate to AS3.
A Challenge
Warning: read no further if you don’t want to be immersed in the filthy details of how indieprojector works. Otherwise, what follows may serve as a useful lesson; it certainly did for us.
The most notable challenge of implementing the map projections in indieprojector was correctly re-centering maps on longitudes other than the default 0 degrees. As you can see below in the images below, with North America, re-centering the map can split polygons (and lines) in two.


The data as imported and stored, of course, define single polygons as… well, single polygons (with a very few exceptions). If we were to simply project all the points in a polygon and try to draw the shape, where drawing should stop at one edge of the map and pick up again at the other, it would instead draw a segment clear across the map from one end to the other, like this:
Draw from one point to the next (ignoring lots of actual points on this polygon for demonstration purposes)…

But the next point is on the other side of the map! It draws all the way over to that point, and then continues from there.

This means that every time the projection settings are altered, we need to split polygons and lines on the fly as needed. Polygon and line data are already stored as sets of rings, which are the individual pieces of a single feature. (Consider, for instance, the state of Hawaii as a polygon feature. It is just one “polygon” but each of its islands is a separate ring.) So, when needed, we further divide polygons into more rings. For anyone interested, here is a simplified version of the steps we’re taking:
Look at the longitudes of the first two points. The first (right) is farther east (i.e. higher longitude) than the second, and is also closer to the right edge of the map than the second. This indicates that the two points are not divided by the map edge, so they belong in the same ring.

Now look at the next pair of points. The first point (second point above, left image below) has a higher longitude, but is farther from the right edge of the map than the second point (inner point on the right image). This indicates that the two points are divided by the map edge. So, interpolate a point in between them on the map edge, and then add it to the original ring as well as to a new ring that will contain points on the other side of the map. Finally, add that second point to the new ring.

Look at the next pair of points. Again the first point has a higher longitude and is closer to the right edge of the map, so the points belong in the same ring.

Between map edge crossings on a ring, we add a series of additional points on the edge so that the ring can approximately follow the curved edge of some projections.

Our algorithms will continue to evolve, eventually into proper clipping routines, but we think we’ve made a good start toward bringing projections into web-based mapping for the common cartographer. It’s a virtual globe and Mercator world out there, and those are fine for a lot of purposes, but our training and experience has taught us that a Greenland-on-steroids projection and an obscuring, variable-perspective 3D globe are probably not the best for thematic maps. Our math and drawing hurdles here don’t address the much larger challenges of bringing map projections fully into mainstream web cartography, but we hope that indiemapper (and indieprojector) will serve as a good introduction.
Today, we are pleased to announce the release of our free geographic projection and data conversion tool: indieprojector.
For indieprojector, we took three core indiemapper features:
… and combined them into a single stand-alone web application. Indieprojector lets you load multiple SHP or KML files, reproject them to one of 11 geographic projections and export them to SVG for use in a vector graphics editing program. We’ve also included lots of information on each projection plus filtering tools to help you select the best projection for your individual project.
We’re very excited to be offering a preview of indiemapper before it’s release at the end of the summer and we hope indieprojector is useful for your day-to-day mapping work. Check out the indieprojector screencast and please take some time to give us some feedback and let us know what you think. We look forward to hearing from you.
Enjoy indieprojector!
UPDATE: A new version of indieprojector has been released which includes support for NetworkLink tags in KML, layer re-ordering and various minor UI and bug fixes.

I’m really glad I got a chance to bring this to AAG’s this year. I got to talk with and hear from lots of professional cartographers who are going to be our end users. It’s great to hear that people are just as dissatisfied with their current tools as we are and see the benefits to moving towards a web-based system for producing maps. We’ve still got a long way to go and I hope we keep hearing from you. Thanks to everyone who attended the talk and I hope to see you all again next time for a full Indiemapper demo.
Abstract:
The proliferation of cloud-computing and web-based services has resulted in a massive increase in the amount of data available to be mapped and the number of people making and sharing maps. However, two issues remain: how to find useable data and how to make the best possible maps quickly, even if users have no formal training. While data are plentiful, they are often hard to import. Worse, while free mapping tools exist, they offer no guidance on how (and why) to map those data well and provide only “push-pin” cartography.
Axis Maps and FortiousOne have partnered to create Maker, an online map-making service that allows the public to easily create thematic and reference maps, drawing from the vast, user-created GeoCommons data repository, and to share and publish those maps anywhere on the web. Our motto was ‘great looking maps, fast.’ Building on the Map Brewer concept of guided mapping systems, Maker brings powerful mapping tools to a wide audience, sets higher design standards for web-based maps, and improves cartographic education and literacy.
IndieMapper builds on the strengths and accessibility of Maker but adds the flexibility of a commercial GIS package. Where Maker hides key cartographic decisions (i.e. projections) to create a “no-fail” approach to mapmaking, IndieMapper allows for control over the entire map production process. Previously cartographers have gone to great lengths to integrate their workflow into GIS software. IndieMapper streamlines this process, allowing users to go from data to data-rich map faster and easier than ever before.
Welcome to indiemapper.com! We’re very excited that you’ve taken the time to learn about our project. Put your email address in the subscription box below so we can tell you about indiemapper developments and most importantly… the launch!
A little about indiemapper:
I could go on and on, and I will, right here on this blog. Check back here for a discussion on functionality, coding, design, cartography, all things indiemapper. We’ll be releasing some free tools along the way that we’ll want to tell you about too. Most importantly, we want your feedback so let us have it!
Glad you’re here with us,
The indiemapper team