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

Размеры буферной зоны и сохранение Пространственного запроса

Добавлено: 20 авг 2014, 12:10
Charaunica
Задача: 1. Необходимо создать окружность с радиусом 50 км вокруг точки с известными координатами - проще всего реализуется через Буферные зоны. 2. С помощью пространственного запроса (либо другими методами) отобрать объекты из точечного слоя которые попали внутрь окружности. 3. Сохранить выборку в отдельный слой и уже в нем выбрать объекты, соответствующие условию (например, выше 30 м - все данные есть в исходной таблице атрибутов). 4. Далее внутри окружности также будут создаваться полигоны и отбираться объекты в их границах.

Возникшие проблемы: а) единицы буферной зоны - метры/километры, она же получается на карте в градусах (Единицы карты в Свойствах проекта - метры, проекция WGS 84 EPSG:4326, десятичные градусы. б) В результате Пространственного запроса создается только выделение, выборка внутри окружности в отдельный слой не сохраняется. Ошибка: "Данная операция поддерживается только для источников OGR, POSTGRES и SPATIALITE."

Соответственно, невозможно продолжить работу дальше. Поэтому обращаюсь за помощью :cry:
Версия 2.4 Chugiak, сборка с официального сайта для 32-разрядн. системы для новых пользователей.

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 20 авг 2014, 12:33
rhot
Может быть, пересохранить в Postgres/SpatiLite?

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 20 авг 2014, 16:21
Charaunica
При пересохранении в SpatiaLite и повторении действий выборки сохраняются в слой, НО совсем рандомно - из выбранного точечного слоя,не из области окружности, хотя графически выделяет все правильно :(

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 21 авг 2014, 04:47
Игорь Черниенко
А каким образом повторялось действие, через пространственные запросы qgis? В SpatiaLite почти все необходимые Вам действия можно выполнить одним запросом, чем-то вроде.

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

select point_id,point_geom
from tbl_point_layer,
        (selelct buffer(transform(some_point_geom,required_srid),50) as buf_geom
         from tbl_some_point) as a
where contains(a.buf_geom,transform(point_geom,required_srid))
    and tbl_point_layer.some_attr<x
tbl_point_layer -- Ваш слой
point_id,point_geom,some_attr -- идентификатор, поле геометрии и атрибут в точечном слое
tbl_some_point -- таблица с точкой
some_point_geom -- поле геометрии (собственно точка)
required_srid -- соответствующая проекция
x -- значение атрибута

Лучше, наверное, все-таки создать представления или "промежуточные" таблицы

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 25 авг 2014, 11:25
Charaunica
Игорь Черниенко писал(а):А каким образом повторялось действие, через пространственные запросы qgis? В SpatiaLite почти все необходимые Вам действия можно выполнить одним запросом, чем-то вроде.


Точно также,через пространственные запросы. За предложенный запрос спасибо, но с программированием я пока на "Вы", в первую очередь хотелось бы реализовать задумку через команды интерфейса.

Какие именно промежуточные таблицы Вы предлагаете?

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 26 авг 2014, 08:53
Charaunica
Задать нужный радиус буферной зоны в км помогло перепроецирование данных в прямоугольную СК.
Но Пространственный запрос так нормально и не сохраняется - итоговый слой охватывает совершенно не ту территорию.

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 27 авг 2014, 15:35
tsatsara
а вы пробовали через
вектор-выборка - пространственная выборка?
надо, чтобы оба слоя при этом были в одной системе координат.

потом правой кнопкой - сохранить как и поставить галочку "только выделенные"

Re: Размеры буферной зоны и сохранение Пространственного зап

Добавлено: 02 сен 2014, 22:55
Charaunica
tsatsara , спасибо большое, Ваш совет помог! :)