D3.js d3.geo中的仿射变换(欧拉角旋转)

D3.js d3.geo中的仿射变换(欧拉角旋转),d3.js,rotation,geo,d3.geo,D3.js,Rotation,Geo,D3.geo,我想在d3.geo中执行一个国家多边形关于原点的逆时针旋转 例如,让我们围绕λ=0.5,φ=49.9的点旋转意大利-7.2度。首先,我们需要将这些欧拉角转换成仿射变换参数。在我们的情况下,参数将为: affine(0.5, 49.9, -7.2) scaleX rotY transX rotX scaleY transY 0.9921147 0.1253332 -6.250186 -0.1253332 0.9921147 0.456143 当我使用带

我想在d3.geo中执行一个国家多边形关于原点的逆时针旋转

例如,让我们围绕λ=0.5,φ=49.9的点旋转意大利-7.2度。首先,我们需要将这些欧拉角转换成仿射变换参数。在我们的情况下,参数将为:

affine(0.5, 49.9, -7.2)
   scaleX      rotY    transX       rotX    scaleY   transY
0.9921147 0.1253332 -6.250186 -0.1253332 0.9921147 0.456143
当我使用带有这些参数的QGIS仿射变换插件时,得到的贴图是

当我在d3.js中将相同的参数应用于
projection.stream
时,结果非常不同(而且不正确):

我在代码中正确地处理了投影流,因为(1,0,0,0,1,0)仿射变换会产生预期的无变换结果


提前感谢您的帮助。

References:,它看起来像是围绕代码中整个SVG元素的原点(左上角)旋转的。你可能需要的是把意大利翻译成原籍,应用你的转换,然后翻译back@RolandHeath谢谢你的建议。恐怕情况并非如此。如果我对意大利做了一个简单的转换,没有第二个流:
.attr(“d”,d3.geo.path().projection(d3.geo.transform({point:function(x,y){this.stream.point(0.992*x+0.125*y-6.25,-0.125*x+0.992*y+0.456)})