Sáp nhập các dòng với các điểm cuối hơi khác nhau trong QGIS


22

Trong QGIS, tôi có hai dòng. Các điểm cuối gần nhau, nhưng không hoàn toàn thẳng hàng. Tôi muốn biến hai dòng thành một, với hai điểm cuối được hợp nhất thành điểm giữa.

Gần nhất tôi có thể đến là với "Hợp nhất các tính năng được chọn." Điều đó mang lại cho tôi một tính năng, nhưng nó bao gồm hai dòng khác nhau - không có ranh giới giữa các điểm cuối.

Tôi đang tìm kiếm thứ gì đó tương tự như tính năng Tham gia Đường dẫn của Illustrator (Đối tượng> Đường dẫn> Tham gia).

Liệu QGIS có làm được điều đó không?

Câu trả lời:


12

Trả lời nhanh: không! Không có công cụ nào như vậy để thực hiện thao tác đó trực tiếp trên lớp (plugin "Tham gia hai dòng" yêu cầu giao nhau).

Bạn có thể làm điều đó cho một lớp rất đơn giản bằng cách chuyển các dòng thành điểm (trích xuất các nút) sau đó nối với points2one (đầu ra dòng) nhưng điều này sẽ chậm hơn so với chỉ chỉnh sửa bằng tay:

  1. Đảm bảo bạn đã bật (Cài đặt | Tùy chọn chụp ...) cho lớp đường của bạn (5 pixel hoạt động tốt với tôi).
  2. Tạo một dòng mới từ điểm cuối này đến điểm cuối khác.
  3. Chọn tất cả ba dòng (hai dòng gốc + dòng mới) và hợp nhất chúng (Chỉnh sửa | Hợp nhất các tính năng được chọn hoặc nút thanh công cụ).

1
Cảm ơn. Tôi chỉ có một vài dòng để hợp nhất, vì vậy việc này rất nhanh chóng và dễ dàng. (Câu trả lời của @Michael Markieta có vẻ phù hợp hơn với các tình huống phức tạp.)
Evan

14

Bạn có thể thực hiện điều này với sự kết hợp của QGIS và GRASS.

  1. Nhập lớp vectơ của bạn vào bộ bản đồ GRASS (Grass | File> Nhập dữ liệu vectơ)
  2. Mở bộ bản đồ của bạn trong QGIS (QGIS | Plugins> GRASS> Mở bộ bản đồ)
  3. Thêm lớp vectơ từ bộ bản đồ GRASS của bạn vào dự án QGIS của bạn (QGIS | Plugins> GRASS> Thêm lớp vectơ GRASS)
  4. Sử dụng v.clean.snap (QGIS | Plugins> GRASS> Mở công cụ GRASS> Danh sách mô-đun> v.clean.snap)

Điều chỉnh v.clean.snap 'ngưỡng' để đạt được đỉnh chụp phù hợp trong toàn bộ khu vực nghiên cứu.


10

Tôi giả sử bạn muốn tham gia hai phân đoạn thành một dòng. nhập mô tả hình ảnh ở đây

Đây là cách tôi đã làm nó ...

  • Cho phép chỉnh sửa.
  • Bật chụp nhanh (Cài đặt -> Tùy chọn chụp ...) nhập mô tả hình ảnh ở đây
  • Chọn công cụ nút nút.nhập mô tả hình ảnh ở đây
  • Nhấp đúp chuột vào gần cuối của một trong các dòng để thêm một nút. nhập mô tả hình ảnh ở đây
  • Kéo nút ở cuối để gắn vào cuối dòng khác nhập mô tả hình ảnh ở đây
  • Chọn cả hai dòng
  • Hợp nhất các thuộc tính của chúng (bạn không thể tạo một dòng nhiệt nếu chúng có các thuộc tính khác nhau)nhập mô tả hình ảnh ở đây
  • Hợp nhất hai tính năngnhập mô tả hình ảnh ở đây

Điều này sẽ dẫn đến một dòng. nhập mô tả hình ảnh ở đây


Tất cả đều tốt. Nhưng làm thế nào về một bộ dữ liệu của 22.000 dòng? Tôi không thể thực hiện việc này một cách thủ công ...
FaCoffee


