javascript - 无法在铯sandcaSTLe中提供.terrain文件

标签 javascript webgl cesiumjs

我正在学习使用 CesiumJS 生成 3d 地形。我使用 Cesium terrain builder 生成了 .terrain 文件并将它们保存在 'cesium/apps' 目录中以用于测试目的并避免 CORS 问题。每当我尝试生成地形时,我都会收到错误消息,即使我在指定位置添加了空文件,也找不到 X:0 Y:0 级别 0 的瓦片以及 X:1 Y:0 级别 0 的瓦片。

最佳答案

现在这是一个较旧的问题,但我在整个研究过程中偶然发现了它,所以我会详细说明一下。

在您成功生成地形图 block 之后,此时最明显的服务选项是 https://github.com/geo-data/cesium-terrain-server 。服务器是用 Go 编写的,需要 Go 出现在系统上。它的构建旨在简化使用 Cesium Terrain Builder tools 创建的地形图 block 的开发和测试。

我自己的目标是从 Apache 服务器提供 .terrain 瓦片,结果证明这很容易,在 fiddler 中检查了 cesium-terrain-server 正在提供的服务并找到这个 exchange of messages (寻找 Kevin Ring 的回复)。

除了CORS,本质上地形文件需要有 MIME 类型 application/octet-stream 并且如果 gzipped Content-Encoding: gzip。请注意,仅传递 gzip header ,如果文件已经被 gzip 压缩,则不要再次使用 gzip 服务。

在我的 .htaccess 中,我有以下新行:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
<filesMatch "(.*)\.terrain$">
    ForceType application/octet-stream
    Header set Content-Disposition attachment
    Header set Content-Encoding: gzip
</filesMatch>

我还需要在 terrain 文件夹的根目录中添加一个 layer.json 文件,内容如下:

{
  "tilejson": "2.1.0",
  "format": "heightmap-1.0",
  "version": "1.0.0",
  "scheme": "tms",
  "tiles": ["{z}/{x}/{y}.terrain"]
}

现在一切都按预期工作。

关于javascript - 无法在铯sandcaSTLe中提供.terrain文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164976/

相关文章:

javascript - 透明背景上的图像不平滑

javascript - 列表关闭并显示

3d - 在 webgl 中绘制圆环

javascript - 删除和添加图像以减少页面延迟

javascript - 如何设置默认 View 位置 (Cesium 1.6)

cesiumjs - 在cesiumJS中更改WMS CRS

javascript - 动态调用静态方法

javascript在函数中声明键值对

javascript - WebGL - 纹理未正确显示

javascript - 将 2D 方向应用于粒子 - three.js