Javascript 拓扑比例问题
嗨,我在绘制地形图时遇到了一个小问题。 我的topojson文件具有以下属性:Javascript 拓扑比例问题,javascript,dictionary,d3.js,scale,topojson,Javascript,Dictionary,D3.js,Scale,Topojson,嗨,我在绘制地形图时遇到了一个小问题。 我的topojson文件具有以下属性: {"type":"Topology","arcs":[[[6566,5055] ... "transform":{"scale":[0.00014849648332078075,0.00015400850549819297], ... 在我的脚本中: var projection = d3.geo.mercator() .scale(5000) .translate([width/2 , height/2 ])
{"type":"Topology","arcs":[[[6566,5055] ...
"transform":{"scale":[0.00014849648332078075,0.00015400850549819297], ...
在我的脚本中:
var projection = d3.geo.mercator()
.scale(5000)
.translate([width/2 , height/2 ])
当刻度设置为200时,它非常小,几乎看不见;虽然设定的范围非常大,但它是完全空白的。如何解释topojson文件和脚本中的比例?使用topojson上的比例因子是()的一部分: 指定如何转换增量编码整数的转换 坐标到其本机值(如经度和纬度) 当刻度与()相关时: 比例因子与之间的距离成线性关系 投影点;但是,绝对比例因子并不相等 跨越预测 我不认为那个会帮助你。特别是不同的投影类型对于相似的特征将具有不同的比例值。这甚至适用于单个投影,例如墨卡托投影,它需要不同的比例值来放大相同大小的不同特征,这取决于它们所在的位置-由于与任何投影中一样的失真 使用D3墨卡托投影,200的刻度值可以显示几乎整个行星(960像素x 500像素)。所以,你的特征会很小(除非你的特征是整个星球)。使用较大的比例值放大将有助于增加要素相对于视图端口的大小 但是,你要放大到哪里?默认情况下,墨卡托投影将缩放到[0,0],即本初子午线和赤道的交点,远离非洲海岸。你的特征可能不在大西洋的这一部分。您需要缩放到特定区域-这可以通过使用d3投影的
.center()
和.rotate()
方法之一或两者来完成
你需要知道你感兴趣的区域中的一个点,不需要精确。然后,您需要设置投影的焦点。对于墨卡托投影,这可能看起来像:
.center(x,y)
或者(不是两者都有):
其中x是您感兴趣区域中心的经度,y是您感兴趣区域中心的纬度。当然,你仍然需要调整你的预测。从您的比例参数的一个小值开始,然后放大将有助于确保您至少在正确的区域居中。使用topojson上的比例因子是()的一部分: 指定如何转换增量编码整数的转换 坐标到其本机值(如经度和纬度) 当刻度与()相关时: 比例因子与之间的距离成线性关系 投影点;但是,绝对比例因子并不相等 跨越预测 我不认为那个会帮助你。特别是不同的投影类型对于相似的特征将具有不同的比例值。这甚至适用于单个投影,例如墨卡托投影,它需要不同的比例值来放大相同大小的不同特征,这取决于它们所在的位置-由于与任何投影中一样的失真 使用D3墨卡托投影,200的刻度值可以显示几乎整个行星(960像素x 500像素)。所以,你的特征会很小(除非你的特征是整个星球)。使用较大的比例值放大将有助于增加要素相对于视图端口的大小 但是,你要放大到哪里?默认情况下,墨卡托投影将缩放到[0,0],即本初子午线和赤道的交点,远离非洲海岸。你的特征可能不在大西洋的这一部分。您需要缩放到特定区域-这可以通过使用d3投影的
.center()
和.rotate()
方法之一或两者来完成
你需要知道你感兴趣的区域中的一个点,不需要精确。然后,您需要设置投影的焦点。对于墨卡托投影,这可能看起来像:
.center(x,y)
或者(不是两者都有):
其中x是您感兴趣区域中心的经度,y是您感兴趣区域中心的纬度。当然,你仍然需要调整你的预测。从缩放参数的一个小值开始,然后放大将有助于确保您至少在正确的区域居中