From b06c3779dc6f4c0a99b00eaf9af4bc44992269b5 Mon Sep 17 00:00:00 2001 From: Brandon Tilley Date: Sun, 22 Dec 2013 13:30:43 -0800 Subject: [PATCH] Add earthquake example --- site/public/css/planetaryjs.less | 8 +- site/public/examples/_layout.ejs | 19 ++ site/public/examples/index.ejs | 41 +++ site/public/examples/quake.ejs | 290 ++++++++++++++++++ site/public/examples/quake/_layout.ejs | 58 ++++ site/public/examples/quake/index.ejs | 12 + site/public/examples/quake/quake.js | 266 ++++++++++++++++ site/public/examples/quake/sky.jpg | Bin 0 -> 56556 bytes .../examples/quake/year_quakes_small.json | 1 + 9 files changed, 694 insertions(+), 1 deletion(-) create mode 100644 site/public/examples/_layout.ejs create mode 100644 site/public/examples/index.ejs create mode 100644 site/public/examples/quake.ejs create mode 100644 site/public/examples/quake/_layout.ejs create mode 100644 site/public/examples/quake/index.ejs create mode 100644 site/public/examples/quake/quake.js create mode 100644 site/public/examples/quake/sky.jpg create mode 100644 site/public/examples/quake/year_quakes_small.json diff --git a/site/public/css/planetaryjs.less b/site/public/css/planetaryjs.less index 9f183c7..54ea031 100644 --- a/site/public/css/planetaryjs.less +++ b/site/public/css/planetaryjs.less @@ -64,7 +64,7 @@ a.ui.icon.header { } } -canvas { +canvas#homepage-globe-canvas { width: 350px; height: 350px; } @@ -153,3 +153,9 @@ pre { font-size: 14px; overflow-x: auto; } + +.ui.items.examples { + a.item { + text-decoration: none; + } +} diff --git a/site/public/examples/_layout.ejs b/site/public/examples/_layout.ejs new file mode 100644 index 0000000..f95feb3 --- /dev/null +++ b/site/public/examples/_layout.ejs @@ -0,0 +1,19 @@ + + + + <%- partial("../_header") %> + + + + <%- partial("../_menu") %> + +
+
+
+ <%- yield %> +
+
+
+ + + diff --git a/site/public/examples/index.ejs b/site/public/examples/index.ejs new file mode 100644 index 0000000..e7a1796 --- /dev/null +++ b/site/public/examples/index.ejs @@ -0,0 +1,41 @@ +

Examples

+ +

Sometimes you just need to see some code to get an idea started; here are a few examples of what you can build with Planetary.js.

+ +
+ +
diff --git a/site/public/examples/quake.ejs b/site/public/examples/quake.ejs new file mode 100644 index 0000000..a57a31e --- /dev/null +++ b/site/public/examples/quake.ejs @@ -0,0 +1,290 @@ +

2013 Earthquake Data

+ +

This is a more advanced example of what can be built with Planetary.js. The demo sets up a globe with some custom plugins (defined at the bottom of the JavaScript), and also demonstrates some non-Planetary.js specific techniques, like D3 scales, DOM manipulation, and loading external data.

+ +

View the demo

+ +
+
HTML
+
<canvas id='quakeCanvas'></canvas>
+<h1>Earthquakes: 2013</h1>
+<ul id='magnitues'></ul>
+
+<div id='controls'>
+  <div>
+    <input id='slider' type='range' min='0' max='100' value='0'>
+  </div>
+  <div>
+    <span id='date'></span>&nbsp;
+  </div>
+</div>
+ +
JavaScript
+ +
(function() {
+  var canvas = document.getElementById('quakeCanvas');
+
+  // Create our Planetary.js planet and set some initial values;
+  // we use several custom plugins, defined at the bottom of the file
+  var planet = planetaryjs.planet();
+  planet.loadPlugin(autocenter({extraHeight: -120}));
+  planet.loadPlugin(autoscale({extraHeight: -120}));
+  planet.loadPlugin(planetaryjs.plugins.earth({
+    topojson: { file:   '/world-110m.json' },
+    oceans:   { fill:   '#001320' },
+    land:     { fill:   '#06304e' },
+    borders:  { stroke: '#001320' }
+  }));
+  planet.loadPlugin(planetaryjs.plugins.pings({}));
+  planet.loadPlugin(zoom());
+  planet.loadPlugin(drag({
+    onDragStart: function() {
+      planet.plugins.autorotate.pause();
+    },
+    onDragEnd: function() {
+      planet.plugins.autorotate.resume();
+    }
+  }));
+  planet.loadPlugin(autorotate(5));
+  planet.projection.rotate([100, -10, 0]);
+  planet.draw(canvas);
+
+
+  // Create a color scale for the various earthquake magnitudes; the
+  // mininum magnitude in our data set is 2.5.
+  var colors = d3.scale.pow()
+    .exponent(2)
+    .domain([2, 6,10])
+      .range(['rgb(255,255,204)', 'rgb(253,141,60)','rgb(128,0,38)'])
+    .clamp(true);
+  // Also create a scale for mapping magnitues to ping angle sizes
+  var angles = d3.scale.pow()
+    .exponent(2)
+    .domain([2.5, 10])
+    .range([0.5, 15])
+    .clamp(true);
+
+  // Create a key to show the magnitues and their colors
+  d3.select('#magnitues').selectAll('li')
+    .data(colors.ticks(9))
+  .enter()
+    .append('li')
+    .style('color', colors)
+    .text(function(d) {
+      return "Magnitude " + d;
+    });
+
+
+  // Load our earthquake data and set up the controls.
+  // The data consists of an array of objects in the following format:
+  // {
+  //   mag:  magnitude_of_quake
+  //   lng:  longitude_coordinates
+  //   lat:  latitude_coordinates
+  //   time: timestamp_of_quake
+  // }
+  // The data is ordered, with the earliest data being the first in the file.
+  d3.json('/examples/quake/year_quakes_small.json', function(err, data) {
+    if (err) {
+      alert("Problem loading the quake data.");
+      return;
+    }
+
+    var start = parseInt(data[0].time, 10);
+    var end = parseInt(data[data.length - 1].time, 10);
+    var currentTime = start;
+    var lastTick = new Date().getTime();
+
+    // A scale that maps a percentage of playback to a time
+    // from the data; for example, `50` would map to the halfway
+    // mark between the first and last items in our data array.
+    var percentToDate = d3.scale.linear()
+      .domain([0, 100])
+      .range([start, end]);
+
+    // A scale that maps real time passage to data playback time.
+    // 12 minutes of real time maps to the entirety of the
+    // timespan covered by the data.
+    var realToData = d3.scale.linear()
+      .domain([0, 1000 * 60 * 12])
+      .range([0, end - start]);
+
+    var paused = false;
+
+    // Pause playback and update the time display
+    // while scrubbing using the range input.
+    d3.select('#slider')
+      .on('change', function(d) {
+        currentTime = percentToDate(d3.event.target.value);
+        d3.select('#date').text(new Date(currentTime));
+      })
+      .call(d3.behavior.drag()
+        .on('dragstart', function() {
+          paused = true;
+        })
+        .on('dragend', function() {
+          paused = false;
+        })
+      );
+
+
+    // The main playback loop; for each tick, we'll see how much
+    // time passed in our accelerated playback reel and find all
+    // the earthquakes that happened in that timespan, adding
+    // them to the globe with a color and angle relative to their magnitudes.
+    d3.timer(function() {
+      var now = new Date().getTime();
+
+      if (paused) {
+        lastTick = now;
+        return;
+      }
+
+      var realDelta = now - lastTick;
+      // Avoid switching back to the window only to see thousands of pings;
+      // if it's been more than 500 milliseconds since we've updated playback,
+      // we'll just set the value to 500 milliseconds.
+      if (realDelta > 500) realDelta = 500;
+      var dataDelta = realToData(realDelta);
+
+      var toPing = data.filter(function(d) {
+        return d.time > currentTime && d.time <= currentTime + dataDelta;
+      });
+
+      for (var i = 0; i < toPing.length; i++) {
+        var ping = toPing[i];
+        planet.plugins.pings.add(ping.lat, ping.lng, {
+          // Here we use the `angles` and `colors` scales we built earlier
+          // to convert magnitudes to appropriate angles and colors.
+          angle: angles(ping.mag),
+          color: colors(ping.mag)
+        });
+      }
+
+      currentTime += dataDelta;
+      if (currentTime > end) currentTime = start;
+      d3.select('#date').text(new Date(currentTime));
+      d3.select('#slider').property('value', percentToDate.invert(currentTime));
+      lastTick = now;
+    });
+  });
+
+
+
+  // Plugin to resize the canvas to fill the window and to
+  // automatically center the planet when the window size changes
+  function autocenter(options) {
+    var needsCentering = false;
+    var resize = function() {
+      var width  = window.innerWidth + (options.extraWidth || 0);
+      var height = window.innerHeight + (options.extraHeight || 0);
+      planet.canvas.width = width;
+      planet.canvas.height = height;
+      planet.projection.translate([width / 2, height / 2]);
+    };
+
+    return function(planet) {
+      planet.onInit(function() {
+        needsCentering = true;
+        d3.select(window).on('resize', function() {
+          needsCentering = true;
+        });
+      });
+
+      planet.onDraw(function() {
+        if (needsCentering) { resize(); needsCentering = false; }
+      });
+    };
+  };
+
+  // Plugin to automatically scale the planet's projection based
+  // on the window size when the planet is initialized
+  function autoscale(options) {
+    return function(planet) {
+      planet.onInit(function() {
+        var width  = window.innerWidth + (options.extraWidth || 0);
+        var height = window.innerHeight + (options.extraHeight || 0);
+        planet.projection.scale(Math.min(width, height) / 2);
+      });
+    };
+  };
+
+  // Plugin to automatically rotate the globe around its vertical
+  // axis a configured number of degrees every second.
+  function autorotate(degPerSec) {
+    return function(planet) {
+      var lastTick = null;
+      var paused = false;
+      planet.plugins.autorotate = {
+        pause:  function() { paused = true;  },
+        resume: function() { paused = false; }
+      };
+      planet.onDraw(function() {
+        if (paused || !lastTick) {
+          lastTick = new Date();
+        } else {
+          var now = new Date();
+          var delta = now - lastTick;
+          var rotation = planet.projection.rotate();
+          rotation[0] += degPerSec * delta / 1000;
+          if (rotation[0] >= 180) rotation[0] -= 360;
+          planet.projection.rotate(rotation);
+          lastTick = now;
+        }
+      });
+    };
+  };
+
+  // Plugin to allow zooming with the mouse wheel
+  function zoom(options) {
+    return function(planet) {
+      planet.onInit(function() {
+        var zoom = d3.behavior.zoom()
+          .scale(planet.projection.scale())
+          .scaleExtent([50, 5000])
+          .on('zoom', function() {
+            planet.projection.scale(d3.event.scale);
+          });
+        d3.select(planet.canvas).call(zoom);
+      });
+    };
+  };
+
+  // Plugin to allow rotating the globe by dragging with the mouse
+  function drag(options) {
+    var options = options || {};
+    var noop = function() {};
+    var onDragStart = options.onDragStart || noop;
+    var onDragEnd   = options.onDragEnd   || noop;
+    var onDrag      = options.onDrag      || noop;
+    return function(planet) {
+      planet.onInit(function() {
+        var drag = d3.behavior.drag()
+          .on('dragstart', onDragStart)
+          .on('dragend', onDragEnd)
+          .on('drag', function() {
+            onDrag();
+            var dx = d3.event.dx;
+            var dy = d3.event.dy;
+            var rotation = planet.projection.rotate();
+            var radius = planet.projection.scale();
+            // Dragging from the center of the planet to the edge
+            // of the planet should rotate it 90 degrees
+            var scale = d3.scale.linear()
+              .domain([-1 * radius, radius])
+              .range([-90, 90]);
+            var degX = scale(dx);
+            var degY = scale(dy);
+            rotation[0] += degX;
+            rotation[1] -= degY;
+            if (rotation[1] > 90)   rotation[1] = 90;
+            if (rotation[1] < -90)  rotation[1] = -90;
+            if (rotation[0] >= 180) rotation[0] -= 360;
+            planet.projection.rotate(rotation);
+          });
+        d3.select(planet.canvas).call(drag);
+      });
+    };
+  };
+})();
+
diff --git a/site/public/examples/quake/_layout.ejs b/site/public/examples/quake/_layout.ejs new file mode 100644 index 0000000..746af2b --- /dev/null +++ b/site/public/examples/quake/_layout.ejs @@ -0,0 +1,58 @@ + + + + <%- partial("../../_header") %> + + + + + <%- partial("../../_menu") %> + + <%- yield %> + + <%- partial("../../_scripts") %> + + + + diff --git a/site/public/examples/quake/index.ejs b/site/public/examples/quake/index.ejs new file mode 100644 index 0000000..5ce2575 --- /dev/null +++ b/site/public/examples/quake/index.ejs @@ -0,0 +1,12 @@ + +

Earthquakes: 2013

+ + +
+
+ +
+
+   +
+
diff --git a/site/public/examples/quake/quake.js b/site/public/examples/quake/quake.js new file mode 100644 index 0000000..de7bec0 --- /dev/null +++ b/site/public/examples/quake/quake.js @@ -0,0 +1,266 @@ +(function() { + var canvas = document.getElementById('quakeCanvas'); + + // Create our Planetary.js planet and set some initial values; + // we use several custom plugins, defined at the bottom of the file + var planet = planetaryjs.planet(); + planet.loadPlugin(autocenter({extraHeight: -120})); + planet.loadPlugin(autoscale({extraHeight: -120})); + planet.loadPlugin(planetaryjs.plugins.earth({ + topojson: { file: '/world-110m.json' }, + oceans: { fill: '#001320' }, + land: { fill: '#06304e' }, + borders: { stroke: '#001320' } + })); + planet.loadPlugin(planetaryjs.plugins.pings({})); + planet.loadPlugin(zoom()); + planet.loadPlugin(drag({ + onDragStart: function() { + planet.plugins.autorotate.pause(); + }, + onDragEnd: function() { + planet.plugins.autorotate.resume(); + } + })); + planet.loadPlugin(autorotate(5)); + planet.projection.rotate([100, -10, 0]); + planet.draw(canvas); + + + // Create a color scale for the various earthquake magnitudes; the + // mininum magnitude in our data set is 2.5. + var colors = d3.scale.pow() + .exponent(2) + .domain([2, 6,10]) + .range(['rgb(255,255,204)', 'rgb(253,141,60)','rgb(128,0,38)']) + .clamp(true); + // Also create a scale for mapping magnitues to ping angle sizes + var angles = d3.scale.pow() + .exponent(2) + .domain([2.5, 10]) + .range([0.5, 15]) + .clamp(true); + + // Create a key to show the magnitues and their colors + d3.select('#magnitues').selectAll('li') + .data(colors.ticks(9)) + .enter() + .append('li') + .style('color', colors) + .text(function(d) { + return "Magnitude " + d; + }); + + + // Load our earthquake data and set up the controls. + // The data consists of an array of objects in the following format: + // { + // mag: magnitude_of_quake + // lng: longitude_coordinates + // lat: latitude_coordinates + // time: timestamp_of_quake + // } + // The data is ordered, with the earliest data being the first in the file. + d3.json('/examples/quake/year_quakes_small.json', function(err, data) { + if (err) { + alert("Problem loading the quake data."); + return; + } + + var start = parseInt(data[0].time, 10); + var end = parseInt(data[data.length - 1].time, 10); + var currentTime = start; + var lastTick = new Date().getTime(); + + // A scale that maps a percentage of playback to a time + // from the data; for example, `50` would map to the halfway + // mark between the first and last items in our data array. + var percentToDate = d3.scale.linear() + .domain([0, 100]) + .range([start, end]); + + // A scale that maps real time passage to data playback time. + // 12 minutes of real time maps to the entirety of the + // timespan covered by the data. + var realToData = d3.scale.linear() + .domain([0, 1000 * 60 * 12]) + .range([0, end - start]); + + var paused = false; + + // Pause playback and update the time display + // while scrubbing using the range input. + d3.select('#slider') + .on('change', function(d) { + currentTime = percentToDate(d3.event.target.value); + d3.select('#date').text(new Date(currentTime)); + }) + .call(d3.behavior.drag() + .on('dragstart', function() { + paused = true; + }) + .on('dragend', function() { + paused = false; + }) + ); + + + // The main playback loop; for each tick, we'll see how much + // time passed in our accelerated playback reel and find all + // the earthquakes that happened in that timespan, adding + // them to the globe with a color and angle relative to their magnitudes. + d3.timer(function() { + var now = new Date().getTime(); + + if (paused) { + lastTick = now; + return; + } + + var realDelta = now - lastTick; + // Avoid switching back to the window only to see thousands of pings; + // if it's been more than 500 milliseconds since we've updated playback, + // we'll just set the value to 500 milliseconds. + if (realDelta > 500) realDelta = 500; + var dataDelta = realToData(realDelta); + + var toPing = data.filter(function(d) { + return d.time > currentTime && d.time <= currentTime + dataDelta; + }); + + for (var i = 0; i < toPing.length; i++) { + var ping = toPing[i]; + planet.plugins.pings.add(ping.lat, ping.lng, { + // Here we use the `angles` and `colors` scales we built earlier + // to convert magnitudes to appropriate angles and colors. + angle: angles(ping.mag), + color: colors(ping.mag) + }); + } + + currentTime += dataDelta; + if (currentTime > end) currentTime = start; + d3.select('#date').text(new Date(currentTime)); + d3.select('#slider').property('value', percentToDate.invert(currentTime)); + lastTick = now; + }); + }); + + + + // Plugin to resize the canvas to fill the window and to + // automatically center the planet when the window size changes + function autocenter(options) { + var needsCentering = false; + var resize = function() { + var width = window.innerWidth + (options.extraWidth || 0); + var height = window.innerHeight + (options.extraHeight || 0); + planet.canvas.width = width; + planet.canvas.height = height; + planet.projection.translate([width / 2, height / 2]); + }; + + return function(planet) { + planet.onInit(function() { + needsCentering = true; + d3.select(window).on('resize', function() { + needsCentering = true; + }); + }); + + planet.onDraw(function() { + if (needsCentering) { resize(); needsCentering = false; } + }); + }; + }; + + // Plugin to automatically scale the planet's projection based + // on the window size when the planet is initialized + function autoscale(options) { + return function(planet) { + planet.onInit(function() { + var width = window.innerWidth + (options.extraWidth || 0); + var height = window.innerHeight + (options.extraHeight || 0); + planet.projection.scale(Math.min(width, height) / 2); + }); + }; + }; + + // Plugin to automatically rotate the globe around its vertical + // axis a configured number of degrees every second. + function autorotate(degPerSec) { + return function(planet) { + var lastTick = null; + var paused = false; + planet.plugins.autorotate = { + pause: function() { paused = true; }, + resume: function() { paused = false; } + }; + planet.onDraw(function() { + if (paused || !lastTick) { + lastTick = new Date(); + } else { + var now = new Date(); + var delta = now - lastTick; + var rotation = planet.projection.rotate(); + rotation[0] += degPerSec * delta / 1000; + if (rotation[0] >= 180) rotation[0] -= 360; + planet.projection.rotate(rotation); + lastTick = now; + } + }); + }; + }; + + // Plugin to allow zooming with the mouse wheel + function zoom(options) { + return function(planet) { + planet.onInit(function() { + var zoom = d3.behavior.zoom() + .scale(planet.projection.scale()) + .scaleExtent([50, 5000]) + .on('zoom', function() { + planet.projection.scale(d3.event.scale); + }); + d3.select(planet.canvas).call(zoom); + }); + }; + }; + + // Plugin to allow rotating the globe by dragging with the mouse + function drag(options) { + var options = options || {}; + var noop = function() {}; + var onDragStart = options.onDragStart || noop; + var onDragEnd = options.onDragEnd || noop; + var onDrag = options.onDrag || noop; + return function(planet) { + planet.onInit(function() { + var drag = d3.behavior.drag() + .on('dragstart', onDragStart) + .on('dragend', onDragEnd) + .on('drag', function() { + onDrag(); + var dx = d3.event.dx; + var dy = d3.event.dy; + var rotation = planet.projection.rotate(); + var radius = planet.projection.scale(); + // Dragging from the center of the planet to the edge + // of the planet should rotate it 90 degrees + var scale = d3.scale.linear() + .domain([-1 * radius, radius]) + .range([-90, 90]); + var degX = scale(dx); + var degY = scale(dy); + rotation[0] += degX; + rotation[1] -= degY; + if (rotation[1] > 90) rotation[1] = 90; + if (rotation[1] < -90) rotation[1] = -90; + if (rotation[0] >= 180) rotation[0] -= 360; + planet.projection.rotate(rotation); + }); + d3.select(planet.canvas).call(drag); + }); + }; + }; +})(); diff --git a/site/public/examples/quake/sky.jpg b/site/public/examples/quake/sky.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1887f736f8dc3a14733e3ae5cd2cc49b75adf93a GIT binary patch literal 56556 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