Cần nhanh chóng thêm nhiều lớp từ nhiều thư mục vào dự án QGIS


12

Tôi đã tải xuống một số tệp Zip hình ảnh (nội dung của mỗi tệp là jp2, jpg, jpw, xml, htm và .dbf, .prj, .sbn, .sbx, .shp, .shx) và muốn nhanh chóng thêm hình ảnh này vào dự án làm việc của tôi trong QGIS 2.6.1. Tôi đang cố gắng tránh phải điều hướng và thêm từng tệp riêng biệt. Vì mỗi tệp nằm trong một thư mục khác nhau, tôi không thể tìm cách thêm nhiều tệp cùng một lúc.


Vì vậy, bạn có tệp zip trong thư mục của mình hoặc bạn đã trích xuất nội dung của tệp zip? Tôi đang xây dựng một câu trả lời cho trường hợp sau. Tôi sợ trường hợp trước sẽ yêu cầu một chút kịch bản (Python).
Germán Carrillo

Tôi đã trích xuất nội dung.
reevesii

Câu trả lời:


23

Những gì bạn cần là plugin QGIS Tải tất cả chúng . Ngoài việc tải các tệp từ một số thư mục cùng một lúc, bạn có thể:

  • Phản ánh cấu trúc thư mục trong Mục lục của QGIS (bằng các nhóm lớp lồng nhau).
  • Áp dụng các bộ lọc chữ và số để bạn chỉ cần tải các lớp phù hợp với bộ lọc của mình (nghĩ về các biểu thức thông thường).
  • Chỉ tải một số dạng hình học hoặc raster nhất định (ví dụ: chỉ các vectơ đa giác hoặc raster Multiband).
  • Chỉ tải một số phần mở rộng tệp nhất định (ví dụ: chỉ các tệp .shp).
  • Chỉ tải các lớp nằm bên trong hoặc giao nhau với một khung giới hạn nhất định.

và hơn thế nữa. Hãy xem https://github.com/gacarrillor/loadthemall để biết thêm chi tiết.

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


@ Germán Carrillo Có vẻ như là plugin hoàn hảo cho nhu cầu của tôi, nhưng khi tôi thử tải các tệp thì tôi gặp lỗi: "Không có tệp KML nào để tải từ thư mục cơ sở với bộ lọc này. Thay đổi các tham số đó và thử lại". Tôi đang sử dụng QGIS 2.14.2, tất cả các bộ lọc đều bị tắt và bản đồ tôi chọn chứa hai bản đồ với mỗi tệp một kml (chỉ để kiểm tra, tôi có một tập dữ liệu lớn hơn để nhập).
Hannes Ledegen

@HannesLedegen Bạn đã thử với bộ lọc 'Interesects' thay vì 'Chứa' chưa? Nếu điều đó không hiệu quả, vui lòng mở một vấn đề mới trong trang GitHub của dự án, mô tả mọi thứ một cách chi tiết.
Germán Carrillo

2

Thay thế cho việc sử dụng plugin, bạn có thể cung cấp cho lệnh Thêm lớp danh sách các tệp được phân cách bằng dấu chấm phẩy. Bạn có thể tạo một danh sách như vậy theo cách sau:

cd /d <Path_to_the_directory_where_your_files_are>
dir *.shp /s /b >All.txt

Điều này cung cấp cho bạn một tệp có tên All.txt, chứa các đường dẫn đến tất cả các tệp có phần mở rộng cụ thể (bạn có thể sử dụng mặt nạ khác nhau tùy thuộc vào các tệp bạn có), trong đó mỗi tệp nằm trên một dòng mới.

D:\Data\01\data01_1.shp
D:\Data\01\data01_2.shp
D:\Data\02\data02_1.shp
D:\Data\02\data02_2.shp

Sau đó, chỉ cần thay thế tất cả các dòng mới bằng ;cách sử dụng trình soạn thảo văn bản (như Notepad ++ ) và dán kết quả vào Add Vector Layer...hộp thoại.

Đối với Notepad ++, bạn cần thay đổi chế độ thay thế thành Extended và thay thế \r\nbằng ;. Bạn sẽ nhận được một tập tin trông như thế này:

D:\Data\01\data01_1.shp;D:\Data\01\data01_2.shp;D:\Data\02\data02_1.shp;D:\Data\02\data02_2.shp

0

Trên Linux, bạn có thể trích xuất danh sách các .shptệp và cung cấp trực tiếp vào hộp thoại "Nhập Vector":

#on the command line
ls /home/yourpath/*/*shp|tr "\n" '@'|sed 's/@/" "/g'|sed 's/^/"/g'

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

Tôi thấy điều này hữu ích trong Docker Docker , vì lý do nào đó, plugin "Load Them All" không hiển thị hộp thoại của 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.