Tự động thành lập bản đồ bằng công cụ Print Composer Atlas

Cảnh báo

A new version of this tutorial is available at Automating Map Creation with Print Layout Atlas (QGIS3)

Nếu cơ quan của bạn xuất bản các bản đồ in hay trực tuyến, thường bạn sẽ phải tạo ra rất nhiều bản đồ với cùng một mẫu - có thể là mỗi mẫu cho cho từng đơn vị hành chính hay khu vực. Xây dựng các bản đồ này một cách thủ công sẽ tốn kém thời gian và nếu bạn muốn cập nhật thường xuyên, công việc này sẽ rất vất vả. QGIS có một công cụ tên là "Atlas" có thể giúp bạn tạo ra các mẫu bản đồ và dễ dàng xuất hàng loạt bản đồ cho các vùng địa lý khác nhau. Nếu bạn không quen thuộc với các công cụ trên Print Composer, bạn nên xem tài liệu hướng dẫn Thành lập bản đồ .

Tổng quan về nhiệm vụ

Tài liệu hướng dẫn cách lập bản đồ đất ngập nước cho từng hạt trong bang Hawaii

Các kỹ năng bạn sẽ học được

  • Làm thế nào để sử dụng kết xuất "Inverted Polygon" để tạo màu các vùng ngoài polygon đã chọn.

  • Làm thế nào để dùng câu lệnh trong kết xuất "Rule Based" thể hiện riêng đối tượng hiện tại trong Atlas.

  • Sử dụng các câu lệnh để tạo các nhãn linh hoạt trong Print Composer.

Nhận dữ liệu

Chúng ta sẽ sử dụng GIS Data Layers từ Ủy ban Quy hoạch - Bang Hawaii

Tải lớp đất ngập nước 'Wetlands<http://files.hawaii.gov/dbedt/op/gis/data/HI_Wetlands.shp.zip>`_ từ Biologic and Ecologic.

Tải lớp Census County Boundaries 2010 từ Cultural and Demographic.

Để thuận tiện, bạn có thể tải trực tiếp các dữ liệu mẫu sử dụng trong tài liệu hướng dẫn này theo đường dẫn sau.

HI_Wetlands.shp.zip

county10.shp.zip

Nguồn dữ liệu [HAWAII]

Các bước thực hiện

  1. Mở QGIS và vào Layer ‣ Add Layer ‣ Add Vector Layer.

../_images/1156.png
  1. Tìm tới file HI_Wetlands.shp.zip và chọn Open.

../_images/2129.png
  1. Chọn lớp HI_Wetlands_Poly và bấm chuột OK.

../_images/366.png
  1. Bạn sẽ thấy các polygons thể hiện vùng đất ngập nước của bang Hawaii. Do chúng ta muốn lập các bản đồ riêng biệt về đất ngập nước cho từng hạt trong bang, chúng ta sẽ cần lớp ranh giới hạt. Hãy vào menuselection:Layer --> Add Layer --> Add Vector Layer và truy vào tệp county10.shp.zip . Bấm chuột Open.

../_images/436.png
  1. Vào Project ‣ New Print Composer.

../_images/535.png
  1. Để trống trường tên bản đồ và bấm chuột OK.

../_images/634.png
  1. Vào Layout ‣ Add Map.

../_images/734.png
  1. Kéo hình chữ nhật trong khi giữ nguyên phím trái chuột khi muốn chèn bản đồ.

../_images/833.png
  1. Scroll down in the Item Properties tab and check the Controlled by atlas box. This will indicate the composer that the extent of the map displayed in this item will be determined by the Atlas tool.

../_images/934.png
  1. Switch to the Atlas generation tab. Check the Generate an atlas box. Select the county10 as the Coverage layer. This will indicate that we want to create 1 map each for every polygon feature in the county10 layer. You can also check the Hidden coverage layer so that the features themselves will not appear on the map.

../_images/1041.png
  1. You will notice that the map image does not change after configuring the Atlas settings. Go to Atlas ‣ Preview Atlas.

../_images/1157.png
  1. Now you will see the map refresh and show how individual map will look like. Notice that it shows the current feature number from the coverage layer at the bottom right.

../_images/1244.png
  1. Bạn có thể xem trước bản đồ cho từng polygon của các hạt. Đi tới Atlas ‣ Next Feature.

../_images/1342.png
  1. Atlas sẽ kết xuất bản đồ theo khuôn khổ của đối tượng kế tiếp 'next feature' trong lớp bản đồ.

../_images/1439.png
  1. Thêm nhãn vào bản đồ. Vào Layout ‣ Add Label.

