Лінії злиття з дещо різними кінцевими точками в QGIS


22

У QGIS у мене є два рядки. Кінцеві точки розташовані поруч, але не зовсім вирівняні. Я хотів би перетворити два рядки в одну, а дві кінцеві точки об'єднані в середину.

Найближче до мене вдалося підійти - "Об’єднати вибрані функції". Це дає мені одну особливість, але вона складається з двох роз'єднаних ліній - між кінцевими точками немає лінії.

Я шукаю щось, що поводиться аналогічно функції Join Paths Illustrator (Object> Paths> Join).

Чи робить це QGIS?

Відповіді:


12

Швидка відповідь: ні! Немає такого інструменту, щоб виконувати цю операцію безпосередньо на шарі (плагін "Приєднати дві лінії" вимагає перетину).

Ви можете зробити це для дуже простого шару, повернувши рядки до точок (витягнути вузли), потім з'єднавшись з пунктами2 (виведення рядка), але це буде МНОГО повільніше, ніж просто редагування вручну:

  1. Переконайтеся, що для вашого рядкового шару увімкнено оснащення (Параметри | Параметри оснащення ...) (5 пікселів добре працює для мене).
  2. Створіть новий рядок від однієї кінцевої точки до іншої.
  3. Виберіть усі три рядки (дві оригінальні лінії + нова) та об'єднайте їх (Редагувати | Об'єднати вибрані функції або кнопку панелі інструментів).

1
Спасибі. У мене було лише кілька ліній для злиття, тому це було швидко і легко. (@Michael Markieta відповідь здавалася краще підходить до складних ситуацій.)
Еван,

14

Ви можете досягти цього за допомогою комбінації QGIS та GRASS.

  1. Імпортуйте векторний шар у набір карт GRASS (Трава | Файл> Імпорт векторних даних)
  2. Відкрийте свій набір карт у QGIS (QGIS | Плагіни> GRASS> Відкрити набір карт)
  3. Додайте векторний шар із набору карт GRASS до проекту QGIS (QGIS | Плагіни> GRASS> Додати векторний шар GRASS)
  4. Використовуйте v.clean.snap (QGIS | Плагіни> GRASS> Відкрити інструменти GRASS> Список модулів> v.clean.snap)

Відрегулюйте «поріг» v.clean.snap, щоб досягти належної вершини, що перетискається, у всій області дослідження.


10

Я припускаю, що ви хочете об'єднати два сегменти рядка в один рядок. введіть тут опис зображення

Ось як я це зробив ...

  • Увімкнути редагування
  • Увімкніть прив'язку (Налаштування -> Опції оснащення ...) введіть тут опис зображення
  • Виберіть інструмент вузла вузла.введіть тут опис зображення
  • Двічі клацніть близько до кінця одного з рядків, щоб додати вузол. введіть тут опис зображення
  • Перетягніть вузол в кінці, щоб переключитися на кінець іншого рядка введіть тут опис зображення
  • Виберіть обидва рядки
  • Об’єднайте їх атрибути (не можна зробити терміном один рядок, якщо вони мають різні атрибути)введіть тут опис зображення
  • Об’єднайте дві функціївведіть тут опис зображення

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


Все добре. Але як щодо набору даних 22000 рядків? Я не можу робити це вручну ...
FaCoffee


3

Якщо ви маєте на увазі, що ваша окрема функція складається з МНОГОПРИЄМСТВЕННЯ замість одного ЛІНІСТРИНГУ, то ви можете легко виправити це, якщо ви використовуєте базу даних Postgis:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Якщо ви хочете, щоб це робив лише 1 рядок, слід, звичайно, додати WHERE id = your_row_id.


2

Також хтось може спробувати:

  1. зберегти .shp як .dxf
  2. відкрити .dxf з DraftSight
  3. з'єднати полілінійні деталі
  4. знову відкрийте .dxf з qgis і збережіть як .shp
  5. від меню "Вектор" -> Інструменти геометрії -> Лінії до багатокутників

2

Я щойно робив це за допомогою QGIS 3.4.0, використовуючи плагін Join Multiple Lines, згаданий tnagel вище (встановлюється під меню Vector> Join Multiple Lines). Добре працював, щоб об’єднати близько 60 фрагментів ліній траси в близько 20 ліній сліду. Чим більше у вас фрагментів і чим більша площа, яку вони охоплюють, тим менш практично це, оскільки вам доведеться спостерігати за результатами проблем (у tnagel, можливо, була одна з описаних нами проблем).

Ви вибираєте рядки, до яких хочете приєднатися, натискаєте на пункт меню, і він приєднується до них (ви можете вибрати стільки рядків, скільки хочете, але ...), навіть якщо кінці милі одна від одної, ви отримуєте пряму лінію з кінець одного до кінця іншого, що з'єднує їх, тож переконайтесь, що ваші кінці досить близькі, щоб ви були задоволені результатами (я підказав в іншому дописі, щоб позначити кінці моїх рядків маркерами, щоб вони були легкими побачити (Властивості> Символогія> додайте маркерну лінію та зробіть символ достатньо великим, щоб легко побачити> виберіть перемикач "лише за останньою вершиною" (а якщо потрібно, додайте ще одну лінію маркера з іншим символом та виберіть "спочатку" тільки вершина ")).

Також лінії, мабуть, можуть бути спрямованими. Отже, ви повинні спостерігати (наприклад), що самий південний кінець лінії А не з'єднувався з самим південним кінцем лінії В під ним (ще одна довга пряма лінія, де ви цього не хочете).

Я виявив, що це сталося, я міг "скасувати" і застосувати "Зворотну лінію" на панелі інструментів розширеної обробки, щоб перевернути напрямок лінії з одного кінця на інший (не змінюється, де лінія, просто перевертає початок рядка з кінцем рядка), потім знову приєднайтесь до рядків.

Хороша річ у цьому - ваші зміни / правки зберігаються у вашому існуючому шарі, тому не потрібно зберігати результати як новий файл форми (спочатку зробіть резервну копію).

Я постійно вражений роботою, яку виконують розробники ядра та плагінів QGIS. Показує, що можуть зробити розумні конструктивні люди, коли вони вирішили працювати разом. Дякую!


0

Використання OpenJUMP (Plus Edition):

  1. Файл> Відкрити файл
  2. Плагіни> Топологія> Очищення топології мережі ...
  3. Клацніть правою кнопкою миші на новому шарі (виправлено): Збережіть набір даних як ....

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


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