Передача динамических параметров из openlayers в mapsever через тайлкэш

Я создаю картографическое приложение, в котором формы и цвета проходят по следующему пути:

PostGIS> Mapserver> TileChache> OpenLayers

Все работает нормально, когда все параметры жестко запрограммированы. Но мне нужно, чтобы пользователи могли изменять параметры, например, выбирать объекты с населением больше, чем «X», и площадью под «Y».

Я предполагаю, что параметры могут быть переданы в Mapserver в виде запроса, прикрепленного к mapfile, например:

.../mapfile.map?area=123&population=456

Но я не могу найти способ передать это через TileCache. На данный момент - единственный обходной путь, который я вижу - это определить отдельный слой для любой возможной комбинации X и Y в tilechache.cfg, что не кажется хорошим способом. И должно быть какое-то ограничение на количество слоев, определенных в tilechache.cfg

Какие-нибудь решения?


person Arseni    schedule 11.12.2013    source источник


Ответы (1)


Вероятно, вам нужно переосмыслить то, что вы здесь делаете. Tilecache предназначен для статических плиток. Если вы отрендерили плитку и поместили ее в тайлкэш, а затем изменили аргумент URL-адреса, чего вы ожидаете? Что, если два пользователя запрашивают одну и ту же плитку с разными параметрами URL?

Если у вас небольшое количество допустимых параметров и вы хотите сгенерировать несколько копий своего кэша, по одной для каждого возможного уникального набора комбинаций параметров, которые может выбрать пользователь, вы можете настроить тайловый кэш с атрибутами.

Скорее всего, что вы хотите сделать, это что-то вроде создания тайлового кэша для статической базовой карты, а затем с использованием дополнительных слоев OpenLayers визуализировать вытягивание наложений по требованию, идущих непосредственно на сервер карты и передавая тайловый кэш.

person Stephen Woodbridge    schedule 11.12.2013
comment
Спасибо за ответ, я понял вашу идею. Поэтому я, вероятно, выберу отдельный слой в tilecache.cfg для каждой комбинации параметров. Надеюсь, я не достигну предела слоев, если он есть. Говоря о динамических и статических плитках: в идеале я бы хотел, чтобы TileCache обрабатывал разные комбинации значений параметров как разные плитки. Таким образом, всякий раз, когда запрашивается новая комбинация параметров, новая плитка будет отображаться и кэшироваться. Почему TileCache может принимать такие параметры, как, например, Широта и долгота являются динамическими и не могут делать то же самое с пользовательскими параметрами. - person Arseni; 14.12.2013
comment
Я не знаю подробностей о Tilecache, поскольку в основном использую mapcache, который является частью Mapserver, но концепции в основном те же. Детали реализации варьируются в зависимости от различных пакетов кэширования в зависимости от потребностей разработчика и сообщества. Вся идея кеша заключается в том, что вы можете повторно использовать плитки. Если вы просто создаете много случайных плиток, потому что параметры постоянно меняются, то повторное использование невелико, и, как правило, дешевле просто рисовать по запросу. - person Stephen Woodbridge; 15.12.2013
comment
Нет, нет, извините, в моем первом сообщении я не понял. Я хочу повторно использовать плитки. Таким образом, новая комбинация Params появится прибл. каждый 1000-й запрос. Но мне все же нужно разрешить любую теоретическую комбинацию. - person Arseni; 17.12.2013
comment
В любом случае, спасибо за ваш вклад. Я проверю mapcache. Возможно, в нем есть нужная мне функция. - person Arseni; 17.12.2013