Javascript 使用或转换D3中的Lambert坐标

Javascript 使用或转换D3中的Lambert坐标,javascript,d3.js,coordinates,Javascript,D3.js,Coordinates,我正在尝试使用D3JavaScript API制作波多黎各的交互式地图。 但是,波多黎各政府使用的坐标系是旧的Lambert坐标系 系统。D3能处理这样的坐标吗?有没有具体的投影 那能对付他们吗?(我浏览了投影维基,什么也找不到 如果没有,我能做些什么把坐标转换成标准坐标吗 经度/纬度?您的投影很可能是1983年的一部分,定义见的第72页。您也可以通过在上搜索(例如,)来找到它 通过指定()目标投影,可以使用将形状文件重新投影到纬度和经度。例如,要从投影的形状文件生成球坐标系下的GeoJSON,

我正在尝试使用D3JavaScript API制作波多黎各的交互式地图。 但是,波多黎各政府使用的坐标系是旧的Lambert坐标系 系统。D3能处理这样的坐标吗?有没有具体的投影 那能对付他们吗?(我浏览了投影维基,什么也找不到 如果没有,我能做些什么把坐标转换成标准坐标吗
经度/纬度?

您的投影很可能是1983年的一部分,定义见的第72页。您也可以通过在上搜索(例如,)来找到它

通过指定()目标投影,可以使用将形状文件重新投影到纬度和经度。例如,要从投影的形状文件生成球坐标系下的GeoJSON,可以说:

ogr2ogr \
    -f GeoJSON \
    -t_srs EPSG:4326 \
    output.json \
    input.shp
一旦获得了经纬度的几何图形,请参考D3 geo中的任何一个示例,了解如何在您选择的投影中显示shapefile

或者,您可以使用投影坐标将其原样显示。有关更多详细信息,请参见,但其不足之处在于可以使用创建投影坐标中的文件。那你就不必责备了!例如,如果要在960x500空间中显示它:

topojson \
    --width 960 \
    --height 500 \
    --margin 20 \
    -o output.json \
    -- input.shp
(您甚至可以添加一个
-s.25
参数,将几何体简化为屏幕分辨率,这对于节省空间和提高渲染速度非常有用。)

最后,如果最终重新投影到纬度和经度,但仍希望在波多黎各的官方州平面投影中显示波多黎各,则可以使用
d3.geo.conicConformal
定义该投影,即Lambert圆锥共形投影:

var projection = d3.geo.conicConformal()
    .scale(5000) // adjust to your liking
    .rotate([66 + 26/60, 0])
    .center([0, 17 + 50/60])
    .parallels([18 + 2/60, 18 + 26/60])
    .translate([width / 2, height / 2]);

另请参见,以了解如何计算比例并自动转换感兴趣的功能。

您最好的选择可能是使用桌面GIS,例如将坐标转换为D3可以立即处理的坐标。你可以做一个自定义的投影,但这可能会涉及更多的内容,特别是如果你只需要做一次的话。非常感谢你的回答。我遵循了您的备选方案,因为它更有效,并介绍了projected TopoJSON示例。一切都进行得很顺利。非常感谢你。