Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am trying to build a map of Canada showing FSA boundaries using d3js. I got shape data from Statistics Canada [http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/bound-limit-2011-eng.cfm].

To convert the SHP file to topojson, I am following the process from Mike Bostock's Tutorial 'Lets Build a Map' [http://bost.ocks.org/mike/map/].

First convert the map to GeoJSON using ogr2ogr, then using topojson in Node.js, convert the GeoJSON file to a TopoJSON file.

I am executing the commands:

> ogr2ogr -f "GeoJSON" -s_srs EPSG:21781 -t_srs EPSG:4326 output.geojson input.shp

Followed by the command:

 > topojson --id-property CFSAUID -p name=PRNAME -p name -o output.topojson output.geojson

The resulting map that is generated renders some provinces properly, however, the following provinces show up as jumbled lines.

  • Ontario
  • Newfoundland
  • Quebec
  • Manitoba
  • Saskatchewan
  • Alberta
  • British Columbia

Here is a basic version of my d3 call.

var g = svg.append("g").attr("id", "fsa");
d3.json("can/output.json", function (error, json) {
    var counter = 0;
    var subunits = topojson.object(json, data);
    g.selectAll("path")
    .data(subunits.output)
    .enter()
    .append("path")
    .attr("d", path)        
});

This is what the map looks like: https://www.dropbox.com/s/k776hg2doynurxi/canada.png

share|improve this question
    
If -s_crs means source crs, I think the 21781 code is wrong. That's a projected crs for Switzerland. The census data I downloaded has a prj file that lists NAD 1983, EPSG:4269, a geographic CRS. –  mkennedy Apr 23 '13 at 16:01
    
As @mbostock says in his answer, the problem is with the projection. By specifying the mercator projection canada renders properly. –  Isioma Nnodum Apr 24 '13 at 16:33

1 Answer 1

The default projection in D3 is the U.S.-centric d3.geo.albersUsa projection. This is a composite projection design to display the 48 contiguous United States, Hawaii, Alaska and Puerto Rico. If you want to make a map of Canada, you’ll have to specify the appropriate projection rather than relying on the default.

share|improve this answer
    
Thanks so much, it seems to be working now. Apologies for the duplicate post. I did not know it is against the rules, now I do. :) –  Isioma Nnodum Apr 24 '13 at 16:30

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.