1

我想将 D3 + Leaflet 与 Albers USA 投影一起使用。

我使用 Mike Bostock 的 D3 + Leaflet 演示作为起点(可在此处找到:http: //bost.ocks.org/mike/leaflet/)。我不确定如何正确使用 Albers USA 投影。在试图弄清楚如何做到这一点时,我遇到了几个问题:

  1. 我不确定如何让 Leaflet 使用 Albers USA 投影。我想我可能可以使用 Proj4Leaflet 插件来做到这一点,但是在创建指定 Albers USA 的 CRS 时,我无法找到需要传递给它的参数。我在 spatialreference.org 上找到了一些潜在的配置字符串,但我不知道为原点或分辨率指定什么,也没有找到任何解释它的东西。
  2. D3 的 Albers USA 投影对于集合中的某些点和边界返回 null。我正在使用 Mike Bostock 使用的 us-states.json 文件。我在这里找到了解释:https ://github.com/mbostock/d3/issues/1287 。“[...]它现在将为复合投影的剪辑范围之外的点返回 null,因为在使用投影流时不会显示这些点”。我不知道如何从这里开始。我应该使用不同的数据集吗?

如果有人对如何进行有任何建议,我将不胜感激!

4

1 回答 1

0

您可能有两个不同的问题,所以这里是对这两个问题的简要回答 -

1.)您的源数据不需要在美国阿尔伯斯(严格来说这不是一个投影——AK 和 HI 不在墨西哥),以便将其带入 Leaflet。这是美国各州的 GeoJSON 数据集,地理坐标:https ://gist.github.com/wboykinm/6979292

2.) 无论源数据的投影是什么,Leaflet 仅在 Google Mercator 投影中呈现(您在开始的示例中看到的投影)。如果您绝对必须拥有 Albers US,那么由于上下文失真,它不应该是一个可平移/可缩放的地图。只需将 Mike 的 D3 示例用于静态地图:http ://bl.ocks.org/mbostock/6320825

如果您决心使用 Albers US 为 Leaflet 制作一张滑溜溜的地图,我该阻止您吗?但是该过程需要 a.) 在 GIS 程序中移动要素几何,以及 b.) 欺骗 Tilemill 使用错误的投影,因为它会创建供您在 Leaflet 中使用的图块。不是推荐的行动方案。

如果我没有提到你总是可以让你的 D3 图形可缩放,那我也会失职d3.behavior.zoom()

于 2013-10-14T18:08:18.423 回答