Серверы WMS и фильтрация данных
-
- Bot
- Сообщения: 276
- Зарегистрирован: 03 фев 2008, 23:13
- Репутация: 3
-
- Активный участник
- Сообщения: 110
- Зарегистрирован: 16 дек 2007, 11:06
- Репутация: 11
- Откуда: Самара
- Контактная информация:
Re: Серверы WMS и фильтрация данных
В статье говорится про фильтрацию данных для WMS.
Насколько я понимаю написанное, фильтрация происходит в настройках клиенской части.
В этом случае не удастся эффективно тайлировать данные?
Придется на каждый запрос вновь делать рендеринг карты?
Насколько я понимаю написанное, фильтрация происходит в настройках клиенской части.
В этом случае не удастся эффективно тайлировать данные?
Придется на каждый запрос вновь делать рендеринг карты?
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
Да. Хотя некоторые фильтры (например, GeoWebCache) и умеют складывать в кэш серии тайлов под разные фильтры. В целом, безусловно следует избегать использования фильтров и WMS там, где можно отобразить данные в векторном виде.
Возьмем, скажем, точечный слой (POI):
- если точек 1-2 тыс. шт., то тут вполне справится OpenLayers.
- больше (до 200-300 тыс. шт.) - придется брать OpenScales; учтите, что этот проект пока еще молод и не всегда удается его применять.
- еще больше - проще получить картинку по WMS, т.к. передача данных будет слишком накладна.
Другое соображение из реального проекта. Пусть фильтры состоят из 10 логических условий. Уже при таком количестве прорисовка 15-20 отдельных тайлов (в среднем на одну карту в текущем окне OpenLayers) создаст критическую лавину запросов между сервером WMS и базой данных. И это при одном интернет-пользователе. В такой ситуации выгоднее использовать singleTile.
Возьмем, скажем, точечный слой (POI):
- если точек 1-2 тыс. шт., то тут вполне справится OpenLayers.
- больше (до 200-300 тыс. шт.) - придется брать OpenScales; учтите, что этот проект пока еще молод и не всегда удается его применять.
- еще больше - проще получить картинку по WMS, т.к. передача данных будет слишком накладна.
Другое соображение из реального проекта. Пусть фильтры состоят из 10 логических условий. Уже при таком количестве прорисовка 15-20 отдельных тайлов (в среднем на одну карту в текущем окне OpenLayers) создаст критическую лавину запросов между сервером WMS и базой данных. И это при одном интернет-пользователе. В такой ситуации выгоднее использовать singleTile.
лангольеры под окном жрали время ом-ном-ном
-
- Активный участник
- Сообщения: 110
- Зарегистрирован: 16 дек 2007, 11:06
- Репутация: 11
- Откуда: Самара
- Контактная информация:
Re: Серверы WMS и фильтрация данных
То есть фильтры и WMS (особенно TMS и прочие тайлированные технологии) вообще говоря при промышленной реализации входят в противоречие.
А статья называется - Серверы WMS и фильтрация данных"
- поэтому у меня возник вопрос.
Я понимаю, что удобно использовать фильтры при перегонке векторных данных (в WFS например) для получения нужной порции данных.
А статья называется - Серверы WMS и фильтрация данных"

