从 longitude/latitude 翻译而来的像素坐标在 d3.js 中表示什么?
What do pixel coordinates translated from longitude/latitude represent in d3.js?
如果我只做这个:
let projection = d3.geoAzimuthalEqualArea()
console.log(projection([-3.0026, 16.7666])) // passing long/lat
我得到[473.67353385539417, 213.6120079887163]
,这是像素坐标。
但是像素坐标相对于什么?我什至还没有定义 svg 容器的大小、地图的中心等。如果我什至没有指定地图在页面上的大小,它怎么能知道屏幕上的确切像素位置呢?如果是更大的地图,该点会更偏右偏下,这意味着不同的像素值。
另外,如果屏幕像素只能是整数,为什么那些返回值会浮点数并保留许多小数位?
这些像素坐标有最大值吗? (也就是说,这是投影在某种默认大小的地图上吗?)
这在 API 文档中的什么位置?
文档对投影输出的默认尺寸不是很清楚。有些隐藏,您会在 projection.translate()
:
部分找到该值
# projection.translate([translate])
[…]
The default translation offset places ⟨0°,0°⟩ at the center of a 960×500 area.
那些960×500是地理数据投影到的二维平面的尺寸。
投影的输出是对输入值(即地理数据)进行一系列数学运算的结果。浮点数学用于尽可能接近精确值。没有对该结果的实际使用做出任何假设。尽管这些坐标可以通过简单地将值四舍五入来解释为像素坐标,但它们的使用并不限于这种解释。特别是,当涉及到像 SVG 这样的矢量格式时,用户客户端使用浮点坐标值是很正常的,例如浏览器,进行计算以进一步将这些矢量投影到屏幕上,同时考虑可能的平移、旋转、倾斜、视图框等。
如果我只做这个:
let projection = d3.geoAzimuthalEqualArea()
console.log(projection([-3.0026, 16.7666])) // passing long/lat
我得到[473.67353385539417, 213.6120079887163]
,这是像素坐标。
但是像素坐标相对于什么?我什至还没有定义 svg 容器的大小、地图的中心等。如果我什至没有指定地图在页面上的大小,它怎么能知道屏幕上的确切像素位置呢?如果是更大的地图,该点会更偏右偏下,这意味着不同的像素值。
另外,如果屏幕像素只能是整数,为什么那些返回值会浮点数并保留许多小数位?
这些像素坐标有最大值吗? (也就是说,这是投影在某种默认大小的地图上吗?)
这在 API 文档中的什么位置?
文档对投影输出的默认尺寸不是很清楚。有些隐藏,您会在 projection.translate()
:
# projection.translate([translate])
[…]
The default translation offset places ⟨0°,0°⟩ at the center of a 960×500 area.
那些960×500是地理数据投影到的二维平面的尺寸。
投影的输出是对输入值(即地理数据)进行一系列数学运算的结果。浮点数学用于尽可能接近精确值。没有对该结果的实际使用做出任何假设。尽管这些坐标可以通过简单地将值四舍五入来解释为像素坐标,但它们的使用并不限于这种解释。特别是,当涉及到像 SVG 这样的矢量格式时,用户客户端使用浮点坐标值是很正常的,例如浏览器,进行计算以进一步将这些矢量投影到屏幕上,同时考虑可能的平移、旋转、倾斜、视图框等。