【问题标题】:d3 geoPath projection is messing up the mapd3 geoPath投影弄乱了地图
【发布时间】:2025-12-05 12:55:02
【问题描述】:

我想将地图的投影更改为对用户更平坦
我尝试将投影设置为 d3.geoIdentity() 它有效,但它不够“平坦” 当我尝试更改为 d3.geoAlbers() 时,它会给出错误,并且通过使用其他方法,它要么给我空路径值的错误,要么它正在工作但带有圆形地图 这是重要的代码块,因为包括 json 文件在内的其余代码都很好,我想要设置投影以使地图显示为美国地图

[this is what i would like the projection to be

 var geojson = topojson.feature(dz, dz.objects.DZA_adm1)
 var projection = d3.geoIdentity()
    .reflectY(true)
    .fitSize([width, height * 2/3],geojson)
const path = d3.geoPath().projection(projection)

[this is what i'm getting]2

【问题讨论】:

  • 有没有你想模仿的阿尔及利亚的对比图,我不清楚你所说的“足够平坦”是什么意思。很难与美国阿尔伯斯相比较,这也给美国带来了一点曲线(如在北部边界上所见,沿平行线基本上是“直的”),因为它是一个锥形投影,这也可能给你你的“圆形”地图也是如此。
  • 我希望我有一个很好的比较图像,问题是阿尔及利亚地图上的北部城市太小太远了,就像地图的北部很深在 Z 维度中

标签: d3.js geomap


【解决方案1】:

投影终于成功了!

所以topojson文件(地图的json文件)实际上是错误的 感谢我在网上找到的 mapstarter 工具,我可以尝试他们提供的一些投影选项,我使用 mapshaper 重塑了 json 文件,现在效果很好

【讨论】: