Bonjour,

J'ai un fichier csv en entrée qui contient une liste de points 3D.

J'arrive bien à générer l'image de modélisation :
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
from mpl_toolkits.mplot3d import Axes3D
 
from matplotlib import cbook
from matplotlib import cm
from matplotlib.colors import LightSource
from matplotlib import animation
from collections import namedtuple
import matplotlib.pyplot as plt
import numpy as np
import csv
 
 
fname = "/home/moi/Documents/terrain_HD_coordonnees.csv"
 
fig = plt.figure(figsize=(40,15), dpi=250)
ax = Axes3D(fig)
x = []
y = []
z=[]
 
 
def init():
    # Plot the surface.
    surf = ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.1)
    return fig,
 
def animate(i):
    # azimuth angle : 0 deg to 360 deg
    ax.view_init(elev=10, azim=i*2)
    return fig,
 
 
 
try:
    with open(fname, "r") as csv_file:
        csv_reader = csv.DictReader(csv_file, delimiter=';')
        for lines in csv_reader:
                #print(lines['nom'], lines['x'], lines['y'], lines['z'])
                x.append(float(lines['y']))
                y.append(float(lines['x']))
                z.append(float(lines['z']))
 
 
 
finally:
    file.close()
 
 
 
    ax.view_init(10,205)
    fig.colorbar(surf, shrink=0.5, aspect=5)
    init()
 
    plt.show()
Au niveau des couleurs, ça génère en fonction de la position en altitude : je souhaiterai qui la couleur soit en fonction de la pente de la surface du polygone généré (par rapport au plan horizontal) pour mieux voir les zones plus pentues que d'autres.

Bonne journée