我试图在我的祖国奥地利的SVG地图上投射一组点(长,长,长):
在Wikimedia上对SVG文件的描述给出了一个投影名称和映射的界限:
兰伯特共形圆锥,WGS84基准 地图的地理界限: 西经17.2° 东: 9.3°W 北纬49.2° 南方:北纬46.0°
虽然我很天真,但我认为这些信息足以用D3创建正确的投影。
这是我第一次尝试:
let gcc = d3.geoConicConformal()
.fitSize([width, height], bbox)其中bbox是一个GeoJSON多边形,表示上面给出的映射的边界。
不幸的是,结果不是正确的预测:

现在,通过阅读D3文档,我可以猜到我必须为投影指定更多的参数,例如两个标准的并行。不幸的是,我不知道它们是什么,在地图的西方和东部边界上尝试不同的价值观也是行不通的。我想它们是从我对地图的了解中得到的,也许不是吗?
其次,让我感到困惑的是,投影不仅旋转错误,而且缩放也不正确--我认为使用.fitSize可以解决这个问题。
有人能给我正确设置兰伯特锥共形投影的指点吗?
发布于 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轴的旋转被设置为这个值的负值。
使用这些参数:
d3.geoConicConformal()
.parallels([46,49])
.rotate([-13.333,0])
.fitSize([width,height],bbox)我和我那非常低调的goto world topojson相处得很好:

svg映像可能使用的参数与已张贴的参数(四舍五入、排字)略有不同,或者是自定义选择的并行;但是,这应该是非常合适的。
https://stackoverflow.com/questions/41282911
复制相似问题