- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 d3.geo.tile plugin, examples 在 map 投影的比例和传递给 tile() 函数的比例之间都有差异。特别是 tile_scale = projection_scale * 2 * Math.PI
。查看示例 here和 here .
这个 2 * PI 乘法是什么意思?
最佳答案
要理解为什么在使用 d3.geo.tile 插件时有一个附加因子 2π 应用于比例尺,了解 d3.geoMercator()
使用的投影之间的区别很重要以及绘制栅格图 block 时使用的那个。
D3 使用公式实现标准 Mercator projection:
此投影使用以格林威治子午线为中心的单位圆半径 R = 1。到目前为止,没有缩放,也没有应用任何翻译。投影将从以下时间间隔产生输出值:
在 D3 v4 中这是 implemented 作为
export function mercatorRaw(lambda, phi) {
return [lambda, log(tan((halfPi + phi) / 2))];
}
D3 v3 使用略有不同的符号,它更类似于上述公式,当然,等同于较新的实现:
function d3_geo_mercator(λ, φ) {
return [λ, Math.log(Math.tan(π / 4 + φ / 2))];
}
d3.geo.mercator()
使用 translation 和 scaling 的默认值这一事实常常掩盖了区间的值。您必须明确地将它们设置为 .translate([0,0]).scale(1)
才能获得上述间隔。
另一方面,图 block 使用墨卡托投影的略微修改版本,称为 Web Mercator 。相关公式为
该投影的核心是使用与标准墨卡托投影相同的计算。从上述等式右侧的黑色项可以很容易地看出这一点,这些项与墨卡托投影使用的项完全相同。只是通过应用一些缩放和平移来调整输出间隔以更好地适应屏幕显示的需要。
首先,对于南北纬度都超过的情况,投影被截断
从而将整个 map 投影到一个正方形上。之后,进行了三个调整(根据上面等式中的颜色进行匹配):
这将从间隔中产生输出值
这是所涉及的投影比例的差异,这就是您需要乘以/除以 2π 的原因。如果要在同一张 map 中同时使用 d3.geo.mercator()
和瓦片,则需要修改比例以相互匹配。
对标准墨卡托投影施加与 Web 墨卡托投影相同的纬度限制,您最终得到以下间隔:
标准墨卡托投影
项目到区间
长度 = 2π。
网页墨卡托投影
项目到区间
长度 = 256。
这在设置投影比例时已得到纠正
var projection = d3.geoMercator()
.scale((1 << 12) / 2 / Math.PI );
使用简单的求幂数学,比例因子可以重写为
(1 << 4) * (1 << 8) / 2 / Math.PI
进一步
(1 << 4) * 256 / ( 2 * Math.PI )
第一项 (1 << 4)
等于 24,这是要使用的实际缩放因子:16。这将获得 zoom level 4 的图 block 。下学期
是调整尺度的校正因子,其中包括您的问题所涉及的 2π。
关于d3.js - 为什么投影与平铺的比例值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517002/
我正在尝试制作一种能够解决拼贴问题中的大图 block 集的算法。现在它能够根据宽度和高度找到正确的 Tiles 来放置,但是在使其正确递归方面存在一些问题。 如您所见,这个想法是,在放置的每个图 b
有什么方法可以轻松地平铺 mdi parent 的所有表单 child 吗?我正在寻找 windows 提供的大部分功能,瓷砖级联。有谁知道一个简单的方法? 最佳答案 试试这些... // Tile
我有一个大 jpg,其分辨率为 x * 256/x * 256。我想将此图像切割为 256x256 的图块,命名约定为 {zoom}-{x}-{y}.jpg。过去我使用 ZoomifyExpress
如何使用ImageMagick平铺图像?我认为我不能使用montage,因为我希望将列偏移原始图像高度的50%。 展示我正在尝试做的事可能更容易: 从...开始: 结尾为: 谢谢! 最佳答案 感谢Fr
是否可以在 XNA 中平铺图像以使其填满整个矩形?我试过用谷歌搜索这个主题,但我找不到任何似乎有用的东西(虽然我可能遗漏了一些明显的东西)。我找到了 this MSDN page ,但我似乎无法让它工
我无法找到答案,为什么我为图 block map 制作的图 block 表在使用 libGDX 在屏幕上移动时会创建垂直白线和不稳定的水平线。 这是显示白色垂直线的视频:https://www.you
有谁知道 GitHub Java version of Tiled 中如何临时支持视差图层吗?工作正常吗? 它可以编译,并且执行得很好。但是,如果我将图层设置为viewplane distance 0
在我制作的平台游戏中,我需要加载图 block 才能创建关卡,但在下面的代码中我似乎遇到了问题。它说我在这部分有一个错误: String[] skips = skip.split(" "); 但对我来
使用 pdfimages 提取图像和 mupdf/mutool到目前为止工作正常。 使用 FreePDF 生成的 PDF 中的图像总是被切片,因此一个图像会生成多个图像文件。 有什么技巧可以避免这种情
我正在尝试使用 Tiled 编写基于 rts-like-tile 的游戏和 slick2d。 我不知道如何处理多图 block 对象,例如建筑物,如何创建、保存等等。移动它们。 最佳答案 一种解决方案
我想用一张图片来编写一个平铺 map 。它应该是一个 5x5 的小图片区域。我写了一些带有 2 个嵌套循环的 Javascript 代码。使用此解决方案,仅打印 1 张图片。当我在第二个循环中删除 b
我正在尝试使用 Slick2D 和 Tiled Map Editor 制作一个基本的 2D 游戏。我已经弄清楚如何使用 TileProperties 进行基本的碰撞检测,但我不确定对象如何与 map
我正在尝试创建一个无限滚动的分页 UIScrollView 我一直在关注 Advanced UIScrollView Techniques来自 WWDC 2010 的视频,但是我不确定如何为分页 UI
好吧,假设我有一个像本网站一样的冷却平铺背景。 http://www.leeslights.com/colors-shapes-sizes-and-prices.html 我将如何使图像平铺到浏览器,
这个问题在这里已经有了答案: CSS-only masonry layout (5 个答案) 关闭 2 年前。
这个问题在这里已经有了答案: CSS-only masonry layout (5 个答案) 关闭 2 年前。
这个问题在这里已经有了答案: CSS-only masonry layout (5 个答案) 关闭 2 年前。
这个问题在这里已经有了答案: CSS-only masonry layout (5 个答案) 关闭 2 年前。
这个问题在这里已经有了答案: CSS-only masonry layout (5 个答案) 关闭 2 年前。
这个问题在这里已经有了答案: CSS-only masonry layout (5 个答案) 关闭 2 年前。
我是一名优秀的程序员,十分优秀!