block by fil 57497fefe8bb2bd1170a93c88ea141d9

winding problem

Full Screen

For @ozanyusufoglu

Some polygons (shown in yellow) have an inverse winding order.

Built with blockbuilder.org

forked from ozanyusufoglu‘s block: winding problem

index.html

<!DOCTYPE html>
<head>
  <meta charset="utf-8">
  <script src="https://d3js.org/d3.v4.min.js"></script>
  <style>
    body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
  </style>
</head>

<body>
  <script>
    
    
var width = 960,
  height = 500;


var svg = d3.select('body')
  .append('svg')
  .attr('width', width)
  .attr('height', height);
    
d3.json('istanbul.geojson', function(error,json) {


var projection = d3.geoMercator();

var path = d3.geoPath().projection(projection)
  json.features.forEach(item => {
    if (d3.geoArea(item)> 2 * Math.PI) {
      item.geometry.coordinates = item.geometry.coordinates.map(f => f.map(e => e.reverse()));
      item.properties.error = true;
    }
  })

projection.fitExtent([[0,0],[width,height]], json);


	
  
  svg.selectAll("path").data(json.features)
                        .enter()
                        .append("path")
                        .style("fill", d => d.properties.error ? "yellow" : "lightblue")
                        .style("stroke","black")
                        .style('opacity', '0.1')
                        .style("stroke-width","2")
                        .attr("d", path)

  })


  </script>
</body>