Визначте точки у файлі форми, які не мають іншої точки в межах x км за допомогою QGIS


11

Це, мабуть, наївне питання, але я намагаюся як новий користувач QGIS.

У мене дуже великий файл файлів (275 000 балів, але можна розбити це приблизно на 10 субрегіонів, якщо це потрібно для швидшої обробки).

Я хочу визначити всі точки, які не мають іншої точки в межах 200 метрів, а потім кодувати кожну з цих точок зі значенням "унікальний" у полі файлу.

Для всіх інших точок, які є частиною локальних кластерів, я хочу кодувати їх як "кластеризовані".

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

Наразі мені не вдається досягти кроку 1, тому будь-яка допомога буде вітатися.

Відповіді:


0

Ви також можете спробувати самостійне приєднання, використовуючи плагін NNJoin в QGIS.

Для кожної функції вхідного шару він знайде найближчу особливість (виключаючи себе у разі самостійного приєднання) та включить відстань та всі атрибути найближчої функції в генерованому наборі даних. На ваш набір даних знадобиться певний час (я спробував за допомогою точного набору даних приблизно з 175000 функцій, і це займе кілька хвилин ...).


9

Ви можете використовувати вектор> Інструменти аналізу> Матриця відстані та об'єднання, щоб досягти того, що ви просите.

Я буду використовувати для прикладу рівень зразків даних qgis . Це невеликий набір даних, тому я не впевнений, як це пройде з 275000 точковим файлом.

1. Створіть матрицю відстані за допомогою шару як призначення, так і цілі.

Не забудьте поставити галочку "Використовувати лише найближчі (k) цільові точки" та встановити її на 1.

введіть тут опис зображення

2. Відкрийте CSV з додаванням обмеженого шару тексту

Виберіть "Кома" як роздільник, а визначення геометрії встановіть як "Геометрію"

введіть тут опис зображення

3. Створіть з'єднання у вихідному шарі за допомогою новоствореної таблиці

введіть тут опис зображення

4. Використовуйте калькулятор поля, щоб заповнити поле потрібними значеннями

Через з'єднання ми тепер маємо доступ до значень таблиці відстаней з таблиці атрибутів аеропортів, тому досить легко створити нове поле та заповнити його "кластеризованими" та "унікальними" значеннями залежно від значень матриці відстані . через мої дані прикладу я використав значення 1200000 (1200 км), ви повинні адаптувати його до вашого випадку (200).

введіть тут опис зображення

Зрештою, ваш шар повинен мати нове поле під назвою point_type з різними значеннями відповідно до мінімальної відстані до найближчої точки.

введіть тут опис зображення


Це виглядає як елегантне рішення. Однак у мене є одне ускладнення. Я знаю, що є деякі точки, які мають ІДЕНТИЧНЕ розташування (вони є результатом синонімів імен під час збору оригінальних даних). В одному випадку я визначив 3 в одній точці. Я думаю, що ваше рішення передбачає (розумно), що всі точки розташовані однозначно. Чи є якийсь очевидний спосіб я екранувати моє покриття, щоб спочатку усунути точки одного місця?
Лі Беттеней

@LeighBettenay Якщо ця відповідь стосується вашого оригінального питання, то, я думаю, ви повинні прийняти це (зелений галочок), щоб винагородити зусилля, які відповідали, та дослідити / поставити вашу додаткову вимогу як нове запитання. +1 за чудове перше запитання!
PolyGeo

@PolyGeo Вибачте, я абсолютно новий в цьому форумі і не знаю протоколу. Щасливий "зелений галочок" чудова відповідь, але, на жаль, не знаю як!
Лі Беттенай

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