map.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import exif
  2. import tkinter
  3. from PIL import Image, ImageTk
  4. from tkintermapview import TkinterMapView
  5. def decimal(val):
  6. dec = val[0] + val[1]/60 + val[2]/3600
  7. return dec
  8. def get_location(img):
  9. img = exif.Image(img)
  10. lat = img.gps_latitude
  11. lon = img.gps_longitude
  12. # Convert Degree, min, sec to decimal.
  13. lat = decimal(lat)
  14. lon = decimal(lon)
  15. return lat, lon
  16. def mark_pothole(img):
  17. pothole = ImageTk.PhotoImage(Image.open(img).resize((320, 200)))
  18. lat, lon = get_location(img)
  19. marker = map_widget.set_marker(lat, lon,
  20. text='POTHOLE', image=pothole)
  21. marker.image_zoom_visibility=(19, 22)
  22. marker.hide_image(False)
  23. root_tk = tkinter.Tk()
  24. root_tk.geometry(f"{1280}x{720}")
  25. root_tk.title("Pothole Visualization MAP")
  26. # create map widget
  27. map_widget = TkinterMapView(root_tk,
  28. width=600,
  29. height=400,
  30. corner_radius=0)
  31. map_widget.pack(fill="both", expand=True)
  32. # google normal tile server
  33. map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga",
  34. max_zoom=22)
  35. map_widget.set_position(13.014493, 77.634619)
  36. map_widget.set_zoom(15)
  37. map_widget.set_address("Kamanahalli, Bangalore", marker=True)
  38. mark_pothole('potholes/pothole3.jpg')
  39. mark_pothole('potholes/pothole6.jpg')
  40. mark_pothole('potholes/pothole9.jpg')
  41. mark_pothole('potholes/pothole7.jpg')
  42. root_tk.mainloop()