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         // https://raw.githubusercontent.com/janasayantan         // /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         // https://raw.githubusercontent.com/janasayantan         // /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: