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

时间:2012-11-09 06:45:42

标签: d3.js

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

有没有好的工具可供使用?

阻止示例:http://bl.ocks.org/4043986

long,lat for japan(wikipedia):

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

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

2 个答案:

答案 0 :(得分: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);
};

现在,d3.js使用projection.rotateprojection.center的组合将投影的中心置于长98°W,纬度38°N(约Hutchinson, Kansas)。

Geo Projections APId3.geo.conicEqualArea() .parallels([29.5, 45.5])设置Albers投影的两个标准纬线纬度29.5°N和 分别为45.5°N。但是两个标准的相似之处是什么?

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

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

enter image description here

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

答案 1 :(得分:6)

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

  1. 克隆来自the github repository的d3.js。
  2. 编辑/d3/examples/albers.html line 53以指向您的GEOJSON文件:
  3. 将原点long / lat滑块放在您所在国家/地区的中心(对我而言,它是134°/ 25°)
  4. 将paralells更改为靠近您所在国家/地区的边缘。
  5. 调整规模&偏移到一个不错的尺寸&位置。
  6. 其他预测也有类似的工具。

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

    示例不再是github存储库的一部分。