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")

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