Trang chủ QGIS Lập trình Python QGIS - PyQGIS Bài 6: Thêm dữ liệu CSV

Bài 6: Thêm dữ liệu CSV

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

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:

Ảnh chụp màn hình dữ liệu động đất CSV

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:

Dữ liệu CSV động đất được thêm vào với python

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

MẠNG XÃ HỘI

1,010ThíchThích
432Đă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...