![[Bài 3] Xử lý dữ liệu địa lý với thư viện Geopandas](/img/news/68168310.png?t=68168321)
MỤC LỤC:
Bạn đã từng ngồi cả tiếng đồng hồ click chuột trong QGIS để xử lý dữ liệu shapefile? 🤯 Hôm nay mình sẽ giới thiệu "phù thủy" Geopandas giúp bạn làm điều đó chỉ với vài dòng code Python! Cùng khám phá nhé!
1. Geopandas - "Cánh tay phải" của dân GIS
Geopandas là thư viện Python giúp:
✔️ Đọc/ghi file shapefile nhanh như chớp
✔️ Xử lý dữ liệu không gian "ngon hơn QGIS"
✔️ Tích hợp với các thư viện data science khác
💡 Ví dụ vui: Nếu QGIS là xe máy thì Geopandas + Python là siêu xe - cùng đi đến đích nhưng tốc độ khác hẳn!
2. Cài đặt siêu tốc
Chỉ cần 1 lệnh:
bash
| pip install geopandas |
P/S: Nhớ activate môi trường ảo đã tạo ở Bài 2 nha!
3. Thực hành "chất như nước cất"
3.1 Đọc file shapefile
python
|
import geopandas as gpd # Đọc file ranh giới các tỉnh (link tải ở cuối bài) df = gpd.read_file("tinh_vietnam.shp") # Xem thử xem có gì print(df.head()) |
👉 Output: Bảng dữ liệu gồm tên tỉnh, diện tích và hình học
3.2 Lọc dữ liệu "chuẩn chef"
python
|
# Lọc các tỉnh diện tích > 5000 km2 tinh_lon = df[df['dientich'] > 5000] # Vẽ bản đồ tinh_lon.plot(figsize=(10,8), color='red', edgecolor='black') |
3.3 Tính toán spatial join
python
|
# Đọc file điểm dân cư diem_dan_cu = gpd.read_file("diem_dan_cu.shp") # Đếm số điểm dân cư mỗi tỉnh joined = gpd.sjoin(df, diem_dan_cu, how='left') count = joined.groupby('ten_tinh').size() |
4. Bảng so sánh Geopandas vs QGIS
| Tính năng | QGIS | Geopandas |
|---|---|---|
| Tự động hóa | 👎 Cần plugin | 👍 Code ngắn gọn |
| Xử lý big data | 👎 Chậm | 👍 Nhanh vượt trội |
| Khả năng tùy biến | 👎 Hạn chế | 👍 Không giới hạn |
📌 Bài tập tự làm:
Tạo 2 môi trường ảo:
python_gischo phân tích không gian
python_rscho viễn thámSo sánh tốc độ khi chạy cùng script trên 2 môi trường
Bài tập về nhà:
-
Tải shapefile quận/huyện từ OpenStreetMap
-
Tính diện tích từng quận bằng Geopandas
-
Vẽ bản đồ phân cấp theo diện tích
Chuẩn bị cho Bài 4:
Tải trước bộ dữ liệu mẫu tại: github.com/geopandas/geopandas
💡 Pro tip: Dùng
df.to_file('output.geojson', driver='GeoJSON')để xuất file siêu dễ!
Bài tiếp theo: [Bài 4] Phân tích không gian cơ bản: Buffer, Intersect, Union
Bài trước: [Bài 2] Cài đặt môi trường Python cho GIS: Bắt đầu từ con số 0
5. Tài liệu tham khảo
-
Jordahl, K. (2020). GeoPandas: Python tools for geographic data. Journal of Open Source Software, 5(45), 1921. https://doi.org/10.21105/joss.01921
-
Pandas Development Team. (2023). Pandas documentation. https://pandas.pydata.org/docs/
-
QGIS.org (2023). PyQGIS Developer Cookbook. https://docs.qgis.org/3.28/en/docs/pyqgis_developer_cookbook/
-
OpenStreetMap Contributors. (2023). Vietnam administrative shapefiles. https://download.geofabrik.de/asia/vietnam.html
-
McKinney, W. (2010). Data Structures for Statistical Computing in Python. Proceedings of the 9th Python in Science Conference.



