首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Topojson等级的问题

Topojson等级的问题
EN

Stack Overflow用户
提问于 2017-04-21 18:18:05
回答 1查看 135关注 0票数 1

嗨,我在绘制topojson地图的工作中有一个小问题。我的topojson文件具有以下属性:

代码语言:javascript
复制
{"type":"Topology","arcs":[[[6566,5055] ... 
"transform":{"scale":[0.00014849648332078075,0.00015400850549819297], ...

在我的脚本中:

代码语言:javascript
复制
var projection = d3.geo.mercator()
.scale(5000)
.translate([width/2 , height/2 ])

我如何解释topojson文件和我的脚本中的比例?

EN

回答 1

Stack Overflow用户

发布于 2017-04-22 02:40:02

拓扑上的比例因子是(from API documentation)的一部分:

是一种转换,它指定如何将增量编码的整数坐标转换为它们的原生值(如经度和纬度)。

虽然规模与(D3 API documentation)有关:

比例因子与投影点之间的距离线性对应;但是,绝对比例因子在不同投影之间并不相等。

我不认为其中一个会帮助你解决另一个问题。特别是因为不同的投影类型对于相似的特征将具有不同的比例值。这甚至适用于单个投影,例如墨卡托,这将需要不同的比例值来放大相同大小的不同特征,这取决于它们所在的位置-由于像任何投影一样的失真。

使用D3墨卡托投影,比例值为200可以显示几乎整个地球(960px X 500 px)。因此,你的特征将是很小的(除非你的特征是整个星球)。使用较大的比例值放大将有助于增加要素相对于视口的大小。

但是,你要放大到哪里呢?默认情况下,墨卡托投影将缩放到非洲海岸外的本初子午线和赤道的交点0,0。你的特征可能不在大西洋的这一部分。您需要缩放到特定的区域-这是通过使用d3投影的.center().rotate()方法中的一个或两个来完成的。

你需要知道你感兴趣的区域的中间的一个点,它不需要精确。然后,您需要设置投影将聚焦的位置。对于墨卡托投影,可能如下所示:

代码语言:javascript
复制
.center(x,y)

或者(不是两者都有):

代码语言:javascript
复制
.rotate(-x,-y)

其中x是感兴趣区域中心的经度,y是感兴趣区域中心的纬度。当然,你仍然需要缩放你的投影。从缩放参数的一个较小值开始,然后放大将有助于确保至少在正确的区域居中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43540087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档