Страница 1 из 1
Кеширование карты ArcGis из сервиса OpenLayers
Добавлено: 11 ноя 2013, 09:11
DevGis
Код: Выделить всё
var wmslTest = new OpenLayers.Layer.WMS(
'ArcGisTest',
'http://192.1681.*.*:6080/arcgis/services/Test/MapServer/WmsServer',
{
LAYERS: '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18',
STYLES: '',
transparent: true
},
{
opacity: 1,
isBaseLayer: true,
visibility: false,
projection: 'EPSG:102113'
}
);
map.addLayer(wmslTest);
Есть карта на ArcGis Server 10.1. Когда эта карта просматривается в ArcMap, то при просмотре кеш строится (повторно карта отображается быстро). Когда карта просматривается в браузере с помощью OpenLayers по протоколу WMS, то кеш не строится (карта всегда отображается медленно, т.к. тайлы все время генерятся из кучи баз данных)
Можно ли написать (используя OpenLayers) код, чтобы карта кешировалась?
Re: Кеширование карты ArcGis из сервиса OpenLayers
Добавлено: 11 ноя 2013, 09:42
ericsson
Не совсем понимаю, как вы собираетесь вообще что-то кэшировать средствами самого OL, но вот по поводу кэширования WMS, скажу, что это изобретение велосипеда, при чем не современного, а такого с одним здоровым колесом впереди и маленьким сзади. Больше пяти лет назад была в мире такая идея, соорудить WMS-C, но здраво рассудив, что WMS и кэширование - две достаточно противоречивые вещи, люди сошлись на использовании TMS, то есть просто заранее сгенерированных тайлов, без рудиментов WMS в виде обратной совместимости. Почитайте
http://wiki.osgeo.org/wiki/WMS_Tile_Caching на эту тему.
Но. Если вам действительно нужно кэшировать -
http://tilecache.org/ вам в помощь.
Re: Кеширование карты ArcGis из сервиса OpenLayers
Добавлено: 11 ноя 2013, 10:08
DevGis
Если используется только ПО от ArcGis то это возможно: в ArcGis Service у меня есть сервис с картой. В arcmap просматриваю карту - карта кешируется. Еслии использовать ArcGis for JS API, то карта тоже будет кешироваться?.
Если применять mapproxy то и карта OSM кешируется и отображается по пртоколу WMS. Просматривается она в openlayers и кешируется. Так что кеширование при просмотре в OpenLayers возможно.
Re: Кеширование карты ArcGis из сервиса OpenLayers
Добавлено: 11 ноя 2013, 11:39
ericsson
OpenLayers - всего лишь front end библиотека. Она вообще никак не влияет на то, что происходит с тайлами, которые передаются по протоколу HTTP между сервером и browser-ом. Что и как кэшируется, может определять browser и сервер. Первый - путем сохранения на диске того, что он получил, второй - путем отдачи вместе с тайлами соответствующих HTTP-заголовков. Но это не то, что вы хотите.
Если вы хотите, чтобы при запросе какого-то фрагмента он получался всегда "быстро", то есть хотите свести его получение к отправке HTTP-запроса и получению уже физически существующего на сервере тайла вместо генерации этого тайла из базы, то вам нужно поставить между сервером, генерирующим тайлы и клиентом, их показывающим (browser-ом) нечто, что будет складывать у себя тайлы и отдавать их клиенту при повторном запросе.
Я не работаю с ArcGIS и не знаю, как именно там это реализуется. Объяснил общий случай, который работает с любым ПО, которое использует HTTP для передачи тайлов по WMS.
Проблема может быть только одна: один клиент может запрашивать с WMS-сервера тайлы, чтобы заполнить текущее окно, а другой - целые куски, совпадающие с экстентом текущего окна. В первом случае кэширование возможно, потому что тайлы запрашиваются одинаковые. А во втором - нет, потому что нет никаких тайлов, и экстент у каждого пользователя - уникальный. Потому я и говорю о пользе TMS, там все всегда однозначно.