Я понимаю, что удобно использовать фильтры при перегонке векторных данных (в WFS например) для получения нужной порции данных.
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
1. Все зависит от задач.
2. Тайловые сервисы и WMS это немного разные по задачам вещи. Давно хотел написать статью с заголовком "WMS != интернет".
3. В оригинале статья называлась "Серверы WMS. Фильтры". В статье говорится о сервисах WMS и отдельной узкой части их работы. За рамки возможностей WMS мы не выходим.
Чувствую, что стоит написать обзорную статью про цели и задачи WMS, про его взаимоотношения с WFS, WCS и пр.
2. Тайловые сервисы и WMS это немного разные по задачам вещи. Давно хотел написать статью с заголовком "WMS != интернет".
3. В оригинале статья называлась "Серверы WMS. Фильтры". В статье говорится о сервисах WMS и отдельной узкой части их работы. За рамки возможностей WMS мы не выходим.
Чувствую, что стоит написать обзорную статью про цели и задачи WMS, про его взаимоотношения с WFS, WCS и пр.
лангольеры под окном жрали время ом-ном-ном
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
Я не касался в статье синтаксиса OGC Filter Encoding, это отдельная большая тема. Но вот попалась свежая статья: Developer corner: cross layer filtering coming down to GeoServer
Показывается возможность задания пользовательских функций в фильтре. (Первый - выбираются объекты из точечного слоя пересечением с полигональным слоем. Второй - отбираются только те объекты, что на расстоянии не более 100 м от дорог.)
Показывается возможность задания пользовательских функций в фильтре. (Первый - выбираются объекты из точечного слоя пересечением с полигональным слоем. Второй - отбираются только те объекты, что на расстоянии не более 100 м от дорог.)
лангольеры под окном жрали время ом-ном-ном
-
- Интересующийся
- Сообщения: 37
- Зарегистрирован: 31 май 2011, 03:09
- Репутация: 0
Re: Серверы WMS и фильтрация данных
Подскажите, пожалуйста, как в OpenLayers добавить правило для конкретного слоя(new OpenLayers.Layer.WMS)?
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
Style - это набор из нескольких (или одного) Rule - точки красные, зеленые, желтые и т.д.
StyleMap - это массив из стилей (на первый раз достаточно задать один только "default").
Создание стиля и правила показано в статье.
StyleMap - набор из Style, но их должно быть не больше 4-х:Если какой то из стилей не задан явно, то будет использован стиль по-умолчанию (оранжевый).
При создании слоя в параметре styleMap указывается созданный ранее набор стилей:
Если присвоение нужно произвести для уже существующего слоя, то можно попробовать так (не проверял):
StyleMap - это массив из стилей (на первый раз достаточно задать один только "default").
Создание стиля и правила показано в статье.
StyleMap - набор из Style, но их должно быть не больше 4-х:
Код: Выделить всё
var myStyleMap = new OpenLayers.StyleMap({
"default": style1, // обычные объекты
"select": style2, // веделенные
"temporary": style3, // новые, только что созданные
"delete": style4 // удаленные
});
При создании слоя в параметре styleMap указывается созданный ранее набор стилей:
Код: Выделить всё
var myLayer = new OpenLayers.Layer.Vector('Points', {
styleMap: myStyleMap
});
Код: Выделить всё
myLayer.styleMap = myStyleMap;
лангольеры под окном жрали время ом-ном-ном
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
Запросы MDX - пример использования сервера данных(!) geoJSP.
- UMN MapServer - строку подключения можно менять любым из перечисленных способов.
- GeoServer - отдельно через REST plugin (в новых версиях уже встроенный) изменить store (запрос PUT), а потом работать со слоем с новыми данными
лангольеры под окном жрали время ом-ном-ном
- Denis Rykov
- Гуру
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Серверы WMS и фильтрация данных
Парочка вопросов, касающихся MapServer.
1. В статье приведены два примера фильтрации с использованием имени поля слоя: и Почему в первом варианте имя слоя не закавычено, а во втором наоборот? Я почему спрашиваю, буквально вчера занимался подобным - и первый вариант не взлетел, то есть получается, что обрамлять имя поля в кавычки обязательно (MapServer 6.1-dev).
2.
1. В статье приведены два примера фильтрации с использованием имени поля слоя:
Код: Выделить всё
FILTER ([type]=’road’ and [size]<2)
Код: Выделить всё
FILTER ( ("[region]" = %country%) AND ("[size]" < %size%) )
2.
А можно поподробней?Тем более, что при работе с этим сервером создание враппера желательно в любом случае.
Spatial is now, more than ever, just another column- The Geometry Column.
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
1. Могу сказать только то, что в 6-ке немного изменилось отношение к кавычкам. Сам столкнулся с этим.
2. По врапперу - начиная с хования параметра "&map=/usr/local/..." и далее пред/пост-обработка запросов.
2. По врапперу - начиная с хования параметра "&map=/usr/local/..." и далее пред/пост-обработка запросов.
лангольеры под окном жрали время ом-ном-ном
- Mavka
- Гуру
- Репутация: 9
Re: Серверы WMS и фильтрация данных
UMN MapServer 6.0.1 (MS4W)
Впечатления от обновления с 5-й версии.
Запрос к серверу WMS с использованием ссылки на SLD (внешние стили):
1. MS парсит SLD, собирает все фильтры из RULES в один и прописывает его в свойство слоя FILTER. - Старый добрый ticket #2840, который давно нужно ликвидировать ибо он делает только хуже и вообще является нехорошим хаком.
2. Как и сообщалось в пресс-релизе, обновлен механизм EXPRESSION. И если в фильтрах он еще более-менее адекватен (хотя часть условий потеряны, но в моем случае это было не критично), то распарсить RULES у MS не получилось. (MS 5.x все делал правильно.)
Например, есть два аттрибута (attr1 и attr2) и четыре стиля:
И вот теперь я сижу и думаю как обойти обе проблемы. Первую еще можно перекомпилировать с отключением одной ветки кода (для 5-ки уже делал). А вот что с SLD делать совершенно не представляю, боюсь что там огромные проблемы фундаментального плана...
Впечатления от обновления с 5-й версии.
Запрос к серверу WMS с использованием ссылки на SLD (внешние стили):
1. MS парсит SLD, собирает все фильтры из RULES в один и прописывает его в свойство слоя FILTER. - Старый добрый ticket #2840, который давно нужно ликвидировать ибо он делает только хуже и вообще является нехорошим хаком.
2. Как и сообщалось в пресс-релизе, обновлен механизм EXPRESSION. И если в фильтрах он еще более-менее адекватен (хотя часть условий потеряны, но в моем случае это было не критично), то распарсить RULES у MS не получилось. (MS 5.x все делал правильно.)
Например, есть два аттрибута (attr1 и attr2) и четыре стиля:
- attr1='A' and attr2=1
- attr1='A' and attr2=2
- attr1='B' and attr2=1
- attr1='B' and attr2=2
И вот теперь я сижу и думаю как обойти обе проблемы. Первую еще можно перекомпилировать с отключением одной ветки кода (для 5-ки уже делал). А вот что с SLD делать совершенно не представляю, боюсь что там огромные проблемы фундаментального плана...
лангольеры под окном жрали время ом-ном-ном
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей