Tự động tạo hình ảnh bản đồ với các phong cách khác nhau trong QGIS? [đóng cửa]


9

Tôi đã có một bản đồ đơn giản trong QGIS, chỉ chứa 1 lớp bao gồm hơn 10 tính năng. Bây giờ tôi cần (lập trình) tạo khoảng 200 hình ảnh bản đồ JPEG khác nhau của cùng một khu vực. Mỗi bản đồ nên có phạm vi bản đồ rất giống nhau và tất cả các tính năng có thể nhìn thấy. Tuy nhiên, các tính năng nên có bộ màu khác nhau trong mỗi bản đồ được tạo. Cụ thể, tôi có một tệp CSV chứa các màu được phân loại cho từng tính năng (1 dòng cho mỗi hình ảnh, 1 cột và màu cho mỗi tính năng), đại loại như thế này:

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

Kế hoạch hiện tại của tôi là sử dụng Perl hoặc tương tự tương tự để tạo 200 tệp QML khác nhau dựa trên tệp CSV này. Sau đó, tôi dự định viết một kịch bản Python để

  1. Lặp qua các tệp QML
  2. Mở từng tệp QML, từng tệp một và áp dụng kiểu lớp từ nó
  3. Mở trình soạn thảo bản đồ và lưu tệp hình ảnh raster
  4. Đóng trình soạn thảo bản đồ và nhảy vào tệp QML tiếp theo

Bây giờ tôi đang yêu cầu bất kỳ đầu vào liên quan:

  • Điều này có thể được thực hiện trong QGIS + Python không?
  • Bất kỳ cách nào tốt hơn để đạt được mục tiêu của tôi?
  • Gợi ý về bất kỳ mã nguồn hoặc plugin hiện có để đạt được điều này?

Câu trả lời:


21

Điều này có thể có trong QGIS mà không cần lập trình python, nhưng bạn sẽ cần một ảnh chụp nhanh phát triển hiện tại của QGIS 2.6 vì nó phụ thuộc vào các tính năng được thêm vào từ 2.4 được phát hành. Đây là các bước cần thiết:

  • Thiết lập các lớp bản đồ của bạn như mong muốn (bỏ qua màu sắc của các tính năng sẽ có màu sắc động)

  • Tạo một nhà soạn nhạc in mới. Thêm một mục bản đồ vào bố cục và thiết lập phạm vi của nó như mong muốn.

  • Nhập tệp CSV của bạn có chứa màu sắc tính năng đầu ra bản đồ mong muốn

  • Trong trình soạn thảo in, đặt lớp CSV đã nhập thành "lớp phủ bản đồ" (tìm tab "Tạo thế hệ"). (Nếu bạn đã xuất bản đồ ngay bây giờ, bạn sẽ nhận được 200 bản sao của cùng một bản đồ ...)

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

  • Tiếp theo, bạn cần thiết lập các tính năng của mình để chúng được tạo kiểu với các màu được liệt kê trong tệp CSV của bạn. Điều này được thực hiện thông qua nút "Thuộc tính được xác định dữ liệu" ở cuối tab kiểu của lớp:

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

  • Bạn sẽ cần đánh dấu thuộc tính "Màu" và sau đó nhấp vào nút "E" để mở trình chỉnh sửa biểu thức.

  • Biểu thức sẽ giống như thế này:

    attribute(  $atlasfeature , 'A' )
    

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

  • Về cơ bản, biểu thức này sẽ lấy giá trị được lưu trữ trong cột "A" từ tính năng tập bản đồ hiện tại. Vì trong trường hợp của bạn, giá trị này sẽ là một màu (ví dụ # FF0000), tính năng sẽ được tạo kiểu bằng cách sử dụng màu này. (Biểu thức này là phần dựa trên QGIS> 2.4 - chức năng "thuộc tính" đã được thêm sau khi 2.4 được phát hành).

  • Định kiểu các tính năng khác theo cách tương tự, nhưng sử dụng các cột 'B', 'C', 'D', v.v.

  • Quay lại trình soạn thảo in, bạn có thể bật chế độ xem trước bản đồ (menu Atlas -> Bản đồ xem trước) và bước qua các hàng từ tệp CSV của bạn bằng cách sử dụng các mũi tên trên thanh công cụ. Nếu mọi thứ đều ổn, hãy xuất tập bản đồ bằng các tùy chọn trong menu Atlas ... và bạn đã hoàn tất! Không cần lập trình!

Ví dụ về đầu ra:

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

Vân vâ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.