Tham gia các thuộc tính từ điểm gần nhất trong QGIS?


29

Tôi có hai lớp với các điểm, gọi chúng là A và B, mỗi lớp có thuộc tính khác nhau.

Đối với mỗi điểm trong AI muốn tham gia tất cả các thuộc tính từ điểm gần nhất trong B.

Lý tưởng nhất điều này cũng sẽ bao gồm một trường đo khoảng cách giữa cả hai điểm.

Tôi biết cách thực hiện điều này trong ArcGIS: nhấp chuột phải vào lớp A> tham gia và liên quan> tham gia, sau đó nối dữ liệu dựa trên vị trí không gian và chọn tham gia các thuộc tính từ điểm gần nhất.

Tôi không thể tìm thấy chức năng tương tự trong QGIS. Bất kỳ con trỏ?

Câu trả lời:


26

Sử dụng "Ma trận khoảng cách" bạn có thể tính điểm gần nhất. Hãy chắc chắn rằng cả hai lớp đều nằm trong cùng một CRS! Sau đó, bạn có thể tải kết quả và sử dụng chúng để tham gia bảng A và B.

Trong "Ma trận khoảng cách" đã chọn: "Ma trận khoảng cách tuyến tính" và "chỉ sử dụng các điểm mục tiêu k gần nhất: 1"

nhập mô tả hình ảnh ở đây

Tải CSV bằng cách sử dụng "Thêm lớp Vector" và tham gia các lớp trong thuộc tính lớp của lớp A - tab tham gia.

nhập mô tả hình ảnh ở đây

Và kết quả:

nhập mô tả hình ảnh ở đây


Nếu bạn muốn có khoảng cách giữa các điểm trong một lớp bằng ma trận khoảng cách, bạn nên thay đổi k = 2, vì vấn đề đã biết này: hub.qgis.org/issues/4761
Celia

1
@underdark Có vẻ như giải pháp này không hoạt động nữa. Tôi có thể tạo matrix.csv và nối nó với lớp đầu tiên của tôi. Trong ví dụ của bạn, bạn đã thêm một phép nối thứ hai trong đó bạn đính kèm lớp thứ hai vào lớp thứ nhất, dựa trên TargetID từ ma trận. Nhưng các trường đã tham gia không hiển thị cho tôi trong hộp thoại, vì vậy tôi không thể chọn TargetID. Tất nhiên trước tiên tôi có thể lưu_as lớp và sau đó tham gia lần thứ hai ...
Bernd V.

13

Các NNJoin Plugin nên thực hiện công việc. Đối với mỗi tính năng của lớp đầu vào, nó thêm tất cả các thuộc tính của tính năng gần nhất trong lớp tham gia và cũng thêm một thuộc tính khoảng cách với khoảng cách đến tính năng này.


Hoạt động hoàn hảo. Nhanh hơn câu trả lời được chấp nhận. Lưu ý rằng câu trả lời được chấp nhận nếu từ năm 2011
juminet

Ít nhất, hôm nay tốt hơn nhiều so với câu trả lời được chấp nhận. Nhanh hơn nhiều.
cag

4

Nếu bạn có thể sống chỉ bằng cách tham gia một thuộc tính duy nhất từ ​​lớp "B" của mình, hãy xem công cụ "Khoảng cách Hub" từ plugin mmqgis .

Nếu bạn cần phần còn lại của các thuộc tính "B", thì bạn có thể tham gia phần còn lại của các thuộc tính "B" trở lại lớp này.

Bạn cũng có thể tùy ý tạo các dòng từ A đến B nếu muốn. Điều này rất hữu ích để hình dung khoảng cách và hướng giữa các tính năng liên quan.


0

Một cách tiếp cận khác bằng cách sử dụng plugin refFifts .

(1) Bộ dữ liệu mẫu

nhập mô tả hình ảnh ở đây

(2) Mở bảng thuộc tính của lớp có nhiều tính năng hơn ( points_blớp trong ví dụ này) để không bỏ sót cặp nào. Tạo các lĩnh vực mới.

  • Trường ID của lớp khác: geomnearest('points_a', 'id_a')
  • Trường khoảng cách của các cặp được phát hiện: geomnearest('points_a', '$distance')

nhập mô tả hình ảnh ở đây


-6

Sử dụng Vector QGIS 1.7 > Quản lý dữ liệu> Tham gia thuộc tính theo vị trí

nhập mô tả hình ảnh ở đây


3
Tôi cũng nghĩ về điều này, nhưng khi tôi thử nghiệm nó, nó chỉ hoạt động cho các kết hợp chính xác, chẳng hạn như đa giác điểm. Nó không tìm thấy điểm gần nhất đến điểm khác. Đã thử nghiệm vào v1.7
RyanDalton

1
Tôi không có trận đấu nào. Điều này không hoạt động.
Fred
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.