Skip to main content
100%

Cox Projection (North polar aspect)

✓ Published0🌍 Public
PPhilippe Rivière
Last edited May 3, 2018
Created on May 28, 2017

This example demonstrates the Cox conformal projection of the entire Earth within an equilateral triangle, using the North polar aspect. The projection preserves angles and maps the sphere to the triangle’s interior, with the outline drawn as a polygon. The code uses `d3.geoProjection` with a custom `coxRawN` function, which relies on `sm_1` to invert the Dixon elliptic function and `d3.geoGraticule` for the graticule. It renders world map data from the `world-atlas` package onto a Canvas, employing `d3.geoPath` and `topojson.merge` for country boundaries.

AI-generated description

Conformal projection of the Sphere within an equilateral triangle.

This is the North polar aspect, see the original <a href='https://bl.ocks.org/Fil/1aafd8fa22b62243290674384c364dd0'>Cox Projection (South polar aspect)</a>.

Original research by Philippe Rivière for d3-geo-projection, issue #118.

Read a write-up at visionscarto.net.

Reference papers:

  • J. F. Cox, Représentation de la surface entière de la terre dans un triangle équilatéral. Bulletin de la Classe des Sciences, Académie Royale de Belgique, 5, 21: 66-71. Bruxelles, 1935.

  • J. Magis, Calcul du canevas de la représentation conforme de la sphère entière dans un triangle équilatéral. Bulletin Geodésique, 247-256. Paris, 1938.

  • L.P. Lee, Conformal Projections Based On Dixon Elliptic Functions, Cartographica: The International Journal for Geographic Information and Geovisualization > Vol. 13, # 1, June 1976.

  • M. Douglas McIlroy, Wallpaper maps, 2011.


<!-- signature --> [<img src="https://avatars1.githubusercontent.com/u/7001?s=20" />](https://github.com/Fil/) <em>Questions and comments welcome on [gitter.im/d3](https://gitter.im/d3/d3), [twitter](https://twitter.com/@recifs) or [slack](https://d3js.slack.com).</em> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-58621-8', 'auto'); ga('send', 'pageview'); </script>
mit Licensed

Similar vizzes