在 Vega/d3 中计算 GEO 转换参数
Calculating GEO transformation params in Vega/d3
将此代码复制到 https://en.wikipedia.org/wiki/Special:GraphSandbox
geo transformation 的缩放和平移参数是手动设置的,以匹配图像的宽度和高度(见红色叉号)。我怎样才能使地理变换自动匹配整个图形大小(或者可能是一些信号值),而无需手动调整?
更新:翻译参数应该设置为图像宽度和高度的一半。请参阅下面的答案,中心应该设置为 [0,0]。对于等距柱状投影,图形大小应具有比例 2:1.
{
"version": 2, "width": 800, "height": 400, "padding": 0,
"data": [
{
"name": "data",
"values": [
{"lat":0, "lon":0},
{"lat":90, "lon":-180},
{"lat":-90, "lon":180}
]
}
],
"marks": [
{
"type": "image",
"properties": {
"enter": {
"url": {"value": "wikirawupload:{{filepath:Earthmap1000x500compac.jpg|190}}"},
"width": {"signal": "width"},
"height": {"signal": "height"}
}
}
},
{
"name": "points",
"type": "symbol",
"from": {
"data": "data",
"transform": [{
"type": "geo",
"projection": "equirectangular",
"scale": 127,
"center": [0,0],
"translate": [400,200],
"lon": "lon",
"lat": "lat"
}]
},
"properties": {
"enter": {
"x": {"field": "layout_x"},
"y": {"field": "layout_y"},
"fill": {"value": "#ff0000"},
"size": {"value": 500},
"shape": {"value": "cross"}
}
}
}
]
}
找到答案(上面的例子已更新): "translate"
应该设置在图像的中心。另一方面,"center"
应设置为 [0,0]。 equirectangular
投影的 "scale"
需要设置为 width/(2*PI)