Tutoriel Programmation SIG

Dimension: px
Commencer à balayer dès la page:

Download "Tutoriel Programmation SIG"

Transcription

1 Tutoriel Programmation SIG Utilisation des outils Python libres T. Guyet Empty. Version v1, Dernière modification : 2013

2 Table des matières 1 Aides Importation des librairies GDAL/GEOS I Utilisation des données Vecteurs 5 1 Lire et écrite dans des fichiers Shapefile Les éléments de base Les feature Exemple Exercices Manipulation des formes géométriques Les formes de base Création d une nouvelle géométrie Destruction des géométries Exemple de création d un fichier Shapefile à partir de rien Exercices Opérations géométriques Utilisation des projections Création d un système de coordonnées Récupération et attribution d un système de coordonnées Transformation de système de coordonnées Exemple : recopie d un fichier dans un système de coordonnées Lambert II Exercice II Utilisation des données Raster 16 1 Lire un fichier Raster Chargement des drivers spécifiques (optionnel) Chargement des données d un fichier Raster Parcours des pixels de la matrice Coordonnées des pixels Création d une couche raster Principe Exercices III Autres modes d accès à des données géographiques 24 1 Bases de données géographiques Accès à des données par WFS IV Automatisation des traitements 25 1 Gestion des fichiers et dossiers Modules de Python Lister les fichiers et les dossiers Exemple du traitement des fichiers par lot Exercices Traitements par lot d images MODIS (tutoriel)

3 3.1 Chargement des images MODIS par lot Traitements d images par lots Aller plus loin : exercices

4 Tutoriel Programmation SIG T. Guyet Introduction Ce cours présentation l utilisation de libraries 1 de l OGR : GDAL/GEOS en langage Python. Cette librairie de programmation est utilisée dans un grand nombre d outils libres de SIG (Mapnik, GeoServer, GRASS, QGis, gvsig, GoogleEarth, VTP,...). Comprendre le fonctionnement général de cet API (Application Programming Interface) est un moyen de cerner le potentiel et les limites des traitements SIG actuels. Site officiel : Site pour télécharger/installer GDAL en Python (instructions pour les installations sous Windows) 1 Aides La librairie GDAL est une librairie écrite en C/C++. Il est plus facile de trouver de la documentation sur la librairie dans ce langage qu en python. En particulier la documentation de référence en python n est qu une liste de fonction sans description... elle réfère systématiquement à la documentation C++. Documentation python sur l API : Tutoriel officiel : L Internet contient également beaucoup de ressources utiles : sur les blogs (spécialisés ou non), dans les fils de discussions, etc. n hésitez pas à utiliser et adapter ces ressources toutes faites. 2 Importation des librairies GDAL/GEOS Du fait de l inclusion des libraries GDAL/GEOS dans une même librarie OGR, il existe actuellement différents chemin d accès à ces libraires. L inclusion des librairies de manière générique teste deux possibilités. Les lignes ci-dessous seront à utiliser systématiquement au début de vos codes python. #Chargement de la librairie GDAL/GEO (doit etre installe pour que a fonctionne) try : import osgeo.gdal as gdal import osgeo.ogr as ogr import osgeo.osr as osr from osgeo.gdalconst import * except ImportError: try : import gdal import osr from gdalconst import * except ImportError: import sys sys. stderr. write("gdal needs to be installed. Exiting...\n") sys. exit( 1) Dans la suite du document, on présente tout d abord l utilisation des méthodes liées à l usage de données vectorielles, puis on présente l utilisation des traitements sur des données raster. 1. on parle également d API 4

5 CHAPITRE I. UTILISATION DES DONNÉES VECTEURS Chapitre I Utilisation des données Vecteurs 1 Lire et écrite dans des fichiers Shapefile 1.1 Les éléments de base Lorsqu on utilise une librairie, la première difficuté consiste à comprendre la logique de l organisation des traitements. Dans le cas qui nous intéresse, je l aborde par les objets. Dans la librarie GDAL, il est important de connaître les différents On s intéresse ici à des données issues d un format vectoriel, typiquement un fichier Shapefile Ouverture et fermeture d un fichier shapefile La lecture d un fichier nécessite de disposer d un outil capable d interpréter correctement un format de fichier spécifique, c est le rôle du driver (cf. exemple ci-dessous). Dans le cas de l ouverture d un shapefile, il faut utiliser un driver initialisé avec la chaîne de caractère ESRI Shapefile (exactement). L exemple ci-dessous illustre l ouverture d un fichier shapefile : 1 import os #chargement de la librairie os 2 from osgeo.gdalconst import * # chargement des constantes : pour GA ReadOnly 3 4 #on va ouvrir un fichier shapefile 5 driver = ogr.getdriverbyname( ESRI Shapefile ) 6 7 #se placer dans le repertoire de travail 8 os. chdir( /home/guyet/data/progsig ) 9 10 #ouverture du fichier 11 datasource = driver.open( sites.shp, GA ReadOnly) 12 if datasource is None: 13 # cas d erreur ( inexistence du fichier ) 14 print Could not open file 15 sys. exit (1) #sortir du programme La fonction driver.open(...) permet de récupérer un objet qui représente une source de données. Dans le cadre générale, ce pourrait être une base de données, un flux internet (WFS) ou un fichier (notre cas). Le second paramètre permet d indiquer le mode de lecture du fichier GA ReadOnly pour ouvrir le fichier en lecture seule (pas de modification possible) et GA Update, pour ouvrir le fichier avec possibilité de modification. Dans le 5

6 Tutoriel Programmation SIG T. Guyet CHAPITRE I. UTILISATION DES DONNÉES VECTEURS cas où vous avez importé les constances de GDAL, vous pouvez utiliser GA ReadOnly et GA Update, sinon utiliser respectivement les valeurs 0 et 1. La fermeture de la source de données peut se faire à l aide de l appel suivant : datasource.destroy() La création d un nouveau fichier suit le même principe que l ouverture d un fichier : il est nécessaire d avoir un driver qui saura comment enregistrer le fichier : fout = /home/guyet/data/progsig/output.shp dsout = driver.createdatasource(fout) dsout est alors une source de données correspondant au fichier fout dans lequel on va pouvoir écrire des données La couche vectorielle L objet le plus générique pour de l information géographique, est la notion de couche. Lorsqu on ouvre un fichier shapefile, on récupère une couche de données vectorielles. L accès à une couche vectorielle depuis un fichier shapefile se fait au travers de la fonction GetLayer() de la source de données. layer = datasource.getlayer() L objet layer représente la couche de données vectorielles. Il est possible de récupérer des informations sur cette couche : récupération du nombre de formes (nommés features en anglais) numfeatures = layer.getfeaturecount() print Feature count: + str(numfeatures) print Feature count:, numfeatures l étendue de la couche extent = layer.getextent() print Extent:, extent print UL:, extent [0], extent [3] print LR:, extent [1], extent [2] Il est surtout intéressant de savoir parcourir chacunes des formes (feature) de la couche. Pour cela, on dispose de deux moyens : accès à une élément par sa position dans la liste des éléments. Dans l exemple ci-dessous, on peut récupérer le premier élément de la couche feature = layer.getfeature(0) utilisation d une méthode permet de parcourir tous les éléments 1 par 1 en utilisant un itérateur : feature = layer.getnextfeature() while feature : # do something here feature = layer.getnextfeature() layer.resetreading() #rembobine pour recommencer un parcourt! Autre méthode pour parcourir un fichier shapefile : for i in range(1, layer.getfeaturecount()): feature = layer.getfeature( i ) # do something here Pour la création d une couche, il est nécessaire d indiquer quel va être le type de forme que la couche contiendra (point, ligne, etc.). La fonction permettant d ajouter une couche layerout = dsout.createlayer( Nouvelle couche, geom type=ogr.wkbpoint) Notez que ceci ne peut être fait que sur une source de données qui a été créée pour enregistrer des données. Une fois que la couche a été définies, il est possible de lui ajouter les attributs qu auront les formes de la couche. Dans l exemple ci-dessous, on définit un nouvel attribut nommé id et on indique qu il s agira de nombre entier. On ajoute ensuite cet attribut à la couche layerout. Puis, on ajoute un second attribut descr qui est une chaîne de caractère de longueur 40 au plus. 6