../_images/1536.png
  1. Trong Item properties, bấm Insert an expression....

../_images/1634.png
  1. The label of the map can use the attributes from the coverage layer.he concat function is used to join multiple text items into a single text item. In this case we will join the value of the NAME10 attribute of the county10 layer with the text County of. Add an expression like below and click OK.

concat('County of ', "NAME10")
  1. Tùy biến cỡ chữ.

../_images/1829.png
  1. Thêm vào một chú dẫn khác và nhập chữ Wetlands Map phía dưới Main properties. Do không có yêu cầu biểu thị đặc biệt gì nên dòng chữ này sẽ được giữa nguyên trên mọi bản đồ.

../_images/1923.png
  1. Đi tới Atlas ‣ Last Feature và kiểm tra xem các chú dẫn của bản đồ có đúng hay không. Bạn sẽ nhận thấy bản đồ vùng ngập nước có các polygon trải ra phía biển trông không đẹp mắt. Chúng ta có thể thay đổi cách hiển thị để các vùng ngoài ranh giới hạt bị ẩn đi.

../_images/2020.png
  1. Chuyển tới cửa sổ chính của QGIS. Bấm chuột phải vào lớp county10 và chọn Properties.

../_images/2130.png
  1. Trong thanh Style , chọn kết xuất Inverted polygons . Phép kết xuất này sẽ tạo ra kiểu hiển thị bên ngoài của polygon - chứ không phải ở bên trong. Lựa chọn màu trắng cho màu nền và bấm OK.

../_images/2222.png
  1. Switch to the Print Composer window. If we want the effect of the inverted polygons to show, we need to uncheck the Hidden coverage layer box under Atlas generation. You will now see that the rendered image is clean and areas outside the coverage polygon is not visible.

../_images/2319.png
  1. There is one problem though. You can see areas of the map that are outside the coverage layer boundary but still visible. This is because Atlas doesn't automatically hide other features. This can be useful in some cases, but for our purpose, we only want to show wetlands of the county whose map is being generated. To fix this, switch back to the main QGIS window and right-click the county10 layer and select Properties.

../_images/2419.png
  1. Trogn thanh Style , chọn kết xuất Rule-based làm Sub renderer. Bấm đúp chuột vào vùng dưới Rule.

../_images/2519.png
  1. Bấm vào nút ... cạnh Filter.

../_images/2616.png
  1. In the Expression string builder, expand the Atlas group of functions. The $atlasfeatureid function will return the currently selected feature. We will construct an expression that will select only the currently selected Atlas feature. Enter the expression as below:

$id = $atlasfeatureid
../_images/2715.png
  1. Back in the Print Composer window, click the Update preview button under Item properties tab to see the changes. Notice that now only the area covering the county boundary is shown.

../_images/2816.png
  1. Chúng ta sẽ thêm vào một nhãn động để thể hiện ngày tháng hiện tại. Đi đến Layout ‣ Add Label và lựa chọn vùng trên bản đồ. Bấm vào nút Insert an expression .

../_images/2914.png
  1. Mở rộng nhóm chức năng Date and Time và bạn sẽ thấy chức năng $now. Đây là chức năng hiển thị thời gian hiện tại trên hệ thống. Chức năng todate() sẽ chuyển đổi thời gian này thành chuỗi ký tự ngày tháng. Nhập vào hàm như sau:

concat('Created on: ', todate($now))
../_images/3013.png
  1. Thêm vào một chú thích về nguồn dữ liệu. Bạn cũng có thể thêm vào các yếu tố bản đồ khác như mũi tên chỉ hướng bắc, thước tỉ lệ, v.v... như được mô tả trong tài liệu hướng dẫn Thành lập bản đồ .

../_images/3116.png
  1. Khi đã đồng ý với bố cục bản đồ, đi tới Atlas ‣ Export Atlas as Images.

../_images/3213.png
  1. Lựa chọn đường dẫn thư mục trong máy tính và bấm chuột Choose.

../_images/3310.png
  1. Công cụ Atlas sẽ lặp lại từng đối tượng trong lớp dữ liệu và tạo ra các ảnh bản đồ riêng biệt dựa trên các mẫu được tạo ra. Bạn có thể thấy các ảnh bản đồ trong thư mục khi quá trình lặp hoàn tất.

../_images/3410.png
  1. Đây là các ảnh bản đồ tham chiếu.

../_images/35_1.jpg ../_images/35_2.jpg ../_images/35_3.jpg ../_images/35_4.jpg ../_images/35_5.jpg

If you want to report any issues with this tutorial, please comment below. (requires GitHub account)