Об'єднайте атрибути точкового та лінійного шарів за місцем розташування (найближчої відстані) у QGIS


13

Моя проблема полягає в наступному: у мене є рядок shp (цільовий шар) і точка shp (шар з'єднання). другий (точковий шар) містить атрибут, який я хочу з'єднати з шаром рядка на основі найближчої відстані до лінії. Точки та лінії не перетинаються

Я можу це зробити за допомогою ArcGIS та просторового приєднання (варіант матчу: найближчий), але я не знаю, як досягти цього в QGIS.


3
Існує інструмент для приєднання за місцем розташування, але він не має опції "найближчий". Я не знаю, чи є якесь вирішення. Загалом, будь ласка, оцініть, щоб підтримати розвиток ваших відсутніх, улюблених варіантів / інструментів, саме таким чином користувачі можуть допомогти цій програмі розростатися.
Джованні Мангі

Відповіді:


8

Я не думаю, що для цього є "основна" функція QGIS. Однак встановіть плагін MMQGIS і використовуйте інструмент "відстань концентратора". Оберіть ваші точки як шар "Точки джерела", а рядки - як "Шлях концентраційного центру" та встановіть "Тип форми виводу" на "Лінія до концентратора". Це дасть тобі форму ліній (з довжиною), які з'єднують найближчі функції. Зручно, він також додає ідентифікатор найближчої функції до таблиці атрибутів.

Редагувати / коментувати: Цей підхід працює добре, якщо є менше точок, ніж рядків, інакше ситуація "один на один". Маючи більше очок, ніж рядків, ускладнює речі. Інструмент "Відстань концентратора" додає ідентифікатор функції рядка до таблиці атрибутів точки як "HubName" разом з відстанню між точкою та центром лінії як "HubDist". Якщо точок більше рядків, ніж ліній, потрібна додаткова робота для визначення в кожному підмножині точок (тих кількох записів, пов'язаних з кожним вузлом рядка), який із них є найближчим до кожного рядка та / або який з потрібним набором атрибути для приєднання до рядка.


це слід позначити як відповідь, за умови незначного редагування "рядків" v "пунктів"
Віллі

1
"Відстань концентратора" не є правильним інструментом, якщо критерієм є "найближча відстань до лінії". Код mmqgis показує, що відстань концентратора використовує наближення геометрії "концентратора". Розрахунки відстані (mmqgis_distance) приймають два параметри як параметри. Ось код, який робить наближення геометрії концентратора в mmqgis_library.py: "особливість.geometry (). LimitingBox (). Center ()". Це означає, що центр обмежувальної коробки геометрії використовується замість реальної геометрії. Отже, якщо критерієм має бути "найближча відстань до лінії", більш підходящим буде GRASS v.distance або плагін NNJoin.
Håvard Tveite

5

Для цього можна використовувати функцію GRASS v.distance . У QGIS ви можете отримати доступ до функції через плагін GRASS ( версія Processing наразі не працює). NNJoin плагін QGIS може бути більш простий альтернативою.


3

Плагін NNJoin ніколи не підводив мене і добре працює з великими наборами даних .

Плагіни> Встановити: NNJoin> NNJoin> виберіть вхідний шар та шар приєднання> Потім натисніть приєднатись.

Вивчіть результати нового шару виводу за допомогою таблиці атрибутів. Попередження: переконайтеся, що обидва шари використовують однакову просторову проекцію, інакше результати будуть порожніми.


2

У 2019 році це можливо можливо за допомогою інструменту QGIS 3 Занзібар «Приєднати атрибути до найближчих». Цей інструмент дозволяє знайти найближчу функцію та приєднати до вибраних атрибутів. Можливо, також можна зробити приєднання «один до багатьох», якщо ви вкажете максимальну відстань та максимум найближчих сусідів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.