首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3中的兰伯特锥共形投影

d3中的兰伯特锥共形投影
EN

Stack Overflow用户
提问于 2016-12-22 12:10:24
回答 1查看 830关注 0票数 3

我试图在我的祖国奥地利的SVG地图上投射一组点(长,长,长):

map-blank.svg

在Wikimedia上对SVG文件的描述给出了一个投影名称和映射的界限:

兰伯特共形圆锥,WGS84基准 地图的地理界限: 西经17.2° 东: 9.3°W 北纬49.2° 南方:北纬46.0°

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

这是我第一次尝试:

代码语言:javascript
复制
    let gcc = d3.geoConicConformal()
        .fitSize([width, height], bbox)

其中bbox是一个GeoJSON多边形,表示上面给出的映射的边界。

不幸的是,结果不是正确的预测:

现在,通过阅读D3文档,我可以猜到我必须为投影指定更多的参数,例如两个标准的并行。不幸的是,我不知道它们是什么,在地图的西方和东部边界上尝试不同的价值观也是行不通的。我想它们是从我对地图的了解中得到的,也许不是吗?

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

有人能给我正确设置兰伯特锥共形投影的指点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-23 20:56:52

Fitsize将正确地平移和缩放地图,然而,使用圆锥曲线投影,您需要旋转,正如您注意到的,设置平行。

并行:

有文件记载的奥地利兰伯特圆锥共形地图投影,其规格可以找到这里这里。在这种情况下,可能是正确的相似点是46,49,尽管您正在使用的映射可能是自定义投影。

旋转

现在你需要把地图按经度沿x轴旋转。圆锥曲线映射通常沿着x轴旋转,并以y轴为中心(请参阅我在这里的回答,https://stackoverflow.com/questions/39958471/d3-js-map-how-to-rotate-it/41133970#41133970获得了为什么(以及平行度如何改变投影)的图形解释)。

旋转移动世界,使您感兴趣的区域正确地对齐,这样地图的中心子午线在您的地图中是垂直的。根据上面提到的投影规范,中心子午线应该在13度,20分钟(13.333度),虽然两者之间有一个小分歧。沿x轴的旋转被设置为这个值的负值。

使用这些参数:

代码语言:javascript
复制
d3.geoConicConformal()
    .parallels([46,49])
    .rotate([-13.333,0])
    .fitSize([width,height],bbox)

我和我那非常低调的goto world topojson相处得很好:

svg映像可能使用的参数与已张贴的参数(四舍五入、排字)略有不同,或者是自定义选择的并行;但是,这应该是非常合适的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41282911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档