Страница 1 из 1

UMN MapServer - SQL limit

Добавлено: 06 дек 2010, 17:47
Mavka
Таблицы PostGIS с объектами multiline. Их порядка 200 тыс.
Слой UMN MapServer рисует их пунктирными линиями со стрелками.
На крупных масштабах все нормально, но на мелком-обзорном сервер не справляется с количеством линий.
Нужно их кол-во как то ограничить, пусть не все но хоть что то.
Имею:

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

DATA "the_geom from mytable using unique gid using srid=4326"
FILTER (%sql_filter%) 
Хочу добавить в sql-запрос LIMIT, но во-первых - он должен идти в самом конце после WHERE, во-вторых - UMN на него ругается и просто не работает.

В документации приводится такой вариант с под-запросом:

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

DATA "the_geom from (select g.* from mytable g limit 30000) as subquery using unique gid using srid=4326" 
Это работает. Но сначала обрезается вся таблица по лимиту, а уже потом применяется фильтр. Что, естественно, нужно делать наоборот.

Re: UMN MapServer - SQL limit

Добавлено: 06 дек 2010, 18:20
Mavka
Пробовал

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

FILTER "(%sql_filter%) LIMIT 100" 
и

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

DATA "the_geom from mytable using unique gid using srid=4326 limit 100" 
просто не реагирует, как будто ничего не изменилось.

Re: UMN MapServer - SQL limit

Добавлено: 06 дек 2010, 21:04
gamm
Mavka писал(а):Пробовал

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

FILTER "(%sql_filter%) LIMIT 100" 
и

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

DATA "the_geom from mytable using unique gid using srid=4326 limit 100" 
просто не реагирует, как будто ничего не изменилось.
предлагаю рабоче-крестьянское решение: добавляете поле ScaleSelect, в которые случайным образом вставляете 1,2,3, ... в (кумулятивных) пропорциях, соотвествующих масштабу. В запросе добавляете and (ScaleSelect <= CurScale), где CurScale - переменная, соотвествующая текущему масштабу. Получаете нагрузку карты (шт/м2), соотвествующую масштабу.

Re: UMN MapServer - SQL limit

Добавлено: 06 дек 2010, 21:09
Mavka
О как! Интересный вариант... очень оригинально. Пасибо.