# -*- coding: utf-8 -*-

# This is a small program to pick DEM data comprise between Min/Max value from the
# .XYZ file that are free available on IGN website. By default the file contents
# all the metropolitan France + Corse. This allow to restrain the pointset to the
# zone of interest.
# PCD _ 9 mars 2012
# CFV - 22 mars 2012

from pointMaillage import PointMaillage

# ouverture du fichier contenant les données du MNT
filename = "France_1000_XYZ_L93/MNT1000_L93_FRANCE.XYZ"
fichier_initial = open(filename, 'r')

# on construit le nom du fichier resultat en ajoutant "_filtre" au nom du fichier initial
filename = filename[:-4] + "_filtre.XYZ"
fichier_filtre = open(filename, 'w')

# coordonnées de la région lorraine
xmin = 836900       # xmin = int(input("X minimum de référence")
xmax = 1040000      # xmax = int(input("X maximum de référence")
ymin = 6751600      # ymin = int(input("Y minimum de référence")
ymax = 6950000      # ymax = int(input("Y maximum de référence")

counter = 0  # pour compter le nombre de valeurs copiees
counter_init = 0  # pour compter le nombre de valeurs initiales

for ligne in fichier_initial:
    # pour chaque ligne du fichier, on a la description d'un point (X, Y, Z)
    # on décope la ligne puis on crée le point du maillage correspondant
    x, y, z = ligne.split()
    pt = PointMaillage(int(x), int(y), int(z))

    # on incremente les compteurs et on regarde si le point courant est dans la zone à étudier
    # si c'est le cas on l'ajoute dans le fichier résultat
    counter_init += 1
    if pt.filtre(xmin, xmax, ymin, ymax):
        fichier_filtre.write(ligne)
        counter += 1

fichier_initial.close()
fichier_filtre.close()

print('l operation est terminee.', counter, 'donnees ont ete copiees depuis 1 fichier qui en contenait', counter_init)
