Невозможно обслуживать файлы .terrain в цезиевом замке из песка.

Я изучаю создание 3D-ландшафта с использованием CesiumJS. Я сгенерировал файлы .terrain с помощью построителя ландшафта Cesium и сохранил их в 'cesium/apps. ' в целях тестирования и во избежание проблем с CORS. Всякий раз, когда я пытаюсь сгенерировать ландшафт, я получаю сообщение об ошибке, что плитка на уровне X: 0 Y: 0 0, а также плитка на уровне X: 1 Y: 0 0 не были найдены, хотя я добавил пустые файлы в указанные места.


person rajat    schedule 01.07.2015    source источник
comment
Я попытался обслуживать файлы через сервер Apache и включить CORS через файл .htaccess, но все равно выдает ту же ошибку.   -  person rajat    schedule 02.07.2015


Ответы (1)


Теперь это старый вопрос, но я наткнулся на него во время своего исследования, поэтому я немного подробнее расскажу.

После того, как вам удалось сгенерировать тайлы ландшафта, наиболее очевидным на данный момент вариантом их обслуживания является https://github.com/geo-data/cesium-terrain-server. Сервер написан на Go и требует, чтобы Go присутствовал в системе. Он создан с целью упростить разработку и тестирование тайлов ландшафта, созданных с помощью инструментов Cesium Terrain Builder. .

Моя собственная цель состояла в том, чтобы обслуживать .terrain плитки с сервера Apache, и это оказалось довольно легко, после проверки в fiddler того, что обслуживает cesium-terrain-server, и после обнаружения этого обмен сообщениями (ищите ответ Кевина Ринга).

Помимо CORS, по существу, файлы ландшафта должны иметь тип MIME application/octet-stream, а в сжатом виде — 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 в корневой папке Terrain со следующим содержимым:

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

Теперь все просто работает, как задумано.

person Sergiu Dogotaru    schedule 10.08.2016