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

Запрос при подключении слоя из Postgis

Добавлено: 03 июн 2012, 21:40
sanyasi
Подскажите, есть ли возможность, при подключении слоя из Postgis в Qgis (например линии или точки), вывод ограничить контуром города из таблицы asettlement-polygon с указанием id нужного города, или просто ограничить квадратом (координатами углов), кругом (центр, радиус), ну или еще как-нибудь.

Re: Запрос при подключении слоя из Postgis

Добавлено: 04 июн 2012, 09:34
rhot
Обычными инструментами QGIS, по-моему, нельзя.

Re: Запрос при подключении слоя из Postgis

Добавлено: 04 июн 2012, 09:38
yellow-sky
Такая возможность есть, правда не очень френдли-юзер способом.
При добавлении слоя из постгис базы с помощью Query Builder вы можете ограничить выборку (тоже самое можно сделать уже и после добавления слоя, во вкладке General->Subset). К сожалению, Query Builder не имеет встроенных возможностей для построения пространственных запросов, так как он универсальный и работает со всеми провайдерами. Но за то, он и не ограничивает выражение SQL where clause, поэтому вы можете написать любое выражение, которое поддерживает ваша СУБД.
Как пример, для выборки городов попадающих в определенный полигон:

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

ST_Within(the_geom, ST_GeomFromText('POLYGON ((3529000 6306000, 3550000 6306000, 3550000 6336000, 3529000 6336000, 3529000 6306000 ))',3857))
Выборка городов, находящихся не далее 50км от указанной точки:

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

ST_Distance(the_geom, ST_GeomFromText( 'POINT(3529000 6306000)',3857))<50000
Выбор городов, лежащих внутри полигона, взятого из другой таблицы, с заданным id:

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

ST_Intersects(the_geom, (SELECT the_geom FROM rayons where gid = 913))
Если городов у вас не так много, то возможно будет проще создать вьюхи для каждого из полигонов. Тогда не придется мучить пользователей такими извращениями. Либо как вариант заготовить проекты с уже забитыми ограничениями для нужных слоев.

Re: Запрос при подключении слоя из Postgis

Добавлено: 04 июн 2012, 10:41
sanyasi
Спасибо - сейчас у меня st_dwithin(the_geom,'0101000020E6100000B9F30550EA7C414020327E2082874C40', 0.2), что видимо индексы не использует. Какой вариант предпочтительней?

С view - тоже пока не всё понятно
viewtopic.php?f=32&t=10765

Re: Запрос при подключении слоя из Postgis

Добавлено: 04 июн 2012, 10:53
yellow-sky
Лучше не гадать, а проверить explain вашего запроса. Посмотрите в pgAdmin, юзаются индексы или нет. С ST_Within, ST_Dwithin должен использоваться. С ST_Distance - нет.