Визначте точки у файлі форми, які не мають іншої точки в межах 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.