d3js - 如何正确设置albers投影?

min*_*omi 9 d3.js

我有一些日本的geojson数据,我设法在墨卡托投影上正确定位,但我有点迷失了如何使用albers投影正确定位,除了反复试验.

有一个好的工具可以使用吗?

块示例:http://bl.ocks.org/4043986

long,lat for japan(维基百科):

  • 纬度24° - 46°N,
  • 经度122° - 146°E.

geojson链接:https://gist.github.com/raw/4043986/f53b85ab0af1585cd0461b4865ca4acd1fb79e9f/japan.json

cha*_*anp 18

截至目前,它是D3.js的第3版.可能值得查看github 上的原始源albers.js,其中包含:

d3.geo.albers = function() {
    return d3.geo.conicEqualArea()
      .parallels([29.5, 45.5])
      .rotate([98, 0])
      .center([0, 38])
      .scale(1000);
};
Run Code Online (Sandbox Code Playgroud)

现在,d3.js使用组合projection.rotateprojection.center将投影中心放置在长98°W,纬度38°N(哈钦森,堪萨斯州周围).

Geo Projections API开始,d3.geo.conicEqualArea() .parallels([29.5, 45.5])将Albers投影的两个标准纬线分别设置为29.5°N和45.5°N.但是两个标准的平行线是什么?

要了解什么是平行线设置,需要知道Albers投影是一种圆锥投影.

圆锥投影将信息从球形地球投射到锥体,该锥体与地球在一个平行线上相切,或者在两个标准平行线上割线.

在此输入图像描述

选择最佳标准平行线设置似乎是一项微妙的任务,其目标是在曲面之间进行映射时最小化投影失真.无论如何,选择要关闭国家顶部/底部边缘的两个值是直观上好的,因为它有助于最小化封闭一个国家的[圆锥/球体]表面之间的距离. 在此输入图像描述


min*_*omi 6

我找到了通过存储库查找的答案 - 工具就在那里!

  1. 从克隆d3.js GitHub的仓库.
  2. 编辑/d3/examples/albers.html第53行指向您的GEOJSON文件:
  3. 将原点长/滑块滑块放在您所在国家/地区的中心(对我来说,它是134°/ 25°)
  4. 将paralells更改为靠近您所在国家/地区的边缘.
  5. 调整比例和偏移到一个不错的大小和位置.

其他预测也有类似的工具.

编辑:存储库已经更改(并且不断变化),所以我创建了一个要点来保留示例:https://gist.github.com/4552802

这些示例不再是github存储库的一部分.