Burning Man is coming up soon and iBurn is ready for 2016.

Probably the biggest difference this year is the city didn’t move. It’s in exactly the same place it was last year.

The Map

Generating Streets Like a Grid

Last year I realized I had a pretty big problem with geocoding some intersections. Whenever a time street (2:00, 10:00, …) ended it never perfectly matched up with the lettered street (A, B, …) because they didn’t share a node. They were always off by an extremely small amount and they never came back as intersecting. So I realized I needed to create common points between all roads that intersected (this ended up helping the OpenStreetMap import as well).

So what I ended up doing was treating the streets like a grid. So instead of creating a bunch of lines and outputting the GeoJSON. We create a bunch of points in the grid with axis being bearing and distance. After creating points for every road we can go back and collect the points to create the GeoJSON lines. This ensures that instead of 2:00 just having a start and end point it contains all the points where a street intersects or meets it.

Toilets

For this year I wanted to make the toilets more legible. So I needed to make toilets polygons instead of just points. In the past we never generated our own toilet locations but got them from other people who were kind enough to share.

Following the design from last year I decided to make a layout file just for toilets.

{
  "size":[50,200], //The size of the toilet rectangle in feet.
  "location": [
    {
      "bearing":50,        // The bearing from the man in degrees, time, or array of times.
      "offset":24,   	   // The offset from bearing in feet. to move it off of intersection or road.
      "distance":3000,     // The distance from the man in feet, single street, or range of streets.
      "orientation":"city" // The orientation of the rectangle options are city, center or perp.
    },
    {
      "bearing":"3:00",
      "offset":-160,
      "distance":1200,
      "orientation":"city"
    },
    {
      "bearing":["6:30","7:00","8:00","8:30","9:00","9:30"],
      "offset":45,
      "distance":["h","i"],
      "orientation":"center"
    },
    ...
    ]
}

This gets fed into the toilet parser along with the overall city layout. The result is both points and polygons of all the toilets at Burning Man.

Plans for 2017

There are few things I think would make next year even easier.

  • Generate our points file. This includes first-aid, ranger, bus stops, ice locations.
  • Automatic generation of GeoJSON files every time the scripts or layout files change.
  • Expand the features we map like walk-in camping and other infrastructure.
  • Vector tiles!

Let me know if you see any errors with the map.