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

Пересечение точек и линий (QGIS)

Добавлено: 13 май 2020, 14:34
UlvHare
Здравствуйте!
Имеется слой с маршрутами (линии) и слой точек находок (след пересекает маршрут). Точность плюс-минус ошибка GPS, поэтому точки могут лежать чуть-чуть не на маршруте. Надо получить число пересечений на километр каждого маршрута. Сейчас просто визуально считаю точки и через инструмент "определить объекты" смотрю длину маршрута. А хотелось бы автоматизировать процесс. Например, поле в таблице маршрутов со значением "найти все точки в слое точек, которые лежат не дальше 5 м от этого маршрута, поделить их число на длину маршрута". Если, конечно, такое возможно. Если да, то нужна ссылка на учебник SQL-диалекта, используемого в QGIS, с примерами. Или пример запроса, если нетрудно. Да, оба слоя - таблицы в одной БД (файл gpkg).

Re: Пересечение точек и линий (QGIS)

Добавлено: 13 май 2020, 15:49
drrrrr
Диалект - SQLite.
Создайте виртуальный слой, добавьте слои и обзовите их pnt и lin
запрос

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

select lin.fid,count(pnt.fid) , st_length(lin.geometry)/count(pnt.fid) from lin, pnt where st_intersects(lin.geometry, st_buffer(pnt.geometry, 5)) group by lin.fid, lin.geometry;
создаст таблицу с идентификатором линейного объекта, количеством пересечений, и искомым значением расстояния для каждой линии. Пороговое расстояние от точки до линии - размер буфера в запросе.

Re: Пересечение точек и линий (QGIS)

Добавлено: 15 май 2020, 15:52
UlvHare
Спасибо! Долго бился, пытаясь понять, почему только 1 строка в итоговой таблице, но понял, что это глюк именно просмотрщика таблицы атрибутов - он ставит некий необнаружимый фильтр (на минимальном примере с 2 линиями и 10 точками "Features Total:2, Filtered:1, Selected:0 "). Если просматривать таблицу через менеджер БД - всё ОК. Осталось сообразить, как эту табличку в отчёт вкрячить. Подозреваю, что придётся изучать R-пакеты, связанные с ГИС, я давно уже все отчёты и черновики статей в rmarkdown делаю.
Кстати, русского учебника по SQLite+spatialite (или английского с кучей примеров) так и не нашёл, если знаете, дайте ссылку, пожалуйста.

Re: Пересечение точек и линий (QGIS)

Добавлено: 15 май 2020, 16:57
drrrrr
Про учебники ничего сказать не могу, документация по spaialite с примерами https://www.gaia-gis.it/gaia-sins/spati ... opics.html. Хорошо описаны функции геообработки в документации postgis http://postgis.net/docs/manual-2.5/reference.html