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)
Comma Separated Value (CSV) thường chứa thông tin tọa độ có thể được hiển thị trên bản đồ. Chúng tôi thường xuyên xử lý dữ liệu CSV khi làm việc trong GIS. Do đó, điều rất quan trọng là chúng ta có thể làm việc với loại dữ liệu này.
Trong QGIS, có thể hiển thị dữ liệu CSV bằng công cụ Add Delimited Text Layer. Nếu bạn chưa thử, nó có thể được tìm thấy trong menu Add Layer. Nhưng chúng tôi sẽ không thảo luận về nó, bởi vì đây là một loạt hướng dẫn về lập trình QGIS Python. Vì vậy, chúng tôi sẽ thảo luận về cách thêm dữ liệu CSV bằng mã code Python trong QGIS.
Kiểm tra dữ liệu CSV
Trước khi thêm dữ liệu CSV bằng mã Python trong QGIS. Tôi đề nghị kiểm tra dữ liệu CSV trước tiên. Lý do là, dữ liệu CSV có thể được cấu trúc theo cách khác nhau cho bất kỳ dữ liệu CSV nào. Có thể tìm thấy giá trị được phân tách bằng dấu phẩy (,), dấu chấm phẩy (;), tab, v.v … Vì vậy, biết cách định dạng nó sẽ là hướng dẫn cho chúng tôi cách xử lý dữ liệu. Để kiểm tra dữ liệu có thể được thực hiện bằng cách mở nó trong một ứng dụng văn bản như Notepad, Notepad ++, v.v … Bất kỳ ứng dụng văn bản nào cũng có thể được sử dụng, chỉ cần chọn ứng dụng yêu thích của bạn.
Trong hướng dẫn này, tôi sẽ sử dụng dữ liệu CSV từ USGS Earthquake Catalog có chứa vị trí động đất trên khắp thế giới. Tôi đã mở dữ liệu bằng Notepad ++ và nó trông giống như hình sau:

Từ ảnh chụp màn hình trong hình trên, có thể thấy rằng các giá trị được phân tách bằng dấu phẩy (,) và không có dấu ngoặc đơn. Vì vậy, chúng tôi sẽ sử dụng định dạng này trong mã hóa sau này.
Thêm dữ liệu CSV
Bây giờ, hãy thêm dữ liệu CSV vào QGIS bằng Python. Để thêm dữ liệu CSV, chúng tôi đang sử dụng giao diện QGIS hoặc ví dụ dự án QGIS. Nhưng trước tiên, chúng ta phải tạo tệp CSV dưới dạng một lớp vectơ bằng cách sử dụng lớp QssVectorLayer với biểu thức sau:
csv_layer=QgsVectorLayer(uri:string,layer name: string, library:string)
Trong biểu thức trên có thể thấy rằng đối số đầu tiên là chúng ta phải xác định Mã định danh tài nguyên thống nhất (URI) cho tệp CSV. Một URI có thể là một địa chỉ tệp trên máy chủ hoặc qua internet. Nếu tệp nằm trong máy cục bộ, URI có thể được ghi dưới dạng tệp: file:///path. Đối số thứ hai là tên lớp, cung cấp cho nó những gì bạn thích. Cái thứ ba là thư viện, đối với CSV, chúng tôi đang sử dụng deliatedtext
Tiếp theo, chúng ta phải xác định một số tham số trong URI, chẳng hạn như:
- encoding: data encoding (optional)
- xField: Column name for longitude value
- yField: Column name for latitude value
- crs: Coordinate system in EPSG number
URI hoàn chỉnh cho dữ liệu CSV động đất sẽ giống như biểu thức bên dưới:
uri = "file:///F:/eq-data.csv?encoding=%s&delimiter=%s&xField=%s&yField=%s&crs=%s" % ("UTF-8",",", "longitude", "latitude","epsg:4326")
Vì vậy, đảm bảo URI chính xác là chìa khóa để thêm dữ liệu CSV. Sau khi xác định URI, sau đó chúng ta tạo một lớp vectơ và thêm nó vào QGIS. Mã hoàn chỉnh có thể được nhìn thấy như dưới đây.
uri = "file:///F:/eq-data.csv?encoding=%s&delimiter=%s&xField=%s&yField=%s&crs=%s" % ("UTF-8",",", "longitude", "latitude","epsg:4326") #Make a vector layer eq_layer=QgsVectorLayer(uri,"eq-data","delimitedtext") #Check if layer is valid if not eq_layer.isValid(): print ("Layer not loaded") #Add CSV data QgsProject.instance().addMapLayer(eq_layer)
Hình sau cho thấy kết quả khi mã code được thực thi:

Trên đây là tất cả các hướng dẫn làm thế nào để thêm lớp vector với python trong QGIS.
Bình luận bằng Facebook Comments