无法为铯沙堡中的.train文件提供服务

Unable to serve.terrain files in cesium sandcastle

本文关键字:文件 train 服务      更新时间:2023-09-26

我正在学习使用CesiumJS生成三维地形。我使用铯地形生成器生成了.train文件,并将它们保存在"铯/应用程序"目录中,用于测试目的和避免CORS问题。每当我尝试生成地形时,我都会遇到错误,即即使我在指定位置添加了空文件,也找不到X:0 Y:0级别0的瓦片以及X:1 Y:0级0的瓦片。

这是一个老问题,但我在整个研究过程中偶然发现了它,所以我会详细介绍一下。

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

我自己的目标是从Apache服务器上提供.terrain瓦片,在fiddler中检查了铯地形服务器正在提供的服务,并发现了这种消息交换(查看Kevin Ring的回复)后,这变得非常容易。

除了CORS之外,地形文件本质上还需要具有MIME类型application/octet-stream和gzip Content-Encoding: gzip。请注意,只传递gzip标头,而不传递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>

我还需要添加地形根文件夹中的layer.json文件,其中包含以下内容:

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

现在一切都按预期进行。