7 CHAPITRE I. UTILISATION DES DONNÉES VECTEURS fielddefn = ogr.fielddefn( id, ogr.oftinteger) layerout. CreateField( fielddefn ) fielddefn = ogr.fielddefn( descr, ogr.oftstring) fielddefn.setwidth(40) layerout. CreateField( fielddefn ) 1.2 Les feature Dans un format vectorielle, une forme est associé à : une géométrie : elle donne les caractéristiques géométrique d une forme : son type (point, ligne, polygone, multi-polygone) et sa description (positions spatiale du point, etc.) une liste de valeurs définies pour des attributs. Dans le langage des SIG, un attribut est appelé un Field. Les attributs sont définies à l échelle de la couche et chaque forme a ses propres valeurs pour les attributs de la couche. Pour accéder aux éléments de la couche, il est possible d utiliser les fonctions suivantes : getfield(... ), en précisant le nom de l attribut dont on souhaite la valeur getfieldasinteger(... ) ou getfieldasstring(... ) sont des spécialisations de la fonction précédente pour être sûr de récupérer une information avec le type souhaité (si les données le permettent!) Il est donc nécessaire de connaître les noms des attributs pour y accéder. Pour accéder à la géométrie d un élément de la couche, il existe la fonction GetGeometryRef(). Cette fonction construit une représentation de la géométrie. En fonction de son type, la géometrie offre différentes possibilités. Dans le cas d un point, on peut récupérer ses positions (x, y) : geometry = feature.getgeometryref() x = geometry.getx() y = geometry.gety() Lorsque les traitements sur une forme sont terminés, il est utile de détruire explicitement cet objet par l instruction destroy(). Ceci permet de conserver de la mémoire pour la suite du traitement. feature.destroy() La création de nouvelle forme ne peut se faire qu une fois qu une couche a été définies ainsi que ses attributs. En particulier, il est nécessaire de connaître la taille de chaque attribut pour savoir comment les enregistrer. Avant tout chose, on a besoin de récupérer la description de tous les attributs : featuredefn = layerout.getlayerdefn() La création d une nouvelle forme se fait ensuite en quatres étapes : 1. On créé effectivement la nouvelle forme avec les bons attributs pour la couche feature = ogr.feature(featuredefn) 2. On donne une géométrie à la forme point = ogr.geometry(ogr.wkbpoint) point.addpoint(10,20) feature.setgeometry(point) 3. Ajouter les valeurs pour chaque attribut feature. SetField( id, 23) 4. Ajouter la forme à la couche layerout.createfeature(feature) 1.3 Exemple # script de recopie les 10 premiers points d un shapefile import ogr, os, sys from osgeo.gdalconst import * # chargement des constantes : pour GA ReadOnly 7

8 Tutoriel Programmation SIG T. Guyet CHAPITRE I. UTILISATION DES DONNÉES VECTEURS os. chdir( /home/guyet/data ) driver = ogr.getdriverbyname( ESRI Shapefile ) # ouverture du fichier d entree inds = driver.open( sites.shp, GA ReadOnly) if inds is None: print Could not open file sys. exit (1) inlayer = inds.getlayer() # creation du fichier de sortie : couche de points if os.path. exists ( test.shp ): driver.deletedatasource( test.shp ) outds = driver.createdatasource( test.shp ) if outds is None: print Could not create file sys. exit (1) outlayer = outds.createlayer( test, geom type=ogr.wkbpoint) # definition des attributs de la couche de sortie par recopie fielddefn = inlayer.getfeature(0).getfielddefnref( id ) outlayer.createfield( fielddefn ) fielddefn = inlayer.getfeature(0).getfielddefnref( cover ) outlayer.createfield( fielddefn ) # featuredefn decrits les attributs de la couche outlayer featuredefn = outlayer.getlayerdefn() #Pour toutes les formes de la couche d entree, faire cnt = 0 infeature = inlayer.getnextfeature() while infeature: # Creation d une forme par recopie outfeature = ogr.feature(featuredefn) outfeature.setgeometry(infeature.getgeometryref()) outfeature.setfield( id, infeature.getfield( id )) # Ajouter de la forme a la couche de sortie outlayer.createfeature(outfeature) # destruction des formes infeature.destroy() outfeature.destroy() # on regarde combien on a traite de forme avant de continuer cnt = cnt + 1 if cnt < 10: infeature = inlayer.getnextfeature() else : break # Fermeture des sources de donnees inds.destroy() outds.destroy() 1.4 Exercices Exercice 1 (Lecture d un fichier Shapefile) Le code ci-dessous illustre l écriture d une ligne dans un fichier texte. file = open( /home/guyet/data/progsig/test.txt, w ) i = 1 file. write( This is the line : + str(i) + \n ) i = 10 file. write( This is the seconde line : + str(i) + \n ) file. close () Écrire un script Python permettant d afficher dans un fichier texte les ID, COVER et les positions x y de chaque point du fichier sites.shp. Exécutez votre code et vérifier que le contenu du fichier de sortie est correct. 8

9 CHAPITRE I. UTILISATION DES DONNÉES VECTEURS Exercice 2 (Décomposition d un fichier Shapefile) Question a) Écrire un script Python créant un fichier output.shp qui ne contiendra que les points correspondant à la valeur trees de l attribut COVER du fichier sites.shp. Le fichier ne conservera que l attribut ID du fichier d origine, l autre attribut étant inutile. Question b) Transformer votre script en une fonction qui prendra en paramètre le nom du fichier d entrée, le nom du fichier de sortie et la valeur de l attribut dont on conserve les points. Question c) Écrire un script Python utilisant votre fonction pour créer un fichier pour chacune des modalités de l attribut COVER Vous pourrez récupérer la liste des modalités de l attribut en allant visualiser les données sous QGis. Exercice 3 (Fusion de deux fichiers Shapefile) Question a) Écrire un script qui construit un fichier shapefile unique à partir de deux fichiers shapefile de points. Vous supposerez que les deux fichiers utilisent le même système de projection. Question b) Tester votre fichier en reconstruisant un fichier site_rebuilt.shp à partir des décompositions obtenues lors de l exercice précédent. 2 Manipulation des formes géométriques 2.1 Les formes de base Toutes les formes sont des objets de la classe geometry représentent des formes géométriques de bases. Cette classe peut être spécialisée comme illustré par la Figure I.1. Figure I.1 Classes de geometry Les différents types spécifiques de géométries sont les suivantes : point (wkbpoint) : géométriquement défini par des coordonnées (x, y), une polyligne (wkblinestring) : une succession de points liés par des lignes (droites), un polyligne fermée (wkblinearring) : une successions de points qui définissent un anneau (le premier point est utilisé pour fermer la courbe, un polygone (wkbpolygon) : défini par une polyligne fermée dite extérieure et un ensemble de polylignes fermées dites intérieures (qui représente des extrusions de la forme définie par la polyligne extérieure. Finalement, ces formes de bases peuvent être regroupées sous la forme de MultiLineString, MultiPoint et MultiPolygone.! Attention! - Shapefile Un fichier shapefile qui contient des polygones peut contenir des polygones ou des multi-polygones... 9

10 Tutoriel Programmation SIG T. Guyet CHAPITRE I. UTILISATION DES DONNÉES VECTEURS 2.2 Création d une nouvelle géométrie Lors de la création d une nouvelle géométrie, il faut : 1. créer un objet représentant la géométrie (utiliser la fonction ogr.geometry) 2. spécifier les systèmes de coordonnées de la géométrie, 3. définir les propriétés géométriques de la géométrie (dépend de la nature de la géométrie) Dans les exemples ci-dessous, on illustre la création de formes géométriques. On reviendra plus tard sur la définition du système de coordonnées. Création d un point point = ogr.geometry(ogr.wkbpoint) point.addpoint(10,20) Création d une ligne line = ogr.geometry(ogr.wkblinestring) line.addpoint(10,10) line.addpoint(20,20) line.setpoint(0,30,30) Dans la dernière ligne, la fonction SetPoint transforme les coordonnées du premier point (identifié par l indice 0) Pour accéder aux informations d une polyligne : line.getpointcount() permet d avoir le nombre de points de la ligne line.getx(34) et line.gety(34) permettent d accéder aux coordonnées du 34eme points de la ligne (si il existe!) Création d un polygone L opération de création d un polygone est plus complexe, elle nécessite de créer un anneau extérieur puis de faire les anneaux intérieurs. #creation d un anneau exterieur ring = ogr.geometry(ogr.wkblinearring) ring.addpoint(0,0) ring.addpoint(100,0) ring.addpoint(100,100) ring.addpoint(0,100) ring.closerings() #creation d un anneau interieur inring = ogr.geometry(ogr.wkblinearring) inring.addpoint(25,25) inring.addpoint(75,25) inring.addpoint(75,75) inring.addpoint(25,75) inring.closerings() #creation du polygone polygon = ogr.geometry(ogr.wkbpolygon) polygon.addgeometry(outring) polygon.addgeometry(inring) 2.3 Destruction des géométries À chaque fois que vous créer une géométrie, celle-ci est retenue en mémoire de l ordinateur. Il est préférable d indiquer explicitement à l ordinateur qu une géométrie ne sera plus utile dans la suite du programme pour qu il libère de la mémoire. Ceci est possible grâce à l instruction Destroy(), par exemple : polygon.destroy() 2.4 Exemple de création d un fichier Shapefile à partir de rien... L exemple ci-dessous permet de créer des points dans un shapefile à partir de saisies clavier de l utilisateur. 10

11 CHAPITRE I. UTILISATION DES DONNÉES VECTEURS import ogr, os, sys # recuperation d un driver driver = ogr.getdriverbyname( ESRI Shapefile ) # creation d un nouveau fichier fin = test_generation.shp if os.path. exists ( fin ): driver.deletedatasource(fin) ds = driver.createdatasource(fin) if ds is None: print ( Could not create file, fin) sys. exit (1) layer = ds.createlayer( test, geom type=ogr.wkbpoint) # ajoute d un attribut aux points fielddefn = ogr.fielddefn( id, ogr.oftinteger) layer. CreateField( fielddefn ) while 1: val1=raw input("donnez une valeur de X: ") val1= int(val1) val2=raw input("donnez une valeur de Y (-1 pour quitter): ") val2= int(val2) if val2== 1: break # creation d un nouveau point point = ogr.geometry(ogr.wkbpoint) point.addpoint(val1, val2) # creation de la feature avec ses attributs associe a la forme featuredefn = layer.getlayerdefn() feature = ogr.feature(featuredefn) feature.setgeometry(point) feature. SetField( id, id) id = id+1 #ajout a la couche layer.createfeature(feature) point.destroy() feature.destroy() #fermeture du fichier ds.destroy() 2.5 Exercices Exercice 4 (Marche aléatoire) Question a) Écrire un script Python créant un fichier output.shp qui contiendra une polyligne qui passe par tous les points du fichier sites.shp. On ne s intéressera pas à l ordre dans lequel sont pris en compte les points. L exemple ci-dessous illustre comment construire une liste de points (listes de tuples) ordonnées par les X : shapedata = osgeo.ogr.open( sites.shp ) layer = shapedata.getlayer() points = [] for index in xrange(layer.getfeaturecount()): feature = layer.getfeature(index) geometry = feature.getgeometryref() points.append( geometry ) L exemple suivant illustre l utilisation des nombres aléatoires : import random x=random.randint(1,10) #genere un nombre entier aleatoire entre 1 et 10 compris, y=random.uniform(1,10) # genere un nombre reel aleatoire, selon une lois uniforme, entre 1 et

12 Tutoriel Programmation SIG T. Guyet CHAPITRE I. UTILISATION DES DONNÉES VECTEURS Question b) Écrire un script Python créant un fichier output.shp qui génere une marche aléatoire de longueur l à partir des points de sites.shp. Une marche aléatoire est une polyligne qui passe d un point à un autre de manière aléatoire. Pour réaliser ce script, vous commencer par construire une vecteur des points à partir du fichier sites.shp. Ensuite, vous générerez une polyligne de l points en tirant aléatoirement des points dans ce vecteur. Cette polyligne sera ensuite enregistrée dans le shapefile. 3 Opérations géométriques Quelques fonctions sur les géometries : contains : indique si un point est dans une autre forme 4 Utilisation des projections Par défaut, les geométries n ont pas de système de projection de défini. Lors de l utilisation des données, il y a donc une ambiguïté sur la signification des coordonnées. 4.1 Création d un système de coordonnées ROID["WGS 84", , ], TOWGS84[0,0,0,0,0,0,0]], PRIMEM["Greenwich",0], UNIT["degree", PARAMETER["central_meridian",-111], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], La première façon de récupérer un système de coordonnées est de la construire à partir de l un des systèmes de description d une projection. L exemple suivant illustre la construction d un système de coordonnées en utilisant un code EPSG. La seconde ligne créé un objet représentant un système de coordonnées et la troisième ligne définie le système de coordonnées à partir de l identifiant EPSG. Notez que l utilisation des transformations nécessite l utilisation de la librairie osr (complément de ogr). 1 import osr 2 coordsys = osr.spatialreference() 3 coordsys.importfromepsg(32612) Il existe de nombreuses fonction d importation d un système de coordonnées : ImportFromWkt(<wkt>) : <wkt> est une chaîne de caractères qui contient la description du système de projection (p.ex. PROJCS["UTM Zone 12, Northern Hemisphere", GEOGCS["WGS_1984", DATUM["WGS_1984", SPHE- AUTHORITY["EPSG","4326"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["false_northing",0], UNIT["Meter",1], AUTHORITY["EPSG","32612"]] ), ImportFromEPSG(<epsg>) : <epsg> est un nombre, identifiant dans la base des EPSG ImportFromProj4(<proj4>) : <proj4> est une chaîne de caractères qui contient la description dans le formalisme proj4 (p.ex. +proj=utm +zone=12 +ellps=wgs84 +datum=wgs84 +units=m +no_defs ). ImportFromESRI(<proj lines>) : voir la doc ImportFromPCI(<proj>, <units>, <parms>) : voir la doc ImportFromUSGS(<proj code>, <zone>) : voir la doc ImportFromXML(<xml>) : voir la doc 4.2 Récupération et attribution d un système de coordonnées Avec des couches Lors de l utilisation de données, il est possible de récupérer le système dans lequel sont exprimées les données en utilisant la fonction GetSpatialRef(). Dans le code suivant, on affiche le code WKT du système de coordonnées d une couche désignée par la variable layer : coordsys = layer.getspatialref() if coordsys is None: print pas de systeme de coordonnees pour cette couche else : print le systeme de coordonnees est + str( coordsys.exporttowkt() ) La fonction ExportToWkt() permet de récupérer une chaîne de caractères décrivant le système de projection. Remarque 2 12

13 CHAPITRE I. UTILISATION DES DONNÉES VECTEURS L utilisation de la fonction GetSpatialRef() fonctionne pour les couche vecteur mais également pour les couches raster. L attribution d un système de coordonnées à une couche se fait lors de sa création par la fonction CreateLayer. Le second argument de cette fonction permet au programmeur de définir le système de projection décrit dans le formalisme PROJ4. L exemple ci-dessous illustre l utilisation d un système de coordonnées lors de la création d une couche. import osr coordsys = osr.spatialreference() coordsys.importfromepsg(32612) layerout = dsout.createlayer( Nouvelle couche, coordsys.exporttoproj4(), geom type=ogr.wkbpoint )! Attention! Attention, l attribution d un système de coordonnées à une couche ne transforme pas les données. Si vous insérer des géométries exprimées dans un autre système de coordonnées, dans la couche, aucune modification ne sera faite sur les données : le résultat sera totalement faux! Avec des géométries Cette fonction peut également être appelée sur une géométrie. geom.assignspatialreference(out srs) 4.3 Transformation de système de coordonnées L intérêt de pouvoir récupérer des systèmes de coordonnées est de pouvoir passer d un système à l autre pour travailler sur des données exprimées dans des systèmes différents. Alors l objet décrivant le système de coordonnées n est pas en mesure de faire des transformations, il est nécessaire de faire appel à un objet annexe qui spécifiera la transformation d un système donné vers une autre. Pour créer une transformation, il faut : 1. Créer ou récupérer le système de coordonnées des données (SRS source) 2. Créer ou récupérer le système de coordonnées dans lequel on veut exprimer ces même données (SRS destination) 3. Créer la transformation du SRS Source vers le SRS desctination #Creation d un SRS source : 12N WGS84 sourcesr = osr.spatialreference() sourcesr.importfromepsg(32612) #Creation d un SRS destination : WGS84 targetsr = osr.spatialreference() targetsr.importfromepsg(4326) coordtrans = osr.coordinatetransformation(sourcesr, targetsr) La transformation peut s utiliser de deux manières : 1. pour transformer directement les géométries (geom.transform(coordtrans)) : dans ce cas, on utilise l objet de transformation dans une fonction de la géométrie. Cette fonction modifie directement et efficacement la géometrie geom. 2. pour projeter un point (coordtrans.transformpoint(point)) : dans le cas, il s agit d une fonction de l objet coordtrans. 4.4 Exemple : recopie d un fichier dans un système de coordonnées Lambert II Le fichier sites.shp est défini avec un système de coordonnées (peu importe lequel!). Mais, je souhaite recopier le fichier dans un système de corrdonnées Lambert II (EPSG27572). Le programme ci-dessous permet cette transformation : 13

14 Tutoriel Programmation SIG T. Guyet CHAPITRE I. UTILISATION DES DONNÉES VECTEURS import ogr, osr, sys from osgeo.gdalconst import * # chargement des constantes : pour GA ReadOnly filein = sites.shp fileout = siteslii.shp driver = ogr.getdriverbyname( ESRI Shapefile ) # ouverture du fichier d entree inds = driver.open( filein, GA ReadOnly) if inds is None: print Could not open file sys. exit (1) inlayer = inds.getlayer() #recuperation de l EPSG coordsys = inlayer.getspatialref() if coordsys is None: print pas de systeme de coordonnees pour cette couche sys. exit (1) else : print le systeme de coordonnees est + str( coordsys.exporttowkt() ) # creation du fichier de sortie : couche de points if os.path. exists ( fileout ): driver.deletedatasource(fileout) outds = driver.createdatasource(fileout) if outds is None: print Could not create file sys. exit (1) # definition du systeme de coordonnees Lambert II coordsyslii = osr.spatialreference() coordsyslii.importfromepsg(27572) #creation de la couche avec son systeme de coordonnees outlayer = outds.createlayer( couche reprojectee, srs=coordsyslii, geom type=ogr.wkbpoint) #creation de la transformation geometrique coordtrans = osr.coordinatetransformation(coordsys, coordsyslii) # definition des attributs de la couche de sortie par recopie fielddefn = inlayer.getfeature(0).getfielddefnref( id ) outlayer.createfield( fielddefn ) fielddefn = inlayer.getfeature(0).getfielddefnref( cover ) outlayer.createfield( fielddefn ) # featuredefn decrits les attributs de la couche outlayer featuredefn = outlayer.getlayerdefn() #Pour toutes les formes de la couche d entree, faire infeature = inlayer.getnextfeature() while infeature: # Creation d une forme avec recopie des attributs outfeature = ogr.feature(featuredefn) outfeature.setfield( id, infeature.getfield( id )) outfeature.setfield( cover, infeature.getfield( cover )) # Transformation de la geometry et attribution en sortie geom = infeature.getgeometryref() geom.transform( coordtrans ) outfeature.setgeometry( geom ) # Ajouter de la forme a la couche de sortie outlayer.createfeature(outfeature) outfeature.destroy() # destruction des formes infeature.destroy() # on regarde combien on a traite de forme avant de continuer infeature = inlayer.getnextfeature() # Fermeture des sources de donnees inds.destroy() 14

15 CHAPITRE I. UTILISATION DES DONNÉES VECTEURS outds.destroy() 4.5 Exercice Exercice 5 Écrire une programme qui affiche à l écran (ou dans un fichier) la liste des points de sites.shp avec leurs attributs qui se situent dans l étendue (exprimé dans le système de coordonnées Lambert 93, dont l EPSG est 2154) Upper-Left : [ , ] Lower-Right : [ , ] Question a) Vous pouvez commencez en transformant les points des limites en des points exprimés dans le référentiel du fichier Question b) Une autre façon (plus générique) de faire sera de construire une forme geométrique rectangulaire à partir des coordonnées brutes et de transformer cette forme dans le référentiel des données, puis d utiliser la fonction contains pour savoir si une forme est incluse ou non dans cette forme. Exercice 6 Le fichier zones.shp contient une information complémentaire de zone aux données sites.shp. On veut ajouter un attribut zone aux points de sites.shp correspondant au numéro de zone dans lequel se trouve un point. Question a) Commencez par explorer les données avec QGis Question b) Écrire un programme qui affiche ( print) pour chaque point la zone dans laquelle il se situe. Le fichier zones.shp n est pas dans le même référentiel que le fichier sites.shp. Aide : vous utiliserez la fonction contains pour savoir si un point est dans une géométrie le principe de l algorithme est donné ci-dessous Pour chaque point P de sites.shp faire : Pour chaque zone Z de zones.shp faire : Si Z contient le point P alors: afficher "le point P est dans la zone Z" Question c) Écrire un programme qui créer un fichier sitesz.shp qui contiendra les points de sites.shp avec les attributs id, COVER et Zone. 15

