[英]Lambert conic conformal projection in d3
我试图在我的祖国奥地利的SVG地图上投射一组点([long,lat]元组):
https://commons.wikimedia.org/wiki/File:Austria-geographic_map-blank.svg
维基媒体上的SVG文件的描述给出了投影名称和地图的边界:
Lambert Conformal Conic,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将正确地平移和缩放地图,但是,您需要旋转圆锥投影,并且如您所述,设置平行线。
相似之处:
有一个记录的奥地利Lambert Conic Conformal地图投影,其规格可以在这里或这里找到。 在这种情况下,可能正确的相似之处是[46,49],尽管您使用的地图可能是自定义投影。
回转
现在,您需要按经度沿x轴旋转地图。 圆锥地图一般都沿x轴旋转,并围绕y轴(见我的答案在这里在这里为为什么(以及如何相似之处更改投影)的图形说明)。
旋转移动世界,使您感兴趣的区域正确对齐,使地图的中央子午线在地图中垂直。 根据上面提到的投影规格,中央子午线应该在13度,20分钟(13.333度),尽管两个参考之间存在很小的不一致。 沿x轴的旋转设置为该值的负值。
使用这些参数:
d3.geoConicConformal()
.parallels([46,49])
.rotate([-13.333,0])
.fitSize([width,height],bbox)
我非常适合我的下采样goto世界topojson:
svg图像可能使用的参数与发布的参数(舍入,拼写错误)略有不同,或者是自定义选择的并行数据; 但是,这应该是相当紧密的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.