Tham gia nhiều bản ghi vào một tính năng bằng cách sử dụng QGIS?


25

Tôi đang cố gắng tạo một liên kết / liên quan trong QGIS nơi tôi có một hình dạng các tòa nhà và tôi muốn tham gia một bảng không gian (.csv) có chứa những người làm việc trong mỗi tòa nhà. Vì vậy, tôi có nhiều bản ghi trong bảng mà tôi muốn có thể tham gia vào các tính năng duy nhất của mình trong shapefile. Tôi chỉ có thể chạy tham gia vào QGIS nơi bản ghi đầu tiên được nối với tính năng shapefile (nghĩa là tòa nhà) nhưng các bản ghi tiếp theo sẽ bị xóa.

Ai đó có thể cho tôi biết làm thế nào để hoàn thành việc tham gia / liên quan này trong QGIS không?


Tôi đã có một câu hỏi tương tự ở đây gis.stackexchange.com/questions/5797/ Plugin RT SQL và các plugin eVis đã được đề xuất. Tôi đã sử dụng phích cắm eVis nhưng đó không phải là giải pháp lý tưởng.
Ando

2
Tôi đang có cùng một vấn đề và thực sự tham gia các bảng làm việc. Mẹo nhỏ là nối các bảng có nhiều giá trị vào bảng với một giá trị duy nhất (ở đây, từ người này sang người khác, thay vì cách khác). Vấn đề, theo như tôi trải nghiệm, là bằng cách này, bạn không thể tìm kiếm và xuất kết quả dưới dạng tệp tham chiếu địa lý, đó là một bugger (ít nhất là với tôi). Bất kỳ cách nào để bỏ qua vấn đề này? marc

Kết quả cuối cùng bạn muốn đạt được là gì? Ngay cả khi bạn quản lý để tham gia, bạn có muốn trình bày nó trên bản đồ không? Làm thống kê? Tùy thuộc vào đó, các quy trình công việc khác nhau có thể được theo dõi, nhưng sử dụng cơ sở dữ liệu thường là một ý tưởng tốt nếu bạn muốn thực hiện tham gia.
johanvdw

Câu trả lời:


15

Tôi đã giải quyết vấn đề này bằng cách sử dụng QGIS 1.7.0 bằng cách trước tiên lưu lớp vectơ dưới dạng bảng giá trị được phân tách bằng dấu phẩy với trường hình học được chuyển đổi thành văn bản nổi tiếng. Để thực hiện việc này, trường lớp của hộp thoại "Lưu lớp vectơ dưới dạng ..." phải đọc GEOMETRY = AS_WKT để tạo trường văn bản nổi tiếng của hình học với cột có tên WKT.

Sau đó, tệp hình học CSV đã được nối với bảng thuộc tính không hình học trong liên kết một-nhiều dưới tab thuộc tính tham gia của bảng thuộc tính không hình học.

Kết nối được lưu dưới dạng tệp CSV hình học khác.

Khi bảng này được mở trong QGIS, mỗi bản ghi thuộc tính được biểu diễn bằng hình học vectơ thích hợp của nó.

Khi thực hiện tất cả những điều này, tôi phát hiện ra rằng Plugin văn bản được phân tách không cần thiết để mở tệp hình học CSV nếu dấu phân cách là dấu phẩy và trường hình học WKT được đặt tên là WKT.

Để biết chi tiết về cách thực hiện, vui lòng xem hướng dẫn của tôi tại http://georgiawildlife.com/node/2849 .


Cách tiếp cận tốt, tôi đã làm một điều tương tự chỉ bằng cách sử dụng ogr2ogrđể tạo các tệp CSV từ Shapefiles. Sau đó, một tập lệnh R đơn giản để hợp nhất các tệp trên trường chung tôi muốn và ghi lại vào CSV. Sau đó, ogr2ogrmột lần nữa để tạo shapefile hợp nhất.
vpipkt

1
Điều này có thể được đánh giá cao nhất, nhưng quá trình này có nghĩa là được trả lời bởi @underdark bên dưới. Đây là một hack và hoàn toàn không phải là tùy chọn tốt nhất, nó chậm và không hiệu quả và dẫn đến các tệp lớn hơn và nhiều bước hơn.
nittyjee

