Skip to content

Instantly share code, notes, and snippets.

@clhenrick
Last active June 26, 2016 23:20
Show Gist options
  • Save clhenrick/5ee07ed428c5e90b9f0daac3c74d0e17 to your computer and use it in GitHub Desktop.
Save clhenrick/5ee07ed428c5e90b9f0daac3c74d0e17 to your computer and use it in GitHub Desktop.
WWSD #6: d3.js projections
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
svg {
width:100%;
height: 100%;
}
.graticule {
fill: none;
stroke: #777;
stroke-width: .5px;
stroke-opacity: .5;
}
.fill {
fill: red;
}
</style>
</head>
<body>
<script src="//d3js.org/d3.geo.projection.v0.min.js"></script>
<script>
var width = 960;
var height = 500;
var svg = d3.select("body").append("svg")
var projection = d3.geo.mercator()
.scale(width / 2 / Math.PI)
.scale(100)
.translate([width / 2, height / 2]);
//https://gist.github.com/mbostock/a7ae83252305ed4d54d4
var projectionWerner = d3.geo.bonne()
.center([0, 27])
.scale(120)
.translate([width / 2, height / 2])
.parallel(90)
.precision(0.2);
var path = d3.geo.path()
.projection(projectionWerner);
var graticule = d3.geo.graticule();
svg.append("defs").append("path")
.datum({type: "Sphere"})
.attr("id", "sphere")
.attr("d", path);
svg.append("use")
.attr("class", "fill")
.attr("xlink:href", "#sphere");
svg.append("path")
.datum(graticule)
.attr("class", "graticule")
.attr("d", path);
var url = "http://enjalot.github.io/wwsd/data/world/world-110m.geojson";
var sf = projectionWerner([-122.41, 37.77]);
d3.json(url, function(err, geojson) {
svg.append("path")
.attr("d", path(geojson))
svg.append("circle")
.attr({
cx: sf[0],
cy: sf[1],
r: 5,
fill: "cornflowerblue"
});
})
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment