IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

la fonction input avec un fichier txt ou csv


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Août 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Niger

    Informations professionnelles :
    Activité : salarié
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 4
    Par défaut la fonction input avec un fichier txt ou csv
    Bonsoir à tous je un code qui me genere plusieurs points apartir d'une source de 4 points dans une emprise definie et me recupère les coordonées x,y dans un fichier csv.
    Mon problème est que je voudrais généraliser le code en faisant des inputs sur les données sources à savoir les 4 coordonnées sources et l'emprise du projet (x,y) et (A,B).
    J'ai les 4 coordonnées sources sont dans un fichier txt
    l'emprise du projet est dans un fichier txt
    voila mon code
    D'avance merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    import matplotlib.pyplot
     
     
    def equdroite(x0, y0, x1, y1):
        a = y1 - y0
        b = x0 - x1
        c = -(b * y0 + a * x0)
        #     print("verif00:",sign(x0,y0,a,b,c),sign(x1,y1,a,b,c))
        return a, b, c
     
     
    def inside(Poly, p):
        for P in Poly:
            a, b, c, s, x, y = P[0], P[1], P[2], P[3], pp[0], pp[1]
            if s * sign(x, y, a, b, c) < 0:
                #             print("outside:",a,b,c,s,x,y)
                return False
        return True
     
     
    def sign(x, y, a, b, c):
        return a * x + b * y + c
     
     
    # Les 4 coordonnées sources
    (x, y) = ([325010, 325015, 325015, 325010], [2077560, 2077560, 2077555, 2077555])
    # x = [325010, 325015, 325015, 325010, 325010]
    # y = [2077560, 2077560, 2077555, 2077555, 2077560]
    sg = 5
    # L'emprise du projet
    (A, B) = ([324989.345, 324987.133, 324987.502, 325037.452, 325035.977, 324989.345],
              [2077586.246, 2077553.622, 2077537.955, 2077537.402, 2077589.933, 2077586.246])
    # A = [324989.345,  324987.133,  324980,  325037.452,  325035.977,  324989.345]
    # B = [2077586.246, 2077553.622, 2077800, 2077537.402, 2077589.933, 2077586.246]
    # avgA,avgB=sum(A)/len(A),sum(B)/len(B)
    # # print ("avg:",avgA,avgB)
    # A=[x-avgA for x in A]
    # B=[x-avgB for x in B]
    # x=[x-avgA for x in x]
    # y=[x-avgB for x in y]
    nc = len(A) - 1
    E = []
    for p0 in range(nc):
        p1 = (p0 + 1) % nc
        p2 = (p0 + int(nc / 2)) % nc
        a, b, c = equdroite(A[p0], B[p0], A[p1], B[p1])
        s = sign(A[p2], B[p2], a, b, c)
        #     print("inloop:",p0,a,b,c,s)
        E.append([a, b, c, s, p0, p1])
    # print("E:",E)
    for p in range(nc):
        for C in E:
            if p != C[4] and p != C[5]:
                a, b, c, s, xp, yp = C[0], C[1], C[2], C[3], A[p], B[p]
                v = sign(xp, yp, a, b, c)
                if s * v < 0:
                    #             print("outside:",a,b,c,s,xp,yp)
                    print("OUPS!", s, v)
    matplotlib.pyplot.plot(A, B)
    matplotlib.pyplot.scatter(x, y, color="r")
    matplotlib.pyplot.axis("equal")
    matplotlib.pyplot.grid()
     
    phg = (int(min(A) / sg) * sg, int(min(B) / sg) * sg)
    pbd = (int(max(A) / sg + 1) * sg, int(max(B) / sg + 1) * sg)
    nrow = int((pbd[0] - phg[0]) / sg) + 1
    ncol = int((pbd[1] - phg[1]) / sg) + 1
    # print(phg)
    # print(nrow,ncol)
    prouge = []
    for row in range(nrow):
        for col in range(ncol):
            pp = (phg[0] + sg * row, phg[1] + sg * col)
            if inside(E, pp):
                prouge.append(pp)
    xrouge = [ppp[0] for ppp in prouge]
    yrouge = [ppp[1] for ppp in prouge]
    matplotlib.pyplot.scatter(xrouge, yrouge, color="g")
    matplotlib.pyplot.scatter(x, y, color="r")
    with open("coordout.csv", "w") as f:
        print("X;Y", file=f)
        for xrouge, yrouge in prouge:
            print(f"{xrouge};{yrouge}", file=f)
     
    matplotlib.pyplot.show()

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonsoir
    Citation Envoyé par sademaman Voir le message
    Mon problème est que je voudrais généraliser le code en faisant des inputs sur les données sources à savoir les 4 coordonnées sources et l'emprise du projet (x,y) et (A,B).
    Base de la prog MVC: normaliser les formats IO. Tu écris une fonction inputClavier() qui te fait 4 input() et les renvoie dans un format (tuple par exemple) que ton code saura traiter. Et du côté calcul, tu adaptes ton code pour qu'il prenne les coordonnées dans un tuple.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Système] fonction fopen ! exporter en fichier txt
    Par cseb73 dans le forum Langage
    Réponses: 5
    Dernier message: 13/08/2007, 16h32
  2. Réponses: 2
    Dernier message: 26/04/2007, 21h50
  3. SGBD sur SUN Solaris avec synchro fichier txt
    Par Nicos77 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/02/2007, 15h03
  4. Pb avec le fichiers .txt générés
    Par Emilie MARQUOIS-OGEZ dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2006, 13h43
  5. Problème avec mes fichiers txt
    Par salseropom dans le forum C
    Réponses: 5
    Dernier message: 18/05/2006, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo