Еще одно наблюдение: у меня есть собранный ранее кэш с этого же источника на нужном мне масштабном уровне, на нужную территорию. Но в другой проекции (в другой grid), и в другой компановке директорий:
- - существует (дефолтная настройка):
grid: GLOBAL_MERCATOR,
directory_layout: tc.
- надо:
grid: GLOBAL_GEODETIC,
directory_layout: tms.
1. Эксперимент_1
В
mapproxy.yaml в caches прописываю еще один cache_2 с нужными мне параметрами, в качестве ресурса указываю уже существующий cache_1. В описании существующего cache прописана директория, где, собственно говоря, хрянятся тайлы, указаны компановка директорий и сетка; в качестве ресурса прописан тот самый wms, но с парметром
seed_only: true.
В
seed.yaml в качестве источника данных для сидирования прописан cache_2, то есть, по идее, он должен обращаться при сидировании к cache_2, cache_2 обращается к cache_1, хватает то, что есть в указанной директории с кэшем, перепроецирует, перекомпанует и складывает в ту директорию, которая указана в cache_2.
Код: Выделить всё
caches:
cache_2:
sources: [cache_1]
format: image/png
grids: [wgs_grid]
cache:
type: file
directory_layout: tms
directory: /cache/EPSG4326
cache_1:
sources: [terra_wms]
format: image/png
grids: [gm_grid]
cache:
type: file
directory_layout: tc
directory: /cache/EPSG900913
Результат такой же:
SourceError: no image returned from source WMS. Видимо, в существующем cache_1 также отсутствуют какие-то тайлы; mapproxy, не обнаружив их в cache_1, обращается к ресурсу wms, где снова падает.
2. Эксперимент_2 (понимаю, что так делать не стоит, но эксперимента ради).
В том же
mapproxy.yaml в sources добавляю еще один источник source_2:
type: tiles,
url - ссылка на само себя, в директорию, где спрятан уже существующий кэш. В cache_1 указываю в качестве источника source_2.
Запускаю тестовый сервер
serve_develop. Запускаю сидирование.
Результат:
SourceError('HTTP Error http://host:port/tms/1.0.0/name_tile_EPSG900913/tile?x=18977&y=23328&z=15&format=png": 404',)
3. Эксперимент_3.
В том же
mapproxy.yaml в source_2 добавляю описание реакции на ошибки:
Код: Выделить всё
on_error:
other:
response: transparent
cache: false
И вот тогда процесс двигается с места.
Делаю выводы:
1. Исходя из того, что кэш существует, но с прорехами, - когда-то wms работал таким образом, что отсутствующие тайлы пропускал шел собирать дальше.
2. Если не обращаться к url WMS, но использовать уже имеющиеся tiles, mapproxy также спотыкается о дырки в кэше, если ему заранее не сказать, как себя вести.
Может, есть подобная стратегия поведения и с wms? Или я в целом ошибаюсь?