Map with German electoral districts: Difference between revisions
From JSXGraph Wiki
| A WASSERMANN (talk | contribs) No edit summary | A WASSERMANN (talk | contribs) No edit summary | ||
| (14 intermediate revisions by 2 users not shown) | |||
| Line 15: | Line 15: | ||
|      i, col = 0; |      i, col = 0; | ||
| brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[minX-1000,maxY+1000,maxX+1000,minY-1000], | brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[minX-1000,maxY+1000,maxX+1000,minY-1000],keepaspectratio:true}); | ||
| for(i=0;i<len;i++) { | for(i=0;i<len;i++) { | ||
| Line 28: | Line 27: | ||
| function createCurve(area)  { | function createCurve(area)  { | ||
|      var  |      var compos = area[0].split(';'),  // Connected component | ||
|          x = [], y = [], |          x = [], y = [], | ||
|          c = [],  |          c = [], num, i, a, graph, k, a; | ||
|      len = xy.length; |      num = compos.length; | ||
|     for (k=0;k<num;k++) { | |||
|         x = []; y = []; c = []; | |||
|         xy = compos[k].split(','); | |||
|         len = xy.length; | |||
|         for(i=0;i<len;i++) { | |||
|             a = xy[i].split(' '); | |||
|             c.push(new JXG.Coords(JXG.COORDS_BY_USER, [1*a[0], 1*a[1]], brd)); | |||
|         } | |||
|         c = JXG.Math.Numerics.RamerDouglasPeuker(c,1.3); | |||
|         len = c.length; | |||
|         for (i=0;i<len;i++) { | |||
|                      {fillColor:JXG.hsv2rgb(col++,0. |             x.push(c[i].usrCoords[1]); | ||
|             y.push(c[i].usrCoords[2]); | |||
|         } | |||
|         graph = brd.create('curve', [x,y],   | |||
|                      {fillColor:JXG.hsv2rgb(0.5*(col++),0.5,0.9), | |||
|                       highlightFillColor:'yellow', |                       highlightFillColor:'yellow', | ||
|                       strokeWidth:1,strokeColor:'black',highlightStrokeColor:'black'}); |                       strokeWidth:1,strokeColor:'black',highlightStrokeColor:'black'}); | ||
|         if (k==0) { | |||
|             JXG.addEvent(graph.rendNode, 'mouseover', function(){graph.nohcol = graph.visProp.fillcolor; graph.setAttribute({fillColor: 'yellow'});}, graph); | |||
|             JXG.addEvent(graph.rendNode, 'mouseout', function(){graph.setAttribute({fillColor: graph.nohcol});}, graph); | |||
|         } | |||
|         graph.hasPoint = function(){return false; }; | |||
|     } | |||
| } | } | ||
| Line 57: | Line 62: | ||
| } | } | ||
| // | brd.suspendUpdate(); | ||
| // | JXG.timedChunk(points, createCurve, null, final); | ||
| </jsxgraph> | |||
|      var  | |||
| For a more elaborate version see [http://vis.uell.net/wahlatlas/ http://vis.uell.net/wahlatlas/]. | |||
| © Bundeswahlleiter, Statistisches Bundesamt, Wiesbaden 2008, Wahlkreiskarte für die Wahl zum 17. Deutschen Bundestag | |||
|          }  | Geoinformationen © Bundesamt für Kartographie und Geodäsie [http://www.bkg.bund.de www.bkg.bund.de] | ||
|          if ( | |||
| ===The underlying JavaScript code=== | |||
| <source lang="xml"> | |||
| <script type="text/javascript" src="/ajax/germany.js"></script> | |||
| <div id="wahlkreis"> </div> | |||
| </source> | |||
| <source lang="javascript"> | |||
| var minX =-289319.4, | |||
|     maxY = 6827620, | |||
|     maxX = 351315.7, | |||
|     minY = 5960587, | |||
|     brd, | |||
|     wahlkreisNode = document.getElementById('wahlkreis').firstChild,     | |||
|     points = [], | |||
|     len = data.length, // from germany.js | |||
|     lastWk = null, | |||
|     i, col = 0; | |||
| brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[minX-1000,maxY+1000,maxX+1000,minY-1000],keepaspectratio:true}); | |||
| for(i=0;i<len;i++) { | |||
|     if(i%6==1) { | |||
|         lastWk = data[i]; | |||
|     } | |||
|     else if(i%6 == 5) { | |||
|         points.push([data[i],lastWk]); | |||
|     } | |||
| } | |||
| function createCurve(area)  { | |||
|      var compos = area[0].split(';'), // Connected component | |||
|         x = [], y = [], | |||
|         c = [], num, i, a, graph, k, a; | |||
|      num = compos.length; | |||
|     for (k=0;k<num;k++) { | |||
|         x = []; y = []; c = []; | |||
|         xy = compos[k].split(','); | |||
|         len = xy.length; | |||
|          for(i=0;i<len;i++) { | |||
|             a = xy[i].split(' '); | |||
|             c.push(new JXG.Coords(JXG.COORDS_BY_USER, [1*a[0], 1*a[1]], brd)); | |||
|         } | |||
|         c = JXG.Math.Numerics.RamerDouglasPeuker(c,1.3); | |||
|          len = c.length; | |||
|         for (i=0;i<len;i++) { | |||
|              x.push(c[i].usrCoords[1]); | |||
|             y.push(c[i].usrCoords[2]); | |||
|          } | |||
|         graph = brd.create('curve', [x,y],  | |||
|                     {fillColor:JXG.hsv2rgb(0.5*(col++),0.5,0.9), | |||
|                      highlightFillColor:'yellow', | |||
|                      strokeWidth:1,strokeColor:'black',highlightStrokeColor:'black'}); | |||
|          if (k==0) { | |||
|              JXG.addEvent(graph.rendNode, 'mouseover', function(){graph.nohcol = graph.visProp.fillcolor; graph.setAttribute({fillColor: 'yellow'});}, graph); | |||
|              JXG.addEvent(graph.rendNode, 'mouseout', function(){graph.setAttribute({fillColor: graph.nohcol});}, graph); | |||
|          } |          } | ||
|      } |         graph.hasPoint = function(){return false; }; | ||
|      } | |||
| } | } | ||
| brd.suspendUpdate(); | brd.suspendUpdate(); | ||
| timedChunk(points, createCurve, null, final); | JXG.timedChunk(points, createCurve, null, final); | ||
| </ | </source> | ||
| [[Category:Examples]] | |||
| [[Category:Charts]] | |||
Latest revision as of 13:33, 3 March 2021
For a more elaborate version see http://vis.uell.net/wahlatlas/.
© Bundeswahlleiter, Statistisches Bundesamt, Wiesbaden 2008, Wahlkreiskarte für die Wahl zum 17. Deutschen Bundestag
Geoinformationen © Bundesamt für Kartographie und Geodäsie www.bkg.bund.de
The underlying JavaScript code
<script type="text/javascript" src="/ajax/germany.js"></script>
<div id="wahlkreis"> </div>
var minX =-289319.4,
    maxY = 6827620,
    maxX = 351315.7,
    minY = 5960587,
    brd,
    wahlkreisNode = document.getElementById('wahlkreis').firstChild,    
    points = [],
    len = data.length, // from germany.js
    lastWk = null,
    i, col = 0;
    
brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[minX-1000,maxY+1000,maxX+1000,minY-1000],keepaspectratio:true});
for(i=0;i<len;i++) {
    if(i%6==1) {
        lastWk = data[i];
    }
    else if(i%6 == 5) {
        points.push([data[i],lastWk]);
    }
}
function createCurve(area)  {
    var compos = area[0].split(';'), // Connected component
        x = [], y = [],
        c = [], num, i, a, graph, k, a;
        
    num = compos.length;
    for (k=0;k<num;k++) {
        x = []; y = []; c = [];
        xy = compos[k].split(',');
        len = xy.length;
        for(i=0;i<len;i++) {
            a = xy[i].split(' ');
            c.push(new JXG.Coords(JXG.COORDS_BY_USER, [1*a[0], 1*a[1]], brd));
        }
        c = JXG.Math.Numerics.RamerDouglasPeuker(c,1.3);
        len = c.length;
        for (i=0;i<len;i++) {
            x.push(c[i].usrCoords[1]);
            y.push(c[i].usrCoords[2]);
        }
        graph = brd.create('curve', [x,y], 
                    {fillColor:JXG.hsv2rgb(0.5*(col++),0.5,0.9),
                     highlightFillColor:'yellow',
                     strokeWidth:1,strokeColor:'black',highlightStrokeColor:'black'});
        if (k==0) {
            JXG.addEvent(graph.rendNode, 'mouseover', function(){graph.nohcol = graph.visProp.fillcolor; graph.setAttribute({fillColor: 'yellow'});}, graph);
            JXG.addEvent(graph.rendNode, 'mouseout', function(){graph.setAttribute({fillColor: graph.nohcol});}, graph);
        }
        graph.hasPoint = function(){return false; };
    }
}
brd.suspendUpdate();
JXG.timedChunk(points, createCurve, null, final);
