Lấy danh sách các giá trị khác biệt từ trường shapefile bằng cách sử dụng QGIS?


18

Tôi có một shapefile có các tính năng mà tôi có thể lọc bằng cách chỉ định mệnh đề where trong đoạn hội thoại truy vấn. Fx Tôi có một trường có tên 'city_name' và bằng cách nêu 'city_name = "London"' trong mệnh đề chỉ có London được hiển thị. Điều tôi muốn làm bây giờ là tìm nạp tất cả các giá trị trong 'city_name' từ bảng thuộc tính.

Một cái gì đó như thế:

select distinct city_name from [attribute table]

Tôi đã tìm thấy một số công cụ trong QGIS dường như đang xử lý SQL và tôi cũng đã xem nhanh các Plugin khác nhau. Nhưng tôi thất bại trong việc kết nối với cơ sở dữ liệu hoặc tên bảng ... cơ sở dữ liệu nào hoặc bảng nào trong trường hợp đó?

Cuối cùng, tôi muốn xuất danh sách kết quả và sử dụng nó để xử lý thêm.

Tôi đang sử dụng QGIS 1.8.

Câu trả lời:


32

Cập nhật câu trả lời (Phiên bản QGIS> = 2.14)

Kể từ QGIS 2.14 , bạn có thể sử dụng các câu lệnh SQL chạy trên bất kỳ lớp vectơ được tải nào bằng các lớp ảo .

  1. Có lớp được tải trong QGIS, đi đến Lớp> Thêm lớp> Thêm / Chỉnh sửa lớp ảo ;
  2. Trong hộp thoại Tạo lớp ảo, nhập câu lệnh SQL của bạn vào trường Truy vấn. Cái gì đó như:

    CHỌN DISTINCT city_name TỪ layer_name

  3. Đối với tập hình học Không có hình học

  4. Nhấp vào Ok và một bảng sẽ tải trong QGIS với các giá trị duy nhất mong muốn.

Lưu ý: bảng này sẽ được cập nhật nếu các giá trị mới được thêm vào cột city_name.

Câu trả lời kế thừa (Phiên bản QGIS <2.14)

Bạn có một vài lựa chọn để làm những gì bạn yêu cầu.

  1. Nhập shapefile của bạn trong cơ sở dữ liệu Spatialite hoặc Postgis, sau đó bạn có thể truy vấn bảng của mình bằng các câu lệnh SQL hoàn chỉnh;
  2. Sử dụng công cụ Dissolve (Vector> Công cụ xử lý địa lý> Hòa tan), để hòa tan các shapefile của bạn bằng cách sử dụng trường "city_name". Mặc dù là một phương thức lạ, tệp dbf của shapefile kết quả sẽ cung cấp danh sách bạn cần;
  3. Hãy xem plugin thống kê nhóm (1.6) , bạn có thể sử dụng "city_name" làm trường phân loại và nhấn tính toán. Nó sẽ tính toán một số thống kê về từng thành phố, sau đó bạn có thể sao chép kết quả và trích xuất danh sách thành phố.

Tôi vừa nhận thấy rằng, trong Vector> Công cụ phân tích , có một công cụ Danh sách giá trị duy nhất chính xác là những gì người ta cần cho nhiệm vụ này. Rất dễ dàng ... không có cách giải quyết và không cần Plugin.


6

Sử dụng Trình quản lý DB QGIS và truy cập vào shapefile của bạn thông qua 'các lớp ảo'

Sau đó, bạn có thể sử dụng cửa sổ SQL và viết truy vấn của mình:

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


1
Đây là câu trả lời đúng (QGIS 2.14+).
Alexandre Neto


-1

Sử dụng trình tạo truy vấn trong QGIS, đi đến trường tên thành phố trong các trường trong trình tạo truy vấn. Đi đến giá trị, thêm tất cả. Xóa bất kỳ null.

Xây dựng một tập lệnh tương tự như tên thành phố = "london" và tên thành phố = "paris" cho đến khi bạn có danh sách đầy đủ các tên và chạy tập lệnh. Bây giờ tất cả các tên thành phố được chọn. Bạn có thể xuất được chọn dưới dạng tệp hình dạng và nhập vào cơ sở dữ liệu postgresql.

Để sử dụng một phụ trợ postgresql để QGIS cài đặt một ngăn xếp postgresql với geoserver, postgresql và một cơ sở dữ liệu được kích hoạt postgis trong postgresql. Bạn sẽ cần kết nối QGIS với máy chủ. Chơi xung quanh một chút và bạn sẽ tìm ra nó.

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.