Bộ dữ liệu địa lý mở cho ứng dụng GreenMap - Thu thập từ OpenStreetMap (OSM) và SUMO
GreenMap-Data là kho dữ liệu chứa thông tin địa lý về các điểm quan trọng trong khu vực Hà Nội, bao gồm:
- 🚲 Điểm thuê xe đạp công cộng
- ⚡ Trạm sạc xe điện
- 🌳 Công viên và không gian xanh
- 🏛️ Điểm du lịch và di tích lịch sử
Dữ liệu được thu thập từ OpenStreetMap (OSM) thông qua Overpass API và mô phỏng giao thông từ SUMO (Simulation of Urban MObility).
| Loại dữ liệu | File | Mô tả |
|---|---|---|
| Điểm thuê xe đạp | bicycle_rental.geojson |
Các trạm MBI Bike Sharing và các dịch vụ thuê xe đạp |
| Trạm sạc xe điện | charging_station.geojson |
Trạm sạc VinFast và các nhà cung cấp khác |
| Công viên | park.geojson |
Công viên, vườn hoa, không gian xanh công cộng |
| Điểm du lịch | tourist_attractions.geojson |
Di tích lịch sử, đền chùa, điểm tham quan |
simulation_data_part1.json+simulation_data_part2.json: Dữ liệu mô phỏng giao thông (đã tách do kích thước lớn)
Dữ liệu bao phủ khu vực Hà Nội và vùng lân cận:
Bounding Box: (20.57, 105.28, 21.39, 106.02)
┌─────────────────────────────────────┐
│ Min Latitude: 20.57 (Nam) │
│ Max Latitude: 21.39 (Bắc) │
│ Min Longitude: 105.28 (Tây) │
│ Max Longitude: 106.02 (Đông) │
└─────────────────────────────────────┘
✅ Lợi ích:
- Cô lập dự án: Các package cài đặt cho dự án này không ảnh hưởng đến Python toàn hệ thống
- Quản lý phiên bản: Dễ kiểm soát phiên bản package cho từng dự án
- Tránh xung đột: Hai dự án khác nhau có thể dùng các phiên bản package khác nhau
- Dễ chia sẻ: Dễ dàng chia sẻ project cho người khác mà không sợ thiếu dependencies
# 1. Mở Command Prompt hoặc PowerShell
# 2. Di chuyển vào thư mục project
cd D:\GreenMap\GreenMap-Data
# 3. Tạo virtual environment
python -m venv venv
# 4. Kích hoạt virtual environment
# Với Command Prompt:
venv\Scripts\activate
# Hoặc với PowerShell:
venv\Scripts\Activate.ps1
# 5. Cài đặt các thư viện cần thiết (khi venv đã kích hoạt)
pip install requests pandas folium jupyter
# 6. Mở Jupyter Notebook
jupyter notebook# 1. Mở Terminal
# 2. Di chuyển vào thư mục project
cd ~/GreenMap/GreenMap-Data
# 3. Tạo virtual environment
python3 -m venv venv
# 4. Kích hoạt virtual environment
source venv/bin/activate
# 5. Cài đặt các thư viện cần thiết (khi venv đã kích hoạt)
pip install requests pandas folium jupyter
# 6. Mở Jupyter Notebook
jupyter notebookKhi virtual environment đã kích hoạt, bạn sẽ thấy (venv) ở đầu dòng lệnh:
(venv) D:\GreenMap\GreenMap-Data>
hoặc
(venv) ~/GreenMap/GreenMap-Data $
Để thoát khỏi virtual environment, chỉ cần gõ:
deactivateSử dụng Jupyter Notebook để tự động tải dữ liệu:
# 1. Clone repository
git clone https://github.com/HouHackathon-CQP/GreenMap-Data.git
cd GreenMap-Data
# 2. Tạo và kích hoạt virtual environment (Windows)
python -m venv venv
venv\Scripts\activate
# Hoặc trên macOS/Linux:
python3 -m venv venv
source venv/bin/activate
# 3. Cài đặt thư viện cần thiết (trong virtual environment)
pip install requests pandas folium jupyter
# 4. Mở và chạy notebook
jupyter notebook data_collection.ipynbSau khi chạy, dữ liệu sẽ được lưu trong thư mục Data/.
Sử dụng Overpass Turbo để lấy dữ liệu trực tiếp.
Dưới đây là các query để lấy từng loại dữ liệu:
[out:json][timeout:25];
(
node["amenity"="bicycle_rental"](20.57, 105.28, 21.39, 106.02);
way["amenity"="bicycle_rental"](20.57, 105.28, 21.39, 106.02);
relation["amenity"="bicycle_rental"](20.57, 105.28, 21.39, 106.02);
);
out body;
>;
out skel qt;
[out:json][timeout:25];
(
node["amenity"="charging_station"](20.57, 105.28, 21.39, 106.02);
way["amenity"="charging_station"](20.57, 105.28, 21.39, 106.02);
relation["amenity"="charging_station"](20.57, 105.28, 21.39, 106.02);
);
out body;
>;
out skel qt;
[out:json][timeout:60];
(
node["leisure"="park"](20.57, 105.28, 21.39, 106.02);
way["leisure"="park"](20.57, 105.28, 21.39, 106.02);
relation["leisure"="park"](20.57, 105.28, 21.39, 106.02);
);
out body;
>;
out skel qt;
[out:json][timeout:180];
(
// Điểm du lịch chính
node["tourism"](20.57, 105.28, 21.39, 106.02);
way["tourism"](20.57, 105.28, 21.39, 106.02);
relation["tourism"](20.57, 105.28, 21.39, 106.02);
// Di tích lịch sử
node["historic"](20.57, 105.28, 21.39, 106.02);
way["historic"](20.57, 105.28, 21.39, 106.02);
relation["historic"](20.57, 105.28, 21.39, 106.02);
// Di sản văn hóa
node["heritage"](20.57, 105.28, 21.39, 106.02);
way["heritage"](20.57, 105.28, 21.39, 106.02);
relation["heritage"](20.57, 105.28, 21.39, 106.02);
);
out body;
>;
out skel qt;
Hướng dẫn sử dụng:
- Truy cập Overpass Turbo
- Dán query vào ô nhập liệu
- Nhấn "Run" (hoặc Ctrl+Enter)
- Export dữ liệu → Chọn "GeoJSON"
- Lưu file vào thư mục
Data/
SUMO (Simulation of Urban MObility) là công cụ mô phỏng giao thông mã nguồn mở.
📚 Tài liệu chính thức: https://sumo.dlr.de/docs/
import json
from Data.merge_json import merge_json
# Ghép 2 file thành file gốc
merge_json()
# Đọc dữ liệu mô phỏng
with open('Data/simulation_data.json', 'r', encoding='utf-8') as f:
simulation_data = json.load(f)GreenMap-Data/
├── 📄 README.md # Tài liệu hướng dẫn
├── 📓 data_collection.ipynb # Notebook tự động thu thập dữ liệu
├── 📜 LICENSE # Giấy phép Apache 2.0
└── 📂 Data/
├── 🚲 bicycle_rental.geojson # Điểm thuê xe đạp
├── ⚡ charging_station.geojson # Trạm sạc xe điện
├── 🌳 park.geojson # Công viên
├── 🏛️ tourist_attractions.geojson # Điểm du lịch
├── 🔧 merge_json.py # Script ghép file simulation
├── 🔧 split_json.py # Script tách file simulation
├── 📊 simulation_data_part1.json # Dữ liệu SUMO (phần 1)
└── 📊 simulation_data_part2.json # Dữ liệu SUMO (phần 2)
- Dữ liệu mô phỏng SUMO có dung lượng rất lớn (>100MB sau khi ghép)
- Không nên đọc trực tiếp các file part trong IDE do có thể gây lag
- Sử dụng
merge_json.pyđể ghép file trước khi sử dụng - Xử lý dữ liệu theo batch để tránh tràn bộ nhớ
- Có giới hạn số request mỗi phút, nên chờ giữa các lần gọi
- Timeout được cấu hình sẵn trong mỗi query
- Nếu gặp lỗi timeout, thử lại sau vài phút
Dự án được phát hành dưới giấy phép Apache 2.0.
Dữ liệu OpenStreetMap được sử dụng theo Open Database License (ODbL).
Dự án này được phát triển bởi HouHackathon-CQP.
Chúng tôi hoan nghênh mọi đóng góp! Hãy mở Issue hoặc Pull Request nếu bạn muốn cải thiện dự án.
🌿 GreenMap - Vì một Hà Nội xanh và bền vững!