Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Vẽ dữ liệu lên Google Map bằng gói pygmaps

Thư viện Python pygmaps cung cấp một trình bao bọc cho Google Maps JavaScript API. Với thư viện này, người dùng Python có thể tạo giao diện giống matplotlib để sinh ra HTML và JavaScript, sau đó hiển thị tất cả thông tin bổ sung mà người dùng muốn thêm lên Google Maps.

Thư viện cần thiết

Chúng ta chỉ sử dụng thư viện/gói pygmaps. Bạn có thể cài đặt pygmaps bằng pip như sau:

$pip install pygmaps (Windows OS)
$sudo pip3 install pygmaps (Linux OS)

Chúng ta sẽ viết chương trình thực hiện các chức năng sau:

  • Tạo bản đồ bằng pygmaps bằng cách cung cấp kinh độ, vĩ độ và mức thu phóng.
  • Đặt lưới trên bản đồ bằng cách cung cấp điểm bắt đầu và kết thúc vĩ độ/kinh độ cho lưới và kích thước lưới.
  • Thêm một điểm trên bản đồ và hiển thị bằng cách đặt màu sắc.
  • Vẽ đường tròn quanh một điểm trên bản đồ với bán kính tính bằng mét.
  • Vẽ đường đi trên bản đồ bằng cách cung cấp danh sách các cặp vĩ độ, kinh độ.

Dưới đây là triển khai các chức năng khác nhau thông qua pygmaps.

import pygmaps

########## CONSTRUCTOR: pygmaps.maps(latitude, longitude, zoom) ##############################
# MÔ TẢ: Khởi tạo bản đồ với vĩ độ và kinh độ của điểm trung tâm
# và mức thu phóng bản đồ "15"
# THAM SỐ 1: latitude (float) vĩ độ của điểm trung tâm bản đồ
# THAM SỐ 2: longitude (float) kinh độ của điểm trung tâm bản đồ
# THAM SỐ 3: zoom (int) mức thu phóng bản đồ 0~20
# TRẢ VỀ: instance của pygmaps
#========================================================================================
mymap = pygmaps.pygmaps(17.45, 78.29, 15)

########## FUNCTION: setgrids(start-Lat, end-Lat, Lat-interval, start-Lng, end-Lng, Lng-interval) ######
# MÔ TẢ: Đặt lưới trên bản đồ
# THAM SỐ 1: start-Lat (float), vĩ độ bắt đầu (tối thiểu) của lưới
# THAM SỐ 2: end-Lat (float), vĩ độ kết thúc (tối đa) của lưới
# THAM SỐ 3: Lat-interval (float) kích thước lưới theo vĩ độ
# THAM SỐ 4: start-Lng (float), kinh độ bắt đầu (tối thiểu) của lưới
# THAM SỐ 5: end-Lng (float), kinh độ kết thúc (tối đa) của lưới
# THAM SỐ 6: Lng-interval (float) kích thước lưới theo kinh độ
# TRẢ VỀ: không có giá trị trả về
#========================================================================================
mymap.setgrids(17.45, 17.46, 0.001, 78.29, 78.30, 0.001)

########## FUNCTION: addpoint(latitude, longitude, [color])#############################
# MÔ TẢ: Thêm một điểm vào bản đồ và hiển thị nó, màu sắc tùy chọn, mặc định là đỏ
# THAM SỐ 1: latitude (float) vĩ độ của điểm
# THAM SỐ 2: longitude (float) kinh độ của điểm
# THAM SỐ 3: color (string) màu của điểm hiển thị trên bản đồ, dùng mã màu HTML
# MÃ MÀU HTML: https://www.computerhope.com/htmcolor.htm
# ví dụ: đỏ "#FF0000", Xanh dương "#0000FF", Xanh lá "#00FF00"
# TRẢ VỀ: không có giá trị trả về
#========================================================================================
mymap.addpoint(17.45, 78.29, "#FF0000", "Hello")

########## FUNCTION: addradpoint(latitude, longitude, radius, [color])##################
# MÔ TẢ: Thêm một điểm có bán kính (Mét) - Vẽ hình tròn
# THAM SỐ 1: latitude (float) vĩ độ của điểm
# THAM SỐ 2: longitude (float) kinh độ của điểm
# THAM SỐ 3: radius (float), bán kính tính bằng mét
# THAM SỐ 4: color (string) màu của điểm hiển thị trên bản đồ, dùng mã màu HTML
# MÃ MÀU HTML: https://www.computerhope.com/htmcolor.htm
# ví dụ: đỏ "#FF0000", Xanh dương "#0000FF", Xanh lá "#00FF00"
# TRẢ VỀ: không có giá trị trả về
#========================================================================================
mymap.addradpoint(17.45, 78.29, 150, "#0000FF")

########## FUNCTION: addpath(path, [color])##############################################
# MÔ TẢ: Thêm một đường đi vào bản đồ, cấu trúc dữ liệu của Path là một danh sách các điểm
# THAM SỐ 1: path (list of coordinates) ví dụ: [(lat1,lng1),(lat2,lng2),...]
# THAM SỐ 2: color (string) màu của điểm hiển thị trên bản đồ, dùng mã màu HTML
# MÃ MÀU HTML: https://www.computerhope.com/htmcolor.htm
# ví dụ: đỏ "#FF0000", Xanh dương "#0000FF", Xanh lá "#00FF00"
# TRẢ VỀ: không có giá trị trả về
#========================================================================================
path = [(17.45, 78.29), (17.55, 78.39), (17.65, 78.49)]
mymap.addpath(path, "#00FF00")

########## FUNCTION: draw(file)######################################################
# MÔ TẢ: Tạo file bản đồ HTML (.html)
# THAM SỐ 1: file (string) đường dẫn và tên file bản đồ
# TRẢ VỀ: không có giá trị trả về, tạo file HTML trong thư mục chỉ định
#========================================================================================
mymap.draw('./mymap.html')
print('OK')

Lưu ý: Bạn có thể gặp lỗi TypeError khi chạy hàm mymap.addpoint, giống như:

TypeError: addpoint() takes from 3 to 4 positional arguments but 5 were given

Để khắc phục, tôi đã thêm đối số title vào hàm addpoint của gói pygmaps.py.

Kết quả

Vẽ dữ liệu lên Google Map bằng gói pygmaps

Như bạn thấy từ bản đồ trên, chúng ta có thể hình ảnh hóa nhiều chức năng trong một bản đồ duy nhất.