2017-08-30 2 views
0

Ich möchte Grönland und Antarktis auf meiner D3 Geojson Karte minimieren. Wie mache ich das. Ich habe Skalierungs- und Übersetzungsmethoden ausprobiert, aber sie bewegen die Karte einfach auf der Seite herum, ohne die minimierten y-Koordinaten zu liefern.Wie minimiere ich Mercator Projektion mit D3

image of map

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <script src="d3.v3.js"></script> 
    <script src="topojson.min.js"></script> 
    <style> 
    </style> 
    <script type="text/javascript"> 
     function draw(geo_data) { 
     "use strict"; 
     var margin = 75, 
      width = 1920 - margin, 
      height = 1080 - margin; 

     var svg = d3.select("body") 
      .append("svg") 
      .attr("width", width + margin) 
      .attr("height", height + margin) 
      .append('g') 
      .attr('class', 'map'); 

     var projection = d3.geo.mercator(); 

     var path = d3.geo.path().projection(projection); 


     var map = svg.selectAll('path') 
        .data(geo_data.features) 
        .enter() 
        .append('path') 
        .attr('d', path) 
        .style('fill', 'rgb(9, 157, 217)') 
        .style('stroke', 'black') 
        .style('stroke-width', 0.5); 

     }; 
     </script> 
    </head> 
<body> 
    <script type="text/javascript"> 

    /* 
     Use D3 to load the GeoJSON file 
    */ 
    //d3.json("world-topo-min.json", draw); 
    d3.json("world_countries.json", draw); 

    </script> 
</body> 
</html> 
+0

Werfen Sie einen Blick auf den Artikel [* Interaktive Karte mit d3.js *] (http: Daher können Sie Nutzung des Arrays .filter() Methode, um loszuwerden, diese beiden Funktionen zu verlassen, den Rest unberührt machen // www.tnoda.com/blog/2013-12-07). Im Abschnitt * 3. Dateien konvertieren * Es gibt einen Absatz zum Ausschließen der Antarktis. Dasselbe wird für Grönland funktionieren, obwohl ich denke, dass es am besten sein könnte, dieses Land wie in dem Artikel gezeigt abzuschneiden. – altocumulus

+0

Vielen Dank altocumulus für die Antwort, aber Abschnitt 3 ist auf Antartica im Prozess Umwandlung von Geojson zu Topojson mit dem ogr2ogr Dienstprogramm. Gibt es eine Möglichkeit, es von der Karte, die ich bereits habe, auszuschließen? – heisenberg

+0

Wie sieht Ihre 'world_countries.json' Datei aus? Könnten Sie eine funktionierende Demo erstellen? – altocumulus

Antwort

2

Wenn Sie die Bereiche für Grönland und der Antarktis on the fly entfernen möchten, können Sie einfach Ihre GeoJSON FeatureCollection filtern, das heißt geo_data.features. In diesem Array finden Sie Funktionen sowohl für Grönland ("id": "GRL") als auch für die Antarktis ("id": "ATA").

var map = svg.selectAll('path') 
    .data(geo_data.features.filter(d => d.id !== "GRL" && d.id !== "ATA)) 
Verwandte Themen