Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 拓扑比例问题_Javascript_Dictionary_D3.js_Scale_Topojson - Fatal编程技术网

Javascript 拓扑比例问题

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 ])

嗨,我在绘制地形图时遇到了一个小问题。 我的topojson文件具有以下属性:

{"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是您感兴趣区域中心的纬度。当然,你仍然需要调整你的预测。从缩放参数的一个小值开始,然后放大将有助于确保您至少在正确的区域居中