from tkinter import Frame, Label from PIL.ImageDraw import Draw from PIL.ImageTk import PhotoImage from PIL import Image import xml.etree.ElementTree as ET import coord_to_xy import math w=1920 h=1080 #scherm = Frame() #scherm.master.title("Plaatje") #scherm.configure(width=w, height=h) #scherm.pack() plaatjes = {} #afbeeldingen = [] #omgezetPlaatjes = [] #afbeeldingen = [] zoom =12 points=[]#[(51.95377,5.21887),(0,0),(55.7521, 37.6209),(51.5145, -0.116),(52.4838, -1.8975),(52.5204,13.3869)] tree = ET.parse('Amsterdam-Haarlem.gpx') trkseg = tree.getroot()[1][1] for trkpt in trkseg: lat_point = trkpt.items()[0][1] lon_point = trkpt.items()[1][1] points.append((float(lat_point),float(lon_point))) #coord_to_xy.coord_to_download(x_tile,y_tile_start,zoom,"hey.png") #coord_to_xy.degree_to_download(lat,long,zoom,"hey.png") tiles_width = math.ceil(w/256) tiles_height = math.ceil(h/256) def drawFrame(lat,long,i): (x_tile,y_tile) = coord_to_xy.degree_to_coord(math.radians(lat),math.radians(long),zoom) (x_real,y_real)= coord_to_xy.degree_to_real_coord(math.radians(lat),math.radians(long),zoom) (x_tile_offset, y_tile_offset) = (x_real%256,y_real%256) Img = Image.new(mode="RGBA", size=(w,h)) for x in range(0,tiles_width): for y in range(0,tiles_height): tile_x = x+x_tile-tiles_width//2 tile_y = y+y_tile-tiles_height//2 if not ((tile_x,tile_y) in plaatjes): coord_to_xy.coord_to_download(tile_x,tile_y,zoom,"hey.png") plaatjes[(tile_x,tile_y)]=Image.open("hey.png") #afbeeldingen.append(Label(scherm)) upper_x = int(x*256-x_tile_offset-64) upper_y = int(y*256-y_tile_offset+24) Img.paste(plaatjes[(tile_x,tile_y)],box=(upper_x,upper_y)) #afbeeldingen[i].place(x=x*256-x_tile_offset,y=y*256-y_tile_offset) #omgezetPlaatjes.append(PhotoImage(plaatjes[i])) #afbeeldingen[i].configure(image=omgezetPlaatjes[i]) draw = Draw(Img) (prev_x,prev_y) = (0,0) first = True for j in range(1,i+1): (lat_point,long_point)= points[j] (x,y) = degree_to_pix(lat_point,long_point,x_real,y_real) if(not first): draw.line(((x,y),(prev_x,prev_y)), fill='black', width=4, joint=None) first = False (prev_x,prev_y)=(x,y) return(Img) def degree_to_pix(lat_point,long_point,x_camera,y_camera): (x_point,y_point)= coord_to_xy.degree_to_real_coord(math.radians(lat_point),math.radians(long_point),zoom) return(x_point-x_camera+w//2,y_point-y_camera+h//2) #ImgLbl.configure(image=PhotoImage(Img)) #ImgLbl.place(x=0,y=0) #afbeelding = Label(scherm) #afbeelding.place(x=0, y=0) #afbeelding.configure(background="white") # #omgezetPlaatje = PhotoImage(plaatje) #afbeelding.configure(image=omgezetPlaatje) #FigureImg = Image.new(mode="RGBA", size=(w,h)) #FigureLbl = Label(scherm,background='lightblue') #FigureLbl.place(x=0,y=0) #FigureLbl.configure(image=PhotoImage(FigureImg)) def makeAni(): i=0 for (long,lat) in points: if(i%16==0): Img = drawFrame(long, lat,i) Img.save(f"frame-{i:0>8}.png") i+=1 #scherm.mainloop()