Выбор векторных объектов, пересекающихся с растром
Добавлено: 01 окт 2013, 18:47
Представим, что есть две карты, одна векторная, а вторая растровая. Растровая карта содержит некоторое количество ненулевых ячеек. Требуется выбрать все объекты из векторной карты, которые хотя бы частично перекрываются с ненулевыми ячейками растра.
Если задачу легче понять на примере, то можно представить, что есть векторная карта домов (buildings) и растровая карта участков подтопления (cells). Требуется найти идентификаторы домов, которые подвергаются риску. Пример приведен на рисунке: Возник вопрос, как выбрать векторные объекты, пересекающиеся с растровыми участками. Какой-то специальной команды я не нашел, разве что v.rast.stat, но это скорее из пушки по воробьям, хочется чего-то более легкого в вычислительном плане.
Пока придумал такую процедуру
но что-то мне такой подход кажется кривым.
Может ли кто-то посоветовать другие варианты?
Если задачу легче понять на примере, то можно представить, что есть векторная карта домов (buildings) и растровая карта участков подтопления (cells). Требуется найти идентификаторы домов, которые подвергаются риску. Пример приведен на рисунке: Возник вопрос, как выбрать векторные объекты, пересекающиеся с растровыми участками. Какой-то специальной команды я не нашел, разве что v.rast.stat, но это скорее из пушки по воробьям, хочется чего-то более легкого в вычислительном плане.
Пока придумал такую процедуру
Код: Выделить всё
v.to.rast in=buildings out=buildings use=cat # Сохраняем идентификаторы домов в виде растра
r.mask rast=cells # Все нулевые ячейки маскируются
r.stats -n buildings # Получаю список идентификатров (все, что не пересекается с cells маскируется)
Может ли кто-то посоветовать другие варианты?