Javascript d3中的Lambert圆锥共形投影

Javascript d3中的Lambert圆锥共形投影,javascript,d3.js,projection,map-projections,Javascript,D3.js,Projection,Map Projections,我试图在我的祖国奥地利的SVG地图上投射一组点([long,lat]元组): Wikimedia上SVG文件的描述给出了投影名称和地图的边界: 兰伯特共形圆锥曲线,WGS84基准面 地图的地理范围: 西:17.2°W 东:9.3°W 北纬:49.2°N 南:北纬46.0度 虽然我很天真,但我认为这些信息足以用D3创建正确的投影 这是我第一次尝试的: let gcc = d3.geoConicConformal() .fitSize([width, height], bb

我试图在我的祖国奥地利的SVG地图上投射一组点([long,lat]元组):

Wikimedia上SVG文件的描述给出了投影名称和地图的边界:

兰伯特共形圆锥曲线,WGS84基准面
地图的地理范围:

西:17.2°W
东:9.3°W
北纬:49.2°N
南:北纬46.0度

虽然我很天真,但我认为这些信息足以用D3创建正确的投影

这是我第一次尝试的:

    let gcc = d3.geoConicConformal()
        .fitSize([width, height], bbox)
其中,
bbox
是表示上述地图边界的GeoJSON多边形

不幸的是,结果不是正确的投影:

现在,通过阅读D3文档,我可以猜测我必须为投影指定更多参数,例如两个标准平行线。不幸的是,我不知道它们是什么,在地图的西部和东部边界尝试各种值都不起作用。我想它们可以从我对地图的了解中衍生出来,或者可能不是

其次,让我困惑的是,投影不仅旋转错误,而且缩放错误——我认为使用
.fitSize
可以解决这个问题


有谁能给我一些关于正确设置Lambert圆锥共形投影的建议吗?

Fitsize将正确平移和缩放地图,但是,使用圆锥投影时,您需要旋转,并且如您所述,设置平行线

平行线:

有文献记载的奥地利兰伯特圆锥保角投影图,其规格可查或查。在本例中,可能正确的平行线是[46,49],尽管您使用的地图可能是自定义投影

旋转

现在需要沿x轴按经度旋转地图。圆锥贴图通常沿x轴旋转,并以y轴为中心(有关为什么(以及平行线如何更改投影)的图形解释,请参见我的答案)

旋转移动世界,使您感兴趣的区域正确对齐,从而使地图的中央子午线在地图中垂直。根据上述投影规范,中央子午线应为13度20分钟(13.333度),尽管两个参考之间存在小的分歧。沿x轴旋转设置为该值的负值

使用这些参数:

d3.geoConicConformal()
    .parallels([46,49])
    .rotate([-13.333,0])
    .fitSize([width,height],bbox)
我的下采样goto world topojson非常适合我:

svg图像使用的参数可能与发布的参数略有不同(舍入、键入),或者平行线是自定义选择的;然而,这应该是一个相当紧密的配合