16 Tutoriel Programmation SIG T. Guyet CHAPITRE II. UTILISATION DES DONNÉES RASTER Chapitre II Utilisation des données Raster 1 Lire un fichier Raster 1.1 Chargement des drivers spécifiques (optionnel) Pour des formats de données spécifiques, il peut être nécessaire de charger des emph qui permettront à la librarie GDAL de comprendre le format de votre fichier. Pour les formats très standard (surtout opensource comme le geotiff), cette étape n est pas nécessaire. Vous devez charger les drivers pour les utiliser. Pour charger les drivers en une fois (pour lire un raster seulement, pas pour écrire), utiliser : gdal. AllRegister () Puis créez votre objet driver : driver = gdal.getdriverbyname( SRTMHGT ) enfin enregistrez le : driver. register () 1.2 Chargement des données d un fichier Raster Ouverture du fichier Vous pouvez maintenant lire un fichier raster sous forme de jeu de données (dataset) : file = N43E004.hgt ds = gdal.open(file, GA ReadOnly) if ds is None: print impossible d ouvrir +file sys. exit (1) La méthode Open() prend deux paramètres : le chemin du fichiers la méthode de lecture. Vous avez deux constantes possibles pour la méthode de lecture : GA ReadOnly = 0, GA Update = 1 Si python vous renvoie un message d erreur sur la constante GA ReadOnly, vous pouvez la remplacer par sa valeur (0 donc) ou bien importer les constante des GDAL. Voici quelques méthodes définies pour récupérer de l information sur vos données : ds.rasterxsize et ds.rasterysize permettent de connaître les dimensions de l image d origine (en nombre de pixels) ds.rastercount indique le nombre de bande dans l image ds.getprojection() indique le système de projection de la couche de.getgeotransform() indique les caractéristiques géométriques de la couche (notamment la position des points des angles et les tailles des pixels) NB : ds.rasterxsize et ds.rastercount sont bien des valeurs tandis que ds.getprojection() et de.getgeotransform() sont des fonctions Accès à une bande de données L accès aux informations d un fichier raster se fait bande par bande. Le principe de lecture du fichier est de sélectionner une bande, puis de sélectionner une région rectangulaire dont on va récupérer les données. Pour travailler sur les pixels, nous devons obtenir la bande (la première bande est numérotée 1) : 16

17 CHAPITRE II. UTILISATION DES DONNÉES RASTER band = ds.getrasterband(1) Puis récupérons les données sous la forme d un tableau à deux dimensions. L accès aux données d une bande se fait en donnant les positions (en nombre de pixels) de la zone rectangulaire à récupérer sous la forme d un tableau. data = band.readasarray(xoffset, yoffset, 100, 12) 100,12 est la taille de la cellule que nous voulons récupérer. xoffset et yoffset sont obtenus en calculant le nombre de pixels entre le bord en haut à gauche et le point pour chaque axes (ordonnés et abscisses). Nous connaissons les coordonnées du point haut gauche, la taille d une cellule en pixel. Pour récupérer toute une bande, il suffit d utiliser l instruction suivante data = band.readasarray(0, 0, ds.rasterxsize, ds.rasterysize) ou plus encore data = band.readasarray() Les données (cad la variable data) est un tableau en 2 dimensions de la taille qui a été définir plus haut (100, 12). Pour récupérer une valeur du tableau : value = data[23][3] Le tableau de valeur est un tableau de colonne, les deux valeurs sont bien des colonnes et des lignes et non des coordonnées. De plus la première ligne et la première colonne commencent à 0!! Attention! Ne lisez pas un pixel à chaque fois mais récupérer les tous en une fois, puis traiter les. Ne lisez qu un pixel à la fois si vous êtes sur d en avoir besoin que d un ou deux! Malheureusement pour de gros jeux de données, cela peut poser problème : la fonction ReadAsArray va chercher les informations sur le disque dur. Chaque appel de cette fonction est très lent (beaucoup plus que l accès à un élément d une matrice). La solution est d utiliser la taille des blocs ou de lire une ligne et de faire le traitement voulut, puis la ligne suivante. 1.3 Parcours des pixels de la matrice L exemple ci-dessous illustre l ouverture et le parcours type d un fichier raster. Le parcours se fait à l aide d une double-boucle : une boucle pour les lignes, indice j, imbriquée dans une boucle pour les colonnes, indice i. dataset = gdal.open(file, GA ReadOnly) band = dataset.getrasterband(1) data = band.readasarray() for i in range(dataset.rasterxsize): for j in range(dataset.rasterysize): # traitement de data[ j ][ i ]!!!! Attention! - Indicage colonne/ligne Faites très attention à ce que le premier indice corresponde aux colonnes et que le second corresponde aux lignes. On verra en particulier lors de la création d une couche raster, que l ordre n est pas toujours celui-ci! 1.4 Coordonnées des pixels L intérêt de traiter des images de télédétection réside en partie sur la possibilité de géolocaliser l information. Il est donc intéressant de savoir comment faire la correspondance entre les coordonnées dans l images (position d un pixel dans la la matrice) et les coordonnées physique exprimées dans le système de projection de la couche (cf. fonction GetProjection()). Ceci est possible grâce à la transformation géométrique qui accompagne les données. Il s agit d un tableau de 6 valeurs dont 4 nous intéresse plus particulièrement, comme l illustre le code ci-dessous : 17

18 Tutoriel Programmation SIG T. Guyet CHAPITRE II. UTILISATION DES DONNÉES RASTER geotransform = ds.getgeotransform() originx = geotransform[0] originy = geotransform[3] pixelwidth = geotransform[1] pixelheight = geotransform[5] Si nous cherchons la position dans la matrice de la coordonnées physique (43.2, 4.2), on peut utiliser les opérations suivantes : xoffset = int((4.2 originx) / pixelwidth) yoffset = int((43.2 originy) / pixelheight) Ces valeurs doivent être dans les limites acceptables de la matrice, sinon, il n existera pas de pixel correspondant à votre position, et vous risquez de provoquer une erreur! Si vous avez un offset négatif, il est fort probable que vous ayez choisit un point en dehors de la zone de couverture du raster. À l inverse, si on cherche les coordonnées physique d un pixel (i, j), on peut utiliser les opérations suivantes : x = originx + i* pixelwidth y = originy + i* pixelheight Remarque 3 geotransform[2] et geotransform[4] indique des rotations éventuelles de l image. Ces valeurs sont très souvent nulle et non-utiles... S il arrivait qu elle ne soient pas nulle, c est que vous n avez pas de chance... et aller voir une documentation plus complète! Exemples L exemple ci-dessous charge une image raster dans un format Géographique classique (GeoTiff), récupère une matrice correspondant à la seconde bande de cette image et calcule le minimum et le maximum de la bande. #ouverture du fichier RASTER dataset = gdal.open("monfichier.tif", GA ReadOnly ) if dataset is None: print "Warning : invalid file name" sys. exit (1) #affichage de quelques proprits de l image print Nombre de couches : + str(dataset.rastercount) print Taille de l\ image : + str(dataset.rasterxsize) + x + str(dataset.rasterysize) print Projection : + str(dataset.getprojection()) if dataset.rastercount < 2: print "Warning : invalid raster file, not enought layers" sys. exit (1) # rcupration d une bande de l image sous la forme d une matrice band = dataset.getrasterband(2) array=band.readasarray() bmin = array [1][1] bmax = array[1][1] for i in range(dataset.rasterxsize): for j in range(dataset.rasterysize): if array [ j ][ i]>bmax: bmax=array[j][i ] if array [ j ][ i]<bmin: bmin=array[j][ i ] print Valeurs extremes de la couche : + str(bmin) + - +str(bmax) Le second exemple présente plusieurs techniques qui peuvent être utiles : L utilisation d une liste de bandes pour facilement faire des traitements à partir de plusieurs bandes (impossible pour de grandes images!!) L extraction d une sous-zone de l image à partir de coordonnées 18

19 CHAPITRE II. UTILISATION DES DONNÉES RASTER ds = gdal.open( United_Kingdom_Ireland terra.721.1km.tif, GA ReadOnly) if ds is None: print Could not open image sys. exit (1) # liste de points d interet (en WGS 84, systme de coordonnes de la couche) xvalues = [ 1.199, 0.049] yvalues = [50.567, ] geotransform = ds.getgeotransform() xorigin = geotransform[0] yorigin = geotransform[3] pixelwidth = geotransform[1] pixelheight = geotransform[5] imin = int((xvalues[0] xorigin) / pixelwidth) imax = int((xvalues[1] xorigin) / pixelwidth) jmin = int((yvalues[1] yorigin) / pixelheight) jmax = int((yvalues[0] yorigin) / pixelheight) # creation d une liste de bandes bandlist = [] # lecture des bandes uniquement pour la rgion d interet for i in range(ds.rastercount): band = ds.getrasterband(i+1) data = band.readasarray(imin, jmin, imax imin+1, jmax jmin+1) bandlist.append(data) # Parcours des donnees : on parcourt les matrices, donc les indices sont entre 0 et la taille de la matrice!! for i in range(0, imax imin+1): for j in range(0, jmax jmin+1): #calcul du NDVI ndvi = (float(bandlist [1][ j ][ i ]) float(bandlist [2][ j ][ i ]) ) / ( float (bandlist [1][ j ][ i ]) + float(bandlist [2][ j ][ i ]) ) s = str( i ) + + str(j) + : + str(ndvi) print s 2 Création d une couche raster 2.1 Principe Nous allons maintenant créer des images raster. Le principe générale de la création d un raster est le suivant : 1. Commencer par créer un objet correspondant à fichier raster en précisant les informations nécessaires : sa taille, son nombre de bande, sa geometrie, etc. 2. Pour chaque couche, créer à côté une matrice numpy à deux dimensions sur laquelle vous pourrez travailler facilement 3. Copier les données de la matrice numpy dans la couche de votre choix Rentrons maintenant un peu plus dans le détail. De même que pour les images vecteurs, il faut tout d abord créer un driver spécifique à un format de fichier. Dans mon cas, je n utilise que du GeoTiff, pour les autres noms de driver, voir les documentations de GDAL. driver = gdal.getdriverbyname( "GTiff" ) La création d une nouvelle couche peu se faire grâce à la fonction Create du driver. Cette fonction prend 5 arguments : le nom du fichier, le nombre de ligne et de colonne de l image (toutes les bandes ont la même taille), le nombre de bandes, le codage des éléments de la bande. Les valeurs pour ce paramètre sont, par exemple, GDT Byte, GDT Int16, GDT Int32, GDT Float32, GDT Float64. dst ds=driver.create("output.tif",dataset.rasterxsize,dataset.rasterysize,5,gdal.gdt Int32) Il est ensuite possible d attribuer une projection et une transformation à la couche en utilisant les fonctions ci-dessous. Ces attributs sont souvent récupérer par recopie de ceux d une couche d origine. dst ds.setprojection (...) pour définir une projection (voir l utilisation des projections dans le chapitre précédent) 19

20 Tutoriel Programmation SIG T. Guyet CHAPITRE II. UTILISATION DES DONNÉES RASTER dst ds.setgeotransform(...) pour définir une transformation géométrique. La fonction attend en paramètre une matrice de taille 6. La création d une matrice numpy doit se faire en concordance avec les attributs d une couche. Il faut : que la taille de la matrice corresponde à la taille de la couches que le type de la matrice numpy correspond au type des éléments d une bande de la couche. On retrouve les mêmes types que pour le cinquième paramètres de la création d une couche pour les matrices numpy : bool, int16, int32, float32, float64. L exemple ci-dessous créé une matrice de 0 avec les propriétées nécessaire à la bande du raster : taille et type (float64). dst ds=driver.create("output.tif",dataset.rasterxsize,dataset.rasterysize,1,gdal.gdt Float64) size = (sizex, sizey) array= np.zeros( size, dtype= float64 ) dst ds.getrasterband(1).writearray( array ) Les valeurs d une matrice sont attribuées à une bande à l aide de la fonction WriteArray d une bande : dst ds.getrasterband(1).writearray( array ) Exemple : calcul d une image NDVI Dans cet exemple, on illustre la création d une image NDVI à partir d une image MODIS (bandes 7, 2 et 1). import gdal from gdalconst import * import numpy as np dataset = gdal.open( United_Kingdom_Ireland terra.721.1km.tif, GA ReadOnly) if dataset is None: print Could not open image sys. exit (1) if dataset.rastercount!= 3: print "Warning : invalid raster file : must have 3 bands\n" sys. exit (1) #recuperation des donnees sous la forme de matrices band = dataset.getrasterband(2) array nir =band.readasarray() band = dataset.getrasterband(3) array red=band.readasarray() # Construction d une matrice vide pour l image NDVI array= np.zeros( (dataset.rasterysize,dataset.rasterxsize), dtype= float64 ) # Remplissage de la matrice for j in range(dataset.rasterxsize): for i in range(dataset.rasterysize): if float ( array nir [ i ][ j ]) + float( array red [ i ][ j ])!= 0: array [ i ][ j]= ( float ( array nir [ i ][ j ]) float( array red [ i ][ j ]) ) / ( float ( array nir [ i ][ j ]) + float( array red [ i ][ j ]) ) # Enregistrement de l image transformee driver = gdal.getdriverbyname( "GTiff" ) dst ds = driver.create( "NDVI.tif", dataset.rasterxsize, dataset.rasterysize, 1, gdal.gdt Float64 ) if dst ds is None: print "Error : impossible to create the file!\n" sys. exit (1) if not dataset.getgcpprojection() is None: dst ds.setprojection( dataset.getgcpprojection() ) # meme projections geotransform = dataset.getgeotransform() # meme transformations geometriques if not geotransform is None: dst ds.setgeotransform( geotransform ) dst ds.getrasterband(1).writearray( array ) #fermeture des fichiers dst ds=none dataset=none 20

Certificat Big Data Apprentissage TP1 Introduction à Python

Certificat Big Data Apprentissage TP1 Introduction à Python Certificat Big Data Apprentissage TP1 Introduction à Python Olivier Schwander 30 septembre 2015 1 / 31 Outline Environnement de travail Commentaires Installation Éditeur Expressions Structures de contrôle

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

TP 1 M1 Informatique Apprentissage Automatique. Premières classifications : apprentissage et évaluation

TP 1 M1 Informatique Apprentissage Automatique. Premières classifications : apprentissage et évaluation Premières classifications : apprentissage et évaluation L objectif de ce TP est double : prise en main de la bibliothèque scikit-learn de Python, dédiée à l apprentissage automatique, sensibilisation à

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python Initiation à la programmation en Python Damien Vergnaud École Normale Supérieure 4 mars 2009 Damien Vergnaud (École Normale Supérieure) Initiation à la programmation en Python 4 mars 2009 1 / 25 Table

Plus en détail

Notion de portée locale (1)

Notion de portée locale (1) Notion de portée locale (1) Les notions de portée locale v.s. globale définies pour les blocs sont également valides dans le cadre des fonctions 1. Comme dans le cas des blocs, la portée permet de résoudre

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

Plus en détail

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation Chapitre 2 Langage C 2.1 Le langage C, un langage non interprété Le C est un langage de programmation comme il en existe beaucoup d autres (C++, Fortran, Python, Matlab, IDL, ADA...). Il existe deux grandes

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html 1 Généralités sur la programmation ALGORITHMIE - PROGRAMMATION 2 Algorithmie vs. Programmation Algorithmie Programme

Plus en détail

xkcd Le langage Python La GUI tkinter Christian Nguyen Département d informatique Université de Toulon et du Var 2012-2013

xkcd Le langage Python La GUI tkinter Christian Nguyen Département d informatique Université de Toulon et du Var 2012-2013 La GUI tkinter Département d informatique Université de Toulon et du Var 2012-2013 Présentation Python est né en 1990, son concepteur est De Guido Van Rossum(Pays Bas). Il présente les caractéristiques

Plus en détail

TP Compilation Analyse lexicale

TP Compilation Analyse lexicale TP Compilation Analyse lexicale Eric Ramat ramat@lisic.univ-littoral.fr 9 mai 2014 Durée : 6 heures 1 Introduction Le but de cet TP est de vous donner les bases nécessaires afin de pouvoir écrire votre

Plus en détail

Introduction à Scilab

Introduction à Scilab Introduction à Scilab Nicolas Kielbasiewicz 21 juin 2007 Scilab est un logiciel gratuit développé à l INRIA (l Institut National de Recherche en Informatique et Automatique) sous Windows, Linux et Mac,

Plus en détail

II. Conversions. I. Initialisation. III. Méthode point. TD Python Traitement d images MP*

II. Conversions. I. Initialisation. III. Méthode point. TD Python Traitement d images MP* Le but de ce TD est d utiliser les procédures et fonctions Python pour traiter des fichiers images. II. Conversions I. Initialisation Importer le module numpy sous l appellation np. On utilise le module

Plus en détail

Python 3 Mémo. Pour permettre au programme en cours d exécution d afficher un texte ou un nombre on utilise la commande print.

Python 3 Mémo. Pour permettre au programme en cours d exécution d afficher un texte ou un nombre on utilise la commande print. Langage Python 3 Mémo I Entrées, Sorties et Variables 1 ) Sorties Pour permettre au programme en cours d exécution d afficher un texte ou un nombre on utilise la commande print. Exemples : print("bonjour!")

Plus en détail

Les bases du langage Python

Les bases du langage Python Décembre 2006 Plan Les bases de Python 1 Les bases de Python Introduction La syntaxe de Python Les types de Python 2 Les fonctions Les classes Les exceptions 3 4 5 Pilot Systems Les bases de Python Introduction

Plus en détail

1 Description générale de VISFIELD

1 Description générale de VISFIELD Guide d utilisation du logiciel VISFIELD Yann FRAIGNEAU LIMSI-CNRS, Bâtiment 508, BP 133 F-91403 Orsay cedex, France 11 décembre 2012 1 Description générale de VISFIELD VISFIELD est un programme écrit

Plus en détail

Série 2 Premiers programmes

Série 2 Premiers programmes Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend

Plus en détail

Support de cours ARGIS 9.xx

Support de cours ARGIS 9.xx Support de cours ARGIS 9.xx Emmanuel Bonnet Université de Lille1 1 Découverte du logiciel et appropriation du vocabulaire ESRI Quelques mots sur le logiciel et ses versions antérieures! " #!!!!!! $%&!'!!

Plus en détail

Exemples d'activités sur les images numériques

Exemples d'activités sur les images numériques Annexe 1 1 Accès aux composantes RVB d un pixel dans GIMP Pour agrandir l image : touche Ctrl maintenue enfoncée tout en tournant la molette de la souris, ou bien menu Affichage > Zoom > 1600 % Dans la

Plus en détail

Utilisation des tableaux numériques

Utilisation des tableaux numériques 8 Utilisation des tableaux numériques Les tableaux représentent un type de stockage de données souvent utilisé en langage C. Le Chapitre 6 vous en a donné un bref aperçu. Aujourd hui, vous allez étudier

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Chiffrement en Python

Chiffrement en Python Emmanuel MORAND (http://www.emmanuelmorand.net) 11 janvier 2008 Ce document a pour objectif de permettre la découverte du langage de programmation Python et de sa très grande efficacité. Les différentes

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Epidémiologie, l urne de Pólya, partie II

Epidémiologie, l urne de Pólya, partie II Epidémiologie, l urne de Pólya, partie II Se mettre par groupe de deux. Traiter la fiche dans l ordre. Un compte de rendu de TP devra être rendu avec les réponses écrites aux questions, les recherches

Plus en détail

Démarrage rapide. Protection de logiciels sous MAC avec DinkeyDongle. Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika.

Démarrage rapide. Protection de logiciels sous MAC avec DinkeyDongle. Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika. Démarrage rapide Protection de logiciels sous MAC avec DinkeyDongle Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika.fr Contact Technique : Tél. : 02 47 35 53 36 Email : support@aplika.fr

Plus en détail

Territoires, Environnement, Télédétection et Information Spatiale. Unité mixte de recherche Cemagref - CIRAD - ENGREF

Territoires, Environnement, Télédétection et Information Spatiale. Unité mixte de recherche Cemagref - CIRAD - ENGREF Territoires, Environnement, Télédétection et Information Spatiale Unité mixte de recherche Cemagref - CIRAD - ENGREF Master ère année Analyse spatiale, analyse géographique, spatialité des sociétés Master

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Les outils actuels permettent-ils d automatiser la production de cartes? De quels outils dispose-t-on?

Les outils actuels permettent-ils d automatiser la production de cartes? De quels outils dispose-t-on? Le "Portrait de la Biodiversité Communale" est un document réalisé au niveau national pour chaque commune, regroupant les connaissances publiques disponibles et mobilisables à l'échelle nationale en matière

Plus en détail

Concours de Programmation ULCO 2013

Concours de Programmation ULCO 2013 Concours de Programmation ULCO 2013 Notice d aide à l utilisation de Prog&Play 7 mars 2013 Introduction Le concours de cette année a pour cadre un jeu de stratégie temps réel, basé sur le moteur Spring,

Plus en détail

TP 1 - Utilisation de Python

TP 1 - Utilisation de Python TP 1 - Utilisation de Python L objectif de ce TP est d apprendre à faire réaliser des calculs et des tâches répétitives à un ordinateur. Pour faire cela, il est nécessaire de communiquer avec l ordinateur

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

1 Récupération des données

1 Récupération des données Lycée Buffon MP*/PSI 014-15 Épreuve d informatique du concours blanc, jeudi 5 mars 015 (3h00) Les documents, téléphones portables, ordinateurs et calculatrices sont interdits. Le sujet de cette épreuve

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

TD2 - Ecriture binaire/héxadécimale d une entier. PCSI - Lycée Thiers

TD2 - Ecriture binaire/héxadécimale d une entier. PCSI - Lycée Thiers TD2 - Ecriture binaire/héxadécimale d une entier Ecriture d un nombre dans une base Ecriture d un nombre en base m > 1 Ecriture d un nombre en base 2 Ecriture d un nombre en base 16 Corrigé Corrigé Ecriture

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Formation d initiation au logiciel Guyasim 13/05/2014

Formation d initiation au logiciel Guyasim 13/05/2014 Formation d initiation au logiciel Guyasim 13/05/2014 Donner un aperçu des fonctionnalités du logiciel Guyasim Définir un scénario d aménagement forestier Consulter les impacts de l aménagement forestier

Plus en détail

Version 1.4. Note sur la création de la base de données géographique et la configuration du module SVG. Par JC Desconnets jcd@teledetection.

Version 1.4. Note sur la création de la base de données géographique et la configuration du module SVG. Par JC Desconnets jcd@teledetection. Version 1.4 Note sur la création de la base de données géographique et la configuration du module SVG Par JC Desconnets jcd@teledetection.fr Montpellier Décembre 2006 Préambule : Cette note donne les opérations

Plus en détail

Examen Programmation ENSAE première année 2006 Examen écrit (1 heure)

Examen Programmation ENSAE première année 2006 Examen écrit (1 heure) Examen Programmation ENSAE première année 2006 Examen écrit (1 heure) 1 Lors de la correction, je n ai pas enlevé de points pour les erreurs de syntaxe et accordé les points de la question à partir du

Plus en détail

Cycle de vie Définitions Recette Efficacité Rubik s cube Pourquoi Algo simple Les briques De l algorithme au programme Py

Cycle de vie Définitions Recette Efficacité Rubik s cube Pourquoi Algo simple Les briques De l algorithme au programme Py Cycle de vie Définitions Recette Efficacité Rubik s cube Pourquoi Algo simple Les briques De l algorithme au programme Py M1204 - Algorithmique et informatique Chapitre 1 : présentation Ludovic Grossard

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Travaux dirigés de traitement d images de Télédétection

Travaux dirigés de traitement d images de Télédétection Travaux dirigés de traitement d images de Télédétection L objectif principal de ce TD consiste à introduire la notion de données multitemporelles afin d effectuer une classification de l occupation du

Plus en détail

Module ITC34 - Algorithmique et Programmation

Module ITC34 - Algorithmique et Programmation Module ITC34 - Algorithmique et Programmation TDs Algorithmique (trois séances) Benoît Darties - benoit.darties@u-bourgogne.fr Univ. Bourgogne Franche-Comté Année universitaire 2015-2016 Avant-propos :

Plus en détail

Java & Algorithme Corrigé du test final

Java & Algorithme Corrigé du test final Java & Algorithme Corrigé du test final 1 QUESTIONS EN JAVA Chaque question est sur un point, sauf certaines sur deux points. En tout, le QCM est noté sur 24 : la note est divisée par 6 pour revenir entre

Plus en détail

Tests de l environnement python pour des traitements SIG Transport

Tests de l environnement python pour des traitements SIG Transport Tests de l environnement python pour des traitements SIG Transport Contact : Patrick GENDRE / département DCEDI pat.gendre@developpement-durable.gouv.fr 04 4224 7687 http://www.cete-mediterranee.fr/tt13/www

Plus en détail

Mini-Projet : Tournoi de Dames

Mini-Projet : Tournoi de Dames Mini-Projet : Tournoi de Dames L objectif du projet est de programmer un jeu de dames de façon à ce que votre programme puisse jouer une partie de dames avec les programmes des autres étudiants. 1 Organisation

Plus en détail

Code_Aster. Méthodes Python d'accès aux objets Aster

Code_Aster. Méthodes Python d'accès aux objets Aster Titre : Méthodes Python d'accès aux objets Aster Date : 23/07/2015 Page : 1/11 Méthodes Python d'accès aux objets Aster Résumé : Ce document présente les méthodes Python permettant d accéder aux informations

Plus en détail

Optimisation en production cartographique : l automatisation

Optimisation en production cartographique : l automatisation Optimisation en production cartographique : l automatisation Veille Technologique Décembre 2011 Référent : Thomas Milon Tuteur : Philippe Vismara Aurélie Poncet & Hanneke Van der Most 2 Contexte «Portrait

Plus en détail

Note sur la création de la base de données géographique

Note sur la création de la base de données géographique Note sur la création de la base de données géographique Version Commentaires 1 Auteurs : Jean Christophe Desconnets (jcd@teledetection.fr) ; Stéphane Clerc (clerc@teledetection.fr ) Date de création :

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

1 Valeur d une expression

1 Valeur d une expression PCSI Informatique: Cours2 1 VALEUR D UNE EXPRESSION Expressions et variables en informatique 1 Valeur d une expression Expression : suite de caractères qui a un sens pour la machine Valeur d une expression

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Tableaux et pointeurs (corrigé)

Tableaux et pointeurs (corrigé) Tableaux et pointeurs (corrigé) Tous les exercices sont à faire. 1 Tableaux Exercice 1. Moyenne (*) Écrivez une fonction qui calcule la moyenne de n nombres stockés dans un tableau de double. Prototype

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Variables, types simples, expressions et instructions simples

Variables, types simples, expressions et instructions simples 2.2 - Chap. 05 Variables, types simples, expressions et instructions simples 1 / 5 Variables, types simples, expressions et instructions simples 1 Variable de types simples 1.1 Notion de variable Une variable

Plus en détail

Interfaçage de programmation. c Olivier Caron

Interfaçage de programmation. c Olivier Caron Interfaçage de programmation 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. L aspect

Plus en détail

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td. Exercice 1 TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.htm Exercices de base de Programmation Arbre Programmatique

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

la réalisation d'un site d'inscriptions

la réalisation d'un site d'inscriptions Rapport du projet la réalisation d'un site d'inscriptions Réaliser par : Fatimaezzahra Yazough Année :2014 /2015 1/9 Yazough INTRODUCTION Le but de ce projet et de réaliser une maquette de site web pour

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html 1 Découpage des programmes PROCÉDURES ET FONCTIONS 2 Généralités sur les fonctions et les modules sous Python Pourquoi

Plus en détail

II. EXCEL/QUERY ET SQL

II. EXCEL/QUERY ET SQL I. AU TRAVAIL, SQL! 1. Qu est-ce que SQL?... 19 2. SQL est un indépendant... 19 3. Comment est structuré le SQL?... 20 4. Base, table et champ... 21 5. Quelle est la syntaxe générale des instructions SQL?...

Plus en détail

Support de TD ArcGIS 10.1. Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT 2014-2015. 3 e année ingénieur

Support de TD ArcGIS 10.1. Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT 2014-2015. 3 e année ingénieur JEAN-MARC GILLIOT 2014-2015 Durée 1,5 heures Introduction à l automatisation et au développement avec ArcGIS 10.1 3 e année ingénieur Support de TD ArcGIS 10.1 Grande école européenne d'ingénieurs et de

Plus en détail

DREAL Corse. Version 2014. Atlas et catalogue de métadonnées

DREAL Corse. Version 2014. Atlas et catalogue de métadonnées Atlas et catalogue de métadonnées DREAL Corse Version 2014 Application conçue par la Direction Régionale de l Environnement, de l Aménagement et du Logement dans le cadre de l Observatoire du Développement

Plus en détail

Systèmes d'informations

Systèmes d'informations Systèmes d'informations C'est un ensemble d'outils pour stocker / gérer / diffuser des informations / des données Le stockage : Bases de données + SGDBR La gestion : Saisie, Mise à jour, Contrôle La diffusion

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Tableaux dynamiques: vecteurs

Tableaux dynamiques: vecteurs Tableaux dynamiques: vecteurs Pour pallier les défauts inhérents à la rigidité des tableaux de taille fixe (built-in array), la librairie (générique) standard 1 de C++ fournit un type de donnée 2 dénommée

Plus en détail

ENRICHIR LES DONNEES DE DETAILS ACCEDEES A TRAVERS UN RAPPORT OLAP

ENRICHIR LES DONNEES DE DETAILS ACCEDEES A TRAVERS UN RAPPORT OLAP ENRICHIR LES DONNEES DE DETAILS ACCEDEES A TRAVERS UN RAPPORT OLAP SAS Web Report Studio offre depuis de nombreuses versions la possibilité de visualiser les observations spécifiques à partir des données

Plus en détail

AUTOMATISER SES TÂCHES AVEC LES MACROS

AUTOMATISER SES TÂCHES AVEC LES MACROS AUTOMATISER SES TÂCHES AVEC LES MACROS U ne macro est un ensemble de commandes qui s exécute autant de fois que nécessaire simplement en les appelant par son nom. Les macros permettent d automatiser les

Plus en détail

Python en 10 minutes

Python en 10 minutes Python en 10 minutes Poromenos http://www.poromenos.org Traduction: Matthieu Nouzille http://www.oxyg3n.org 1 Introduction Vous souhaitez vous mettre au langage de programmation Python mais vous n arrivez

Plus en détail

VI.1 - PREREQUIS. VI.1.1 - Structure et identifiants. VI.1.2 - Précision et référentiels

VI.1 - PREREQUIS. VI.1.1 - Structure et identifiants. VI.1.2 - Précision et référentiels OBJECTIF : L utilisation des données, leur gestion, leur analyse implique très souvent la nécessité d en sélectionner une partie suivant un ou plusieurs critères, de les joindre à d autres données... Les

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Algo & Prog, avec Python (L1-Sciences) TP n 1, Automne 2015

Algo & Prog, avec Python (L1-Sciences) TP n 1, Automne 2015 Algo & Prog, avec Python (L1-Sciences) TP n 1, Automne 2015 Travail sous Windows au 2 ème étage (CRIPS) Vous allez travailler sur des ordinateurs sous le système d exploitation Windows-XP. Peutêtre utilisez-vous

Plus en détail

Séance de travaux pratiques n 1 Quelques éléments de correction

Séance de travaux pratiques n 1 Quelques éléments de correction Master Sciences, Technologies, Santé Mention Mathématiques, spécialité Enseignement des mathématiques Algorithmique et graphes, thèmes du second degré Séance de travaux pratiques n 1 Quelques éléments

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Introduction 2 les étapes de la connexion

Plus en détail

Traitement d'image ou Programmer des fonctions de logiciels de retouche d'images!

Traitement d'image ou Programmer des fonctions de logiciels de retouche d'images! I. Bien ranger ses affaires. Traitement d'image ou Programmer des fonctions de logiciels de retouche d'images! Pour bien travailler il est très important de savoir où sont rangées ses affaires. On va travailler

Plus en détail

DIIC - INC, 3 e année. Module COMV TP 1 - Introduction au codage d image : manipulation des outils

DIIC - INC, 3 e année. Module COMV TP 1 - Introduction au codage d image : manipulation des outils DIIC - INC, 3 e année Module COMV TP 1 - Introduction au codage d image : manipulation des outils Gaël Sourimant, Luce Morin 18 octobre 2006 1 Introduction Le but de ce TP est d observer et de comparer

Plus en détail

Plan du cours. - Introduction - Emergence et évolution des systèmes d exploitation - Système de fichiers : FAT - NTFS - Ordonnancement

Plan du cours. - Introduction - Emergence et évolution des systèmes d exploitation - Système de fichiers : FAT - NTFS - Ordonnancement Plan du cours - Introduction - Emergence et évolution des systèmes d exploitation - Système de fichiers : FAT - NTFS - Ordonnancement Systèmes d exploitation 1ère année p. 1 FAT FAT = File Allocation Table

Plus en détail

DS Informatique Scientifique

DS Informatique Scientifique DUT Mesures Physiques - semestre S'2 DS Informatique Scientifique 10 décembre 2012 0. Directives Durée : 2h Tout système électronique interdit (calculatrice, téléphone, etc). Téléphone portable éteint

Plus en détail

Algorithmique - Programmation 1. Cours 10

Algorithmique - Programmation 1. Cours 10 Algorithmique - Programmation 1 Cours 10 Université Henri Poincaré CESS Epinal Automne 2008 1/ 25 Plan Caml fonctionnel vs impératif Caml fonctionnel vs impératif Le type unit Données mutables Les structures

Plus en détail

Module Mixmod pour OpenTURNS

Module Mixmod pour OpenTURNS Module Mixmod pour OpenTURNS Régis LEBRUN EADS Innovation Works 23 septembre 2013 EADS IW 2013 (EADS Innovation Work) 23 septembre 2013 1 / 21 Outline Plan 1 OpenTURNS et propagation d incertitudes 2 Mixmod

Plus en détail

Une brève introduction à Python

Une brève introduction à Python Une brève introduction à Python 1 Présentation Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l'imposer) une approche modulaire et orientée objet de la programmation.

Plus en détail

Licence E.E.A. TD N 2 de Langage C/C++

Licence E.E.A. TD N 2 de Langage C/C++ TD N 2 de Langage C/C++ 1 Licence E.E.A. TD N 2 de Langage C/C++ Ce TD a pour objectif de vous faire découvrir et utiliser le langage C et peut être C++. Il s agira de transcrire sous la forme d un programme

Plus en détail

TP1 - Introduction au langage C

TP1 - Introduction au langage C ENS Lyon L-Info PROJ1 2014-2015 TP1 - Introduction au langage C Sujet à terminer pour le dimanche 20 à 2h59, sous forme d une archive.zip contenant votre code source, par email à aurelien.cavelan@ens-lyon.fr.

Plus en détail

IPT : Cours 2. La représentation informatique des nombres

IPT : Cours 2. La représentation informatique des nombres IPT : Cours 2 La représentation informatique des nombres (3 ou 4 heures) MPSI-Schwarz : Prytanée National Militaire Pascal Delahaye 28 septembre 2015 1 Codage en base 2 Définition 1 : Tout nombre décimal

Plus en détail

TD : Géoréférencer une image (QGIS) Thématique parcellaire agricole

TD : Géoréférencer une image (QGIS) Thématique parcellaire agricole http://www.sigea.educagri.fr http://creativecommons.org/licenses/by-nc-nd/2.0/fr/ TD : Géoréférencer une image (QGIS) Thématique parcellaire agricole Temps de réalisation : 1 heure. Pré-requis : Environnement

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Ce tutoriel suppose que vous ayez installé les logiciels QGIS. http://www.qgis.org/en/site/ http://scapetoad.choros.ch/

Ce tutoriel suppose que vous ayez installé les logiciels QGIS. http://www.qgis.org/en/site/ http://scapetoad.choros.ch/ Un logiciel SIG (Système d Information Géographique) est une base de données spatiales qui sert, entre autres, à faire des cartes. Cela signifie qu à chaque ligne d un tableau d une base de données correspond

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

MODULE 3 Analyses thématiques

MODULE 3 Analyses thématiques MODULE 3 Analyses thématiques Ce module a pour objectif d approfondir les différents modes de représentation cartographique des données attributaires à l'aide de la gestion des styles. - la nouvelle symbologie

Plus en détail

Arbres binaires et codage de Huffman

Arbres binaires et codage de Huffman MP Option Informatique Premier TP Caml Jeudi 8 octobre 2009 Arbres baires et codage de Huffman 1 Arbres baires Soit E un ensemble non vide. On défit la notion d arbre baire étiqueté (aux feuilles) par

Plus en détail

Présentation de Python et du module turtle

Présentation de Python et du module turtle Seconde, 12 novembre 2012 Présentation de Python et du module turtle 1 Environement Python et remarques générales 1.0.1 Lancer l interpréteur Python : Sous linux-ubuntu vous allez dans le menu Application/programmation

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27 Gérard Swinnen Apprendre à programmer avec Python 3 Avec 60 pages d exercices corrigés! Objet Multithreading Bases de données Événements Programmation web Programmation réseau Unicode Impression PDF Python

Plus en détail