Серверы WMS и фильтрация данных

Обсуждение материалов сайта: вопросы, замечания, предложения
Ответить
updates-bot
Bot
Сообщения: 276
Зарегистрирован: 03 фев 2008, 23:13
Репутация: 3

Серверы WMS и фильтрация данных

Сообщение updates-bot » 08 фев 2011, 17:48

Обсуждение статьи "Серверы WMS и фильтрация данных"

http://gis-lab.info/qa/wms-filter.html

andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

Re: Серверы WMS и фильтрация данных

Сообщение andreichernov » 08 фев 2011, 20:22

В статье говорится про фильтрацию данных для WMS.
Насколько я понимаю написанное, фильтрация происходит в настройках клиенской части.
В этом случае не удастся эффективно тайлировать данные?
Придется на каждый запрос вновь делать рендеринг карты?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 08 фев 2011, 23:35

Да. Хотя некоторые фильтры (например, GeoWebCache) и умеют складывать в кэш серии тайлов под разные фильтры. В целом, безусловно следует избегать использования фильтров и WMS там, где можно отобразить данные в векторном виде.

Возьмем, скажем, точечный слой (POI):
- если точек 1-2 тыс. шт., то тут вполне справится OpenLayers.
- больше (до 200-300 тыс. шт.) - придется брать OpenScales; учтите, что этот проект пока еще молод и не всегда удается его применять.
- еще больше - проще получить картинку по WMS, т.к. передача данных будет слишком накладна.

Другое соображение из реального проекта. Пусть фильтры состоят из 10 логических условий. Уже при таком количестве прорисовка 15-20 отдельных тайлов (в среднем на одну карту в текущем окне OpenLayers) создаст критическую лавину запросов между сервером WMS и базой данных. И это при одном интернет-пользователе. В такой ситуации выгоднее использовать singleTile.
лангольеры под окном жрали время ом-ном-ном

andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

Re: Серверы WMS и фильтрация данных

Сообщение andreichernov » 09 фев 2011, 10:59

То есть фильтры и WMS (особенно TMS и прочие тайлированные технологии) вообще говоря при промышленной реализации входят в противоречие.
А статья называется - Серверы WMS и фильтрация данных" :-) - поэтому у меня возник вопрос.

Я понимаю, что удобно использовать фильтры при перегонке векторных данных (в WFS например) для получения нужной порции данных.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 09 фев 2011, 11:35

1. Все зависит от задач.
2. Тайловые сервисы и WMS это немного разные по задачам вещи. Давно хотел написать статью с заголовком "WMS != интернет".
3. В оригинале статья называлась "Серверы WMS. Фильтры". В статье говорится о сервисах WMS и отдельной узкой части их работы. За рамки возможностей WMS мы не выходим.

Чувствую, что стоит написать обзорную статью про цели и задачи WMS, про его взаимоотношения с WFS, WCS и пр.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 09 фев 2011, 18:08

Я не касался в статье синтаксиса OGC Filter Encoding, это отдельная большая тема. Но вот попалась свежая статья: Developer corner: cross layer filtering coming down to GeoServer
Показывается возможность задания пользовательских функций в фильтре. (Первый - выбираются объекты из точечного слоя пересечением с полигональным слоем. Второй - отбираются только те объекты, что на расстоянии не более 100 м от дорог.)
лангольеры под окном жрали время ом-ном-ном

Kris
Интересующийся
Сообщения: 37
Зарегистрирован: 31 май 2011, 03:09
Репутация: 0

Re: Серверы WMS и фильтрация данных

Сообщение Kris » 29 июл 2011, 06:53

Подскажите, пожалуйста, как в OpenLayers добавить правило для конкретного слоя(new OpenLayers.Layer.WMS)?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 29 июл 2011, 10:22

Style - это набор из нескольких (или одного) Rule - точки красные, зеленые, желтые и т.д.
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
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 24 авг 2011, 09:25

Запросы MDX - пример использования сервера данных(!) geoJSP.
  • UMN MapServer - строку подключения можно менять любым из перечисленных способов.
  • GeoServer - отдельно через REST plugin (в новых версиях уже встроенный) изменить store (запрос PUT), а потом работать со слоем с новыми данными
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Серверы WMS и фильтрация данных

Сообщение Denis Rykov » 28 ноя 2011, 06:04

Парочка вопросов, касающихся MapServer.

1. В статье приведены два примера фильтрации с использованием имени поля слоя:

Код: Выделить всё

FILTER ([type]=’road’ and [size]<2)
и

Код: Выделить всё

FILTER ( ("[region]" = %country%) AND ("[size]" < %size%) )
Почему в первом варианте имя слоя не закавычено, а во втором наоборот? Я почему спрашиваю, буквально вчера занимался подобным - и первый вариант не взлетел, то есть получается, что обрамлять имя поля в кавычки обязательно (MapServer 6.1-dev).

2.
Тем более, что при работе с этим сервером создание враппера желательно в любом случае.
А можно поподробней?
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 28 ноя 2011, 15:22

1. Могу сказать только то, что в 6-ке немного изменилось отношение к кавычкам. Сам столкнулся с этим.
2. По врапперу - начиная с хования параметра "&map=/usr/local/..." и далее пред/пост-обработка запросов.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Серверы WMS и фильтрация данных

Сообщение Mavka » 20 дек 2011, 13:19

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) и четыре стиля:
  1. attr1='A' and attr2=1
  2. attr1='A' and attr2=2
  3. attr1='B' and attr2=1
  4. attr1='B' and attr2=2
В FILTER попали только условия по attr1 - причем все четыре (attr1='A' or attr1='A' or attr1='B' or attr1='B'). А в STYLE прописаны четыре стиля, но ни в одном из них нет EXPRESSION. Т.е. работает только самый первый.

И вот теперь я сижу и думаю как обойти обе проблемы. Первую еще можно перекомпилировать с отключением одной ветки кода (для 5-ки уже делал). А вот что с SLD делать совершенно не представляю, боюсь что там огромные проблемы фундаментального плана...
лангольеры под окном жрали время ом-ном-ном

Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 18 гостей