import requests
import json
import time

def alt(longitude, latitude):
	if len(longitude) != len(latitude):
		print ("Les tableaux de longitude et de latitude doivent avoir la même taille.")
		return "error"
	total_elements = len(longitude)
	batch_size = 175

	start = 0
	res=[]
	i=0
	while start < total_elements:
		print(i,"/",total_elements/150)
		i=i+1
		end = min(start + batch_size, total_elements)
	

		longitude_batch = longitude[start:end]
		latitude_batch = latitude[start:end]

		res=res+req(longitude_batch, latitude_batch, len(longitude_batch))

		# Mettez à jour l'indice de début pour le prochain lot
		start = end
	return res
		

def req(latitude, longitude,nb):
	longi=""
	latti=""
	for i in range(nb):
		if i > 0:
			longi += "|"
			latti += "|"
			
		longi += str(longitude[i])
		latti += str(latitude[i])
		
	
	url = f'https://wxs.ign.fr/calcul/alti/rest/elevation.json?lon={longi}&lat={latti}&zonly=true'
	print(url)
	while(1):
		try:
			response = requests.get(url)
			
			if response.status_code == 200:
				try:
					data = json.loads(response.text)
				
					if 'elevations' in data:
						elevation = data['elevations']
						return elevation
					else:
						print("Impossible d'obtenir l'altitude pour les coordonnées spécifiées.")
				except:
					print(url)
					print(latitude,",",longitude)
					time.sleep(1)
			else:
				print(f"Erreur de réponse de l'API. Code de statut : {response.status_code}")
		except requests.exceptions.RequestException as e:
			print(f"Une erreur s'est produite lors de la requête : {e}")
