GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


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

Обсуждение материалов сайта: вопросы, замечания, предложения

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

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

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

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

updates-bot
Bot
 
Зарегистрирован: 04 фев 2008
 
Сообщения: 276
Репутация: 2

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

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

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

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

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

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

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

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

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

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1

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

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

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

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

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

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

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

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

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

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1

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

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

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

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1

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

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

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

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

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

Сообщение Mavka » 29 июл 2011, 11: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; 
  • 0

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1

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

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

Запросы MDX - пример использования сервера данных(!) geoJSP.

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

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1

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

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

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

1. В статье приведены два примера фильтрации с использованием имени поля слоя:
Код: Выделить всё
FILTER ([type]=’road’ and [size]<2)
и
Код: Выделить всё
FILTER ( ("[region]" = %country%) AND ("[size]" < %size%) )
Почему в первом варианте имя слоя не закавычено, а во втором наоборот? Я почему спрашиваю, буквально вчера занимался подобным - и первый вариант не взлетел, то есть получается, что обрамлять имя поля в кавычки обязательно (MapServer 6.1-dev).

2.
Тем более, что при работе с этим сервером создание враппера желательно в любом случае.
А можно поподробней?
  • 0

Spatial is now, more than ever, just another column- The Geometry Column.
Аватара пользователя
Denis Rykov
Author
 
Зарегистрирован: 11 апр 2008
 
Сообщения: 3266
Репутация: 478
Статьи: 33
Проекты: 9

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

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

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

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1

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

Сообщение Mavka » 20 дек 2011, 14: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 делать совершенно не представляю, боюсь что там огромные проблемы фундаментального плана...
  • 0

лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
Mavka
Гуру
 
Зарегистрирован: 14 мар 2008
 
Сообщения: 2060
Репутация: 9
Статьи: 11
Проекты: 2/1


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

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

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


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).