D3 + Leaflet与Albers USA Projection

时间:2013-10-08 21:45:46

标签: javascript d3.js leaflet

我想将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,因为在使用投影流时不会显示这些点”。我不知道怎么从这里开始。我应该使用不同的数据集吗?
  3. 如果有人对如何进行有任何建议,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

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

1。)您的源数据不需要在Albers-US(严格来说不是投影 - 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制作一张滑动的地图,我该阻止您?但是这个过程需要在GIS程序中移动特征几何体,并且b。)欺骗Tilemill使用错误的投影,因为它创建了在Leaflet中使用的切片。不是推荐的行动方案。

如果我没有提到你可以随时使用d3.behavior.zoom()

使你的D3图形缩放,我也会失职