The JavaScript D3.js library provides interactive data visualizations for web pages using HTML5, Scalable Vector Graphics, and Cascading Style Sheets. The geoGilbert() function in d3.js is used to draw the Gilbert’s two-world perspective projection.
Syntax:
d3.geoGilbert([type])
Parameters: This method accepts one parameter as mentioned above and described below.
- type: The specified projection type, is Orthographic if not specified.
Returns: This method creates a Gilbert’s two-world perspective projection from given JSON data.
Example 1: The following example makes Gilbert projection of world with center at (0, 0) and no rotation.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" /> < meta name = "viewport" content=" width = device -width, initial-scale = 1 .0" /> < script src = </ script > </ head > < body > < div style = "width:700px; height:500px;" > < svg width = "600" height = "450" > </ svg > </ div > < script > var svg = d3.select("svg"), width = +svg.attr("width"), height = +svg.attr("height"); // Gilbert projection // Center(0, 0) with 0 rotation var gfg = d3.geoGilbert() .scale(width / 1.5 / Math.PI) .rotate([0, 0]) .center([0, 0]) .translate([width / 2, height / 2]) // Loading the json data // Used json file stored at // /datageojson/master/world.json d3.json("https://raw.githubusercontent.com/" + "janasayantan/datageojson/master/world.json", function (data) { // Draw the map svg.append("g") .selectAll("path") .data(data.features) .enter().append("path") .attr("fill", "Black") .attr("d", d3.geoPath() .projection(gfg) ) .style("stroke", "#ffff") }) </ script > </ body > </ html > |
Output:
Example 2: The following example makes Gilbert projection of world after changing the center and rotation.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" /> < meta name = "viewport" content=" width = device -width, initial-scale = 1 .0" /> < script src = </ script > </ head > < body > < div style = "width:700px; height:900px;" > < svg width = "400" height = "450" > </ svg > </ div > < script > var svg = d3.select("svg"), width = +svg.attr("width"), height = +svg.attr("height"); // Fahey projection // Center(0, 10) and 45 degree // rotation w.r.t Y axis var gfg = d3.geoGilbert() .scale(width / 1.5 / Math.PI) .rotate([-45, 0]) .center([0, 10]) .translate([width / 2, height / 2]) // Loading the json data // Used json file stored at // /datageojson/master/world.json d3.json("https://raw.githubusercontent.com/" + "janasayantan/datageojson/master/world.json", function (data) { // Draw the map svg.append("g") .selectAll("path") .data(data.features) .enter().append("path") .attr("fill", "DarkOliveGreen") .attr("d", d3.geoPath() .projection(gfg) ) .style("stroke", "#ffff") }) </ script > </ body > </ html > |
Output: