3 lines
38 KiB
Java
3 lines
38 KiB
Java
![]() |
// http://geoexamples.com/d3-composite-projections/ v1.3.2 Copyright 2019 Roger Veciana i Rovira
|
||
|
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("d3-geo"),require("d3-path")):"function"==typeof define&&define.amd?define(["exports","d3-geo","d3-path"],t):t((n=n||self).d3=n.d3||{},n.d3,n.d3)}(this,(function(n,t,e){"use strict";var r=1e-6;function o(){}var i=1/0,a=i,l=-i,s=l,c={point:function(n,t){n<i&&(i=n);n>l&&(l=n);t<a&&(a=t);t>s&&(s=t)},lineStart:o,lineEnd:o,polygonStart:o,polygonEnd:o,result:function(){var n=[[i,a],[l,s]];return l=s=-(a=i=1/0),n}};function u(n,e,r){var o=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=n.clipExtent&&n.clipExtent();n.scale(150).translate([0,0]),null!=a&&n.clipExtent(null),t.geoStream(r,n.stream(c));var l=c.result(),s=Math.min(o/(l[1][0]-l[0][0]),i/(l[1][1]-l[0][1])),u=+e[0][0]+(o-s*(l[1][0]+l[0][0]))/2,p=+e[0][1]+(i-s*(l[1][1]+l[0][1]))/2;return null!=a&&n.clipExtent(a),n.scale(150*s).translate([u,p])}function p(n,t,e){return u(n,[[0,0],t],e)}n.geoAlbersUk=function(){var n,o,i,a,l,s=t.geoAlbers().rotate([4.4,.8]).center([0,55.4]).parallels([50,60]),c=t.geoAlbers().rotate([4.4,.8]).center([0,55.4]).parallels([50,60]),f={point:function(n,t){l=[n,t]}};function v(n){var t=n[0],e=n[1];return l=null,i.point(t,e),l||(a.point(t,e),l)}function m(){return n=o=null,v}return v.invert=function(n){var t=s.scale(),e=s.translate(),r=(n[0]-e[0])/t,o=(n[1]-e[1])/t;return(o>=-.089&&o<.06&&r>=.029&&r<.046?c:s).invert(n)},v.stream=function(t){return n&&o===t?n:(e=[s.stream(o=t),c.stream(t)],r=e.length,n={point:function(n,t){for(var o=-1;++o<r;)e[o].point(n,t)},sphere:function(){for(var n=-1;++n<r;)e[n].sphere()},lineStart:function(){for(var n=-1;++n<r;)e[n].lineStart()},lineEnd:function(){for(var n=-1;++n<r;)e[n].lineEnd()},polygonStart:function(){for(var n=-1;++n<r;)e[n].polygonStart()},polygonEnd:function(){for(var n=-1;++n<r;)e[n].polygonEnd()}});var e,r},v.precision=function(n){return arguments.length?(s.precision(n),c.precision(n),m()):s.precision()},v.scale=function(n){return arguments.length?(s.scale(n),c.scale(n),v.translate(s.translate())):s.scale()},v.translate=function(n){if(!arguments.length)return s.translate();var t=s.scale(),e=+n[0],o=+n[1];return i=s.translate(n).clipExtent([[e-.065*t,o-.089*t],[e+.075*t,o+.089*t]]).stream(f),a=c.translate([e+.01*t,o+.025*t]).clipExtent([[e+.029*t+r,o-.089*t+r],[e+.046*t-r,o-.06*t-r]]).stream(f),m()},v.fitExtent=function(n,t){return u(v,n,t)},v.fitSize=function(n,t){return p(v,n,t)},v.drawCompositionBorders=function(n){var t,e,r,o;t=s([-1.113205870242365,59.64920050773357]),e=s([.807899092399606,59.59085836472269]),r=s([.5778611961420386,57.93467822832577]),o=s([-1.25867782078448,57.99029450085142]),n.moveTo(t[0],t[1]),n.lineTo(e[0],e[1]),n.lineTo(r[0],r[1]),n.lineTo(o[0],o[1]),n.closePath()},v.getCompositionBorders=function(){var n=e.path();return this.drawCompositionBorders(n),n.toString()},v.scale(2800)},n.geoAlbersUsa=function(){var n,o,i,a,l,s,c=t.geoAlbers(),f=t.geoConicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),v=t.geoConicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),m={point:function(n,t){s=[n,t]}};function g(n){var t=n[0],e=n[1];return s=null,i.point(t,e),s||(a.point(t,e),s)||(l.point(t,e),s)}function T(){return n=o=null,g}return g.invert=function(n){var t=c.scale(),e=c.translate(),r=(n[0]-e[0])/t,o=(n[1]-e[1])/t;return(o>=.12&&o<.234&&r>=-.425&&r<-.214?f:o>=.166&&o<.234&&r>=-.214&&r<-.115?v:c).invert(n)},g.stream=function(t){return n&&o===t?n:(e=[c.stream(o=t),f.stream(t),v.stream(t)],r=e.length,n={point:function(n,t){for(var o=-1;++o<r;)e[o].point(n,t)},sphere:function(){for(var n=-1;++n<r;)e[n].sphere()},lineStart:function(){for(var n=-1;++n<r;)e[n].lineStart()},lineEnd:function(){for(var n=-1;++n<r;)e[n].lineEnd()},polygonStart:function(){for(var n=-1;++n<r;)e[n].polygonStart()},polygonEnd:function(){for(var n=-1;++n<r;)e[n].polygonEnd()}});var e,r},g.precision=function(n){return arguments.length?(c.precision(n),f.precision(n),v.precision(n),T()):c.precision()},g.scale=function(n){return arguments.length?(c.scale(n),f.scale(.35*n),v.scale(n),g.translate(c.translate())):c.sc
|