10

Các phép nối được tạo trong các lớp phù hợp chỉ thêm các cột vào các tính năng hiện có. Nếu lớp vectơ chỉ có 160 tính năng, tham gia không thể tăng số lượng tính năng!

Sử dụng tính năng lớp ảo thay thế. Nó cung cấp các phép nối giống như SQL / cơ sở dữ liệu. Để biết ví dụ, hãy xem bài đăng gần đây của tôi: Bội số nhỏ cho bản đồ luồng OD sử dụng các lớp ảo

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


7

Trong QGIS 1.7 có một công cụ mới cho Joins (bạn tìm thấy nó trong các thuộc tính vectơ).

Các bảng hình học bây giờ có thể được thêm vào một dự án như bất kỳ lớp (vectơ) nào khác.


7

Bắt đầu từ phiên bản 2.2 QGIS hỗ trợ quan hệ một-nhiều. Xác định chúng trong Thuộc tính dự án, không phải thuộc tính lớp Vector. Và sau đó các bản ghi liên quan sẽ xuất hiện trong Bảng thuộc tính của lớp hoặc Xác định kết quả thông qua biểu mẫu.

Xem câu trả lời và liên kết để hướng dẫn tốt ở đây .


4

Hãy tham gia vào LibreOffice Base.

Bạn không thể vượt qua thực tế là bạn đang cố gắng quản lý mối quan hệ 1 đến nhiều.

Đối với không không gian đến không không gian, nó là giá trị nỗ lực để tìm hiểu. Tôi thấy mẹo lớn nhất là đảm bảo các trường thuộc tính tham gia có chính xác các thuật ngữ giống nhau.

Mở dữ liệu định vị không gian dưới dạng một lớp trong QGIS, sau đó bạn chọn tất cả các bản ghi trong bảng thuộc tính trong QGIS (lựa chọn rõ ràng, lựa chọn đảo ngược) và sao chép chúng vào một trang tính mới trong LibreOffice Calc. Bạn sẽ tìm thấy trường đầu tiên là WKT, đây là một mô tả về tính năng có thể được sử dụng phổ biến trong GIS. Calc sẽ cung cấp cho bạn một hộp thoại để nhập bảng đã dán, chọn tab được phân cách, đảm bảo dấu phẩy không bị đánh dấu vì nó sẽ nhai trường WKT thành bit. Sau đó làm nổi bật bảng này trong Calc, chuyển sang Base, tô sáng biểu tượng Bảng ở bên trái và dán. Base sẽ đi qua một hộp thoại để nhập bảng. Trường WKT có thể được giữ lại thông qua phép nối và khi tệp được nhập trở lại vào QGIS dưới dạng .csv, chúng được sử dụng để định vị lại các tính năng. Chỉ cần nhớ chiếu.

Bằng cách đó, bạn sẽ có toàn quyền kiểm soát tham gia và có thể thực hiện theo cách "đảo ngược". Để thực hiện các phép nối trong Base, đảm bảo trường dữ liệu duy nhất (1) là khóa chính và sau đó bạn trỏ nó vào "nhiều" nếu bạn quen thuộc với khái niệm 1 đến nhiều hoặc 1 đến n. Tham gia được thiết lập bằng cách tạo mối quan hệ | CÔNG CỤ |. Như tôi đã đề cập, có lẽ bạn sẽ muốn đá ai đó khi bạn tìm thấy các trường tham gia có cùng thông tin nhưng đã sử dụng văn bản hoặc cú pháp khác nhau để thể hiện nó.

thứ


2

Tôi không nghĩ rằng điều này có thể liên kết các bảng với mối quan hệ 1 đến nhiều trong QGIS. Thay thế, bạn có thể muốn thử gvSIG. Tại đây bạn có thể tạo 1 đến nhiều liên kết. Sau khi tạo liên kết, chọn một tính năng trong bản đồ sẽ làm nổi bật tất cả các bản ghi liên quan trong bảng được liên kết.


1
Kể từ khi giới thiệu các lớp ảo, câu trả lời này không còn đúng nữa.
underdark
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.