Bài 3: Thêm lớp Raster

- Quảng cáo -

Bài 1: Bắt đầu với lập trình Python QGIS
Bài 2: Thêm lớp Vector
Bài 3: Thêm lớp Raster
Bài 4: Làm việc với lớp Vector
Bài 5: Cách thêm/xóa trường và cập nhật giá trị thuộc tính
Bài 6: Thêm dữ liệu CSV
Bài 7: Drawing Marker
Bài 8: Vẽ Polyline và Polygon
Bài 9: Animate GPS Track
Bài 10: Đặt và tải lại nguồn dữ liệu bản đồ cơ sở (Basemap)

Có một số nguồn dữ liệu của lớp raster có thể được thêm vào QGIS như tệp raster trong máy cục bộ và tài nguyên trực tuyến từ máy chủ có quyền truy cập Dịch vụ Bản đồ Web (Web Mapping Service – WMS). Do đó, chúng tôi sẽ thảo luận về cách thêm một lớp raster từ cả hai nguồn dữ liệu.

Thêm tệp raster từ máy cục bộ

Trước hết hãy nói về cách thêm raster trực tiếp từ một tệp được lưu trữ trong một máy cục bộ. Để thêm một lớp raster vào canvas bản đồ QGIS có thể được sử dụng lớp iface với phương thức addRasterLayer. Cú pháp là như sau:

iface.addRasterLayer(path:string,layer_name:string) 

Ví dụ: đoạn mã code sau đang thêm một tệp có định dạng ecw vào QGIS. Loại raster khác như TIF, JPEG,… cũng có thể được thêm vào QGIS với cùng biểu thức. Trong hình sau có thể thấy tệp raster đã được tải vào khung bản đồ QGIS:

raster_file="E:/drone_UAV.ecw"
iface.addRasterLayer(raster_file,"aerial photo") 
Một lớp Raster được thêm vào khung bản đồ QGIS

Thêm nguồn dữ liệu raster trực tuyến (Online Raster Data Source)

Lớp Web Map Service (WMS)

Để thêm một lớp raster từ dịch vụ WMS, chúng ta phải biết địa chỉ hoặc URL của lớp. Sau khi biết URL, chúng ta cần chỉ định một số tham số như tên lớp sẽ được thêm vào, định dạng hình ảnh và hệ tọa độ trong EPSG.

Ví dụ: tôi muốn thêm một lớp từ Trung tâm Mạng thông tin khoa học trái đất quốc tế (CIESIN) Đại học Columbia (Center for International Earth Science Information Network (CIESIN) Columbia University), với các tham số sau:

  • URL: https://sedac.ciesin.columbia.edu:443/geoserver/ows?SERVICE=WMS
  • layer name:ipcc:ipcc-synthetic-vulnerability-climate-2005-2050-2100
  • format:image/png
  • crs:EPSG:4326
  • styles

Sau đó, chúng tôi kết hợp URL và các tham số đó với ký hiệu và ký hiệu (&) để:

url=https://sedac.ciesin.columbia.edu:443/geoserver/ows?SERVICE=WMS&layers=ipcc:ipcc-synthetic-vulnerability-climate-2005-2050-2100&format=image/png&crs=EPSG:4326&styles=

Tiếp theo, chúng tôi định nghĩa nó là lớp raster với lớp QssRasterLayer và đặt một số đối số như: url với tham số, tên lớp và kiểu dữ liệu. Để kiểm tra xem lớp có thể được tải hay không, chúng ta đang sử dụng phương thức isValid. Phương thức này sẽ trả về True nếu lớp có thể được tải nếu không False. Sau đó, lớp được thêm vào bản đồ canvas bằng phương thức addMapLayer với một thể hiện của lớp QssProject. Mã code hoàn chỉnh có thể được nhìn thấy trong đoạn mã sau và kết quả được hiển thị trong hình:

#ADDING WMS urlWithParams = 'url=https://sedac.ciesin.columbia.edu:443/geoserver/ows?SERVICE=WMS&layers=ipcc:ipcc-synthetic-vulnerability-climate-2005-2050-2100&format=image/png&crs=EPSG:4326&styles=' raster_layer = QgsRasterLayer(urlWithParams, 'Climate Vulnerability', 'wms') if not raster_layer.isValid():   print("Layer failed to load!") QgsProject.instance().addMapLayer(raster_layer) 

Tile Map Service (TMS)/XYZ Tile

Phần thứ hai của việc thêm lớp raster từ nguồn dữ liệu trực tuyến là thêm một lớp raster từ dịch vụ TMS. Loại lớp TMS hoặc xyz thường được sử dụng để thêm sơ đồ cơ sở như Google maps, Open Street Map (OSM), ESRI,… Để thêm một ô xyz giống với việc thêm một lớp WMS, chúng ta cần một địa chỉ lớp (url) nhưng với các thông số khác nhau. Các tham số đó là: zmax (mức thu phóng tối đa) và zmin (mức thu phóng tối thiểu).

Ví dụ: thêm basemap OSM bằng url:

http://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png.
Maximum zoom level 19 và minimum zoom level 0.
url hoàn chỉnh sẽ như sau:
http://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png&zmax=19&zmin=0&type=xyz.
Bạn có thể tìm các URL TMS khác tại NextGIS QMS.

Sau đó, chúng tôi định nghĩa nó là lớp raster với lớp QssRasterLayer, kiểm tra xem nó có hợp lệ hay không và thêm vào khung bản đồ QGIS bằng phương thức addMapLayer của một thể hiện QssProject. Mã code hoàn chỉnh như trình bày dưới đây. Trong hình dưới có thể thấy lớp sơ đồ cơ sở OSM đã được thêm vào khung bản đồ QGIS:

#ADDING MTS/XYZ TILE uri="url=http://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png&zmax=19&zmin=0&type=xyz" mts_layer=QgsRasterLayer(uri,'OSM','wms') if not wts_layer.isValid():     print ("Layer failed to load!") QgsProject.instance().addMapLayer(mts_layer) 

Đó là tất cả các hướng dẫn làm thế nào để thêm lớp raster vào khung vẽ bản đồ QGIS bằng Python.

Bình luận bằng Facebook Comments

MẠNG XÃ HỘI

1,010ThíchThích
435Đăng kýĐăng Ký

TOOL PXTmap.com

BÀI VIẾT LIÊN QUAN

Bài 14: Viết kịch bản xử lý

Trong các bài trước, chúng tôi đã đề cập đến cách chạy các công cụ Processing cũng như cách xâu chuỗi các...

Bài 13: Tạo các hàm để tải các lớp GeoPackage

Hiện tại chúng ta đã từng sử dụng GeoPackages. Ví dụ: trong Tải một lớp vectơ, chúng tôi đã giới thiệu cách...

Bài 12: Sử dụng biểu thức để tính giá trị

Trong các bài trước đây, chúng tôi đã đề cập đến cách tạo các lớp vectơ, cách thêm các trường vào bảng...

Bài 11: Quản lý các lớp dự án (đổi tên và loại bỏ)

Trong các bài trước, chúng tôi đã đề cập đến việc thêm các lớp từ các tệp cũng như tạo các lớp...

Bài 10: Công cụ chuỗi xử lý (Chaining Processing)

Trong Bài 7: Chạy công cụ xử lý (Processing), chúng ta đã khám phá những điều cơ bản của việc chạy các...