3

Nếu bạn có nghĩa là tính năng duy nhất của bạn bao gồm MULTILINESTRING thay vì LINESTRING duy nhất thì bạn có thể dễ dàng sửa nó nếu bạn đang sử dụng cơ sở dữ liệu Postgis:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Nếu bạn chỉ muốn 1 hàng làm điều này, bạn nên thêm WHERE id = your_row_id.


2

Cũng có người có thể thử:

  1. lưu .shp dưới dạng .dxf
  2. mở .dxf với DraftSight
  3. tham gia các bộ phận polyline
  4. mở lại .dxf với qgis và lưu dưới dạng .shp
  5. từ menu Vector -> công cụ Hình học -> Đường đến đa giác

2

Tôi vừa thực hiện điều này với QGIS 3.4.0, sử dụng plugin Tham gia nhiều dòng được đề cập bởi tnagel ở trên (cài đặt trong menu Vector> Tham gia nhiều dòng). Hoạt động tốt để tham gia khoảng 60 đoạn đường nhỏ vào khoảng 20 đường nhỏ. Bạn càng có nhiều mảnh vỡ và diện tích chúng bao phủ càng lớn thì điều này càng ít thực tế, vì bạn phải xem kết quả cho các vấn đề (tnagel có thể có một trong những vấn đề tôi mô tả).

Bạn chọn các dòng bạn muốn tham gia, nhấp vào mục menu và nó tham gia chúng (bạn có thể chọn bao nhiêu dòng tùy thích, nhưng ...), ngay cả khi các đầu cách nhau một dặm, bạn sẽ có được một đường thẳng từ kết thúc từ đầu này đến đầu kia kết nối chúng, vì vậy hãy đảm bảo rằng các đầu của bạn đủ gần để bạn hài lòng với kết quả (Tôi đã sử dụng mẹo trong một bài đăng khác để đánh dấu các đầu của dòng của tôi bằng các điểm đánh dấu, vì vậy chúng rất dễ dàng để xem (Thuộc tính> Symbology> thêm một dòng đánh dấu và làm cho biểu tượng đủ lớn để dễ dàng nhìn thấy> chọn nút radio "chỉ trên đỉnh cuối cùng" (và nếu bạn muốn, hãy thêm một dòng đánh dấu khác với một biểu tượng khác và chọn "trên đầu tiên chỉ đỉnh ")).

Ngoài ra, dòng rõ ràng có thể được định hướng. Vì vậy, bạn phải xem (ví dụ) rằng đầu cực nam của dòng A không nối với đầu cực nam của dòng B bên dưới nó (một đường thẳng dài khác mà bạn không muốn nó).

Tôi đã tìm thấy khi điều đó xảy ra, tôi có thể "hoàn tác" và sử dụng "Dòng ngược" trong Thanh công cụ xử lý nâng cao để lật hướng của một dòng từ đầu này sang đầu kia (không thay đổi vị trí của dòng, chỉ cần lật đầu dòng với cuối dòng), sau đó nối các dòng lại.

Một điều tốt về điều này là các thay đổi / chỉnh sửa của bạn được lưu vào lớp hiện tại của bạn để không cần lưu kết quả dưới dạng shapefile mới (tạo bản sao lưu trước).

Tôi liên tục ngạc nhiên về công việc được thực hiện bởi các nhà phát triển cốt lõi và plugin của QGIS. Cho thấy những gì con người xây dựng thông minh có thể làm khi họ quyết định làm việc cùng nhau. Cảm ơn bạn!


0

Sử dụng OpenJUMP (phiên bản Plus):

  1. Tệp> Mở tệp
  2. Plugin> Cấu trúc liên kết> Làm sạch cấu trúc liên kết mạng ...
  3. Nhấp chuột phải vào lớp mới (đã sửa): Lưu tập dữ liệu dưới dạng ....

Đây là kết quả: nhập mô tả hình ảnh ở đây


0

Trong trường hợp của tôi, các dòng ở các lớp khác nhau và với các thuộc tính khác nhau. Tôi đã hợp nhất các lớp với mmqgis và sau đó hợp nhất các dòng trong bước tiếp theo với kỹ thuật chụp và hợp nhất các dòng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.