【发布时间】:2013-12-15 00:36:40
【问题描述】:
我正在尝试了解 d3 中地理投影的基础知识,以便我可以有效地旋转、缩放和平移坐标。
投影的结果是否在默认 svg 坐标系中,原点在左上角,正 y 值沿网格向下移动?或者是笛卡尔坐标中的结果,正 y 值在网格中向上移动?
我运行了这个测试。 a点位于SF的西北部。 b点位于SF的东南部。我期望点 a 的投影的 x 值小于点 b 的投影(向左)。同样,我希望点 a 的投影的 y 值更小(高于)点 b 的投影。
p = d3.geo.transverseMercator()
a = [-122.490402, 37.786453]
b = [-122.389809, 37.72728]
ap = p(a) // [359.30926341688723, -76.50496169565764]
bp = p(b) // [358.9636503828066, -76.46080714063936]
相反,点 a 的投影 x 值大于 b,因此在 svg 画布上 a 最终会低于 b。
[更新#1]
我一直在研究测试套件。在其中我看到了这些值:
(在 albers-test.js 中)
"San Francisco, CA": [[-122.42000000, 37.78000000], [ 107.44485839, 214.04820561]]
(在 azimuthal-equal-area-test.js 和其他几个文件中)
"San Francisco, CA": [[ -46.16620803, 77.04946507], [ 448.09318291, 57.65281089]]
这告诉我我很困惑。
为什么在测试中 SF 有 2 个不同的经度/纬度值?
我显然已经摆脱了困境。请帮助我重回正轨。
-凯莉
【问题讨论】:
-
需要考虑的一点是,lat long 需要反转为 long lat,希望这会消除混乱。另外,看看这个Question
-
我很欣赏关于纬度/经度需要颠倒的观点——这在过去让我很生气。但是,在我的示例中它们是相反的。
标签: d3.js