Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Trac Trac
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Service Desk
    • Milestones
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar
  • Legacy
  • TracTrac
  • Issues
  • #24563

Closed (moved)
(moved)
Open
Created Dec 08, 2017 by teor@teor

Relay Search map has severe area distortions

I'm concerned that the Relay Search map represents countries and continents poorly.

It uses the d3.geo.mercator() projection, which is not recommended for comparison maps like ours:

The spherical Mercator projection...introduces severe area distortion at world scale and thus is not recommended for choropleths.

References:

  • https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Projections.md#mercator
  • https://en.wikipedia.org/wiki/Choropleth_map

One obvious issue is that India and the EU are about the same size, but the EU looks larger. Similarly, Greenland is smaller than India, but looks much larger. Here's a list of countries in order of area: https://en.wikipedia.org/wiki/List_of_countries_by_area

I suggest we use an equal-area projection instead. It's much better suited to the kinds of comparisons that we're doing.

None of the built-in projections are rectangular equal-area: https://github.com/d3/d3-geo#projections

Extra projections are available here: https://github.com/d3/d3-geo-projection

This is the only rectangular equal-area projection without significant distortion: https://en.wikipedia.org/wiki/Cylindrical_equal-area_projection https://github.com/d3/d3-geo-projection#geoCylindricalEqualArea

Here's the line in js/views/aggregate/map.js we'll need to change, as well as adding the d3-geo-projection import:

var projection = d3.geo.mercator()
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking