#1 Thu 18 March 2010 16:41
- Margouilla
- Juste Inscrit !
- Date d'inscription: 30 Dec 2008
- Messages: 3
ArcGis 9.x Extraction données raster via point shp
Bonjour,
Je suis actuellement sur un projet d'étude visant à quantifier des variations verticales au cours du temps. Pour celà j'ai un mnt récent sous forme de raster et plusieurs points (renseignés en X, Y et Z) de mesures obtenus à des époques différentes.
Cependant, les mesures antèrieures étant trop ponctuelles, l'élaboration d'un raster (pour ensuite effectuer un différentiel d'altitude) par interpolation n'est pas envisageable.
Afin d'exploiter malgré tout ces mesures, mon objectif est de comparer les valeurs pixel (du raster) aux mesures point par point. Ceci étant, l'incertitude sur la localisation des mesures (qui est nettement plus élevé que celle du mnt) m'oblige à comparer un point de mesure à un ensemble de pixel compris dans la zone d'incertitude (cercle centré sur le point de rayon R).
J'essaye donc d'exporter dans une table les valeurs des pixel compris dans la zone d'incertitude de chaque point de mesure, valeurs associées au X Y Z de ces derniers (cf. tableau), mais sans résultat.
En effet, les commandes Extract Values To Point et Spatial Join d'Arc ToolBox m'exportent qu'une seule valeur (moyenne, maximale ou minimale).
Je vous ai illustré en image mon problème afin d'être le plus clair possible.
Je vous remercie d'avance.
Dernière modification par Margouilla (Thu 18 March 2010 16:42)
Hors ligne
#2 Thu 18 March 2010 17:17
- Olive 71
- Participant actif
- Date d'inscription: 10 Feb 2010
- Messages: 59
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
Il faut utiliser l'outil "Raster vers points" dans la toolbox "Outils de conversion" / "A partir d'un raster".
Pour limiter aux zones d'étude il faut ajouter un masque (buffer autour des points par exemple) dans les paramètres d'analyse raster de l'environnement de traitement.
Bon courage.
Olivier
Hors ligne
#3 Thu 18 March 2010 17:47
- Margouilla
- Juste Inscrit !
- Date d'inscription: 30 Dec 2008
- Messages: 3
Re: ArcGis 9.x Extraction données raster via point shp
J'ai déjà réussi à isoler (à l'aide de Buffer) les pixels du raster qui m'intéresse, mais le souci est que je n'arrive pas à les regrouper par zone pour obtenir une table où chaque zone représente une ligne renseignée par toutes les valeurs des pixels de cette zone (que se soit avec Union, Spatial Join, Extract Values To Point). A la place, il me sort la valeur d'un seul pixel. J'ai exploré les options Environments, mais sans succés.
Hors ligne
#4 Thu 18 March 2010 21:37
- JVA95
- Participant occasionnel
- Lieu: Auvers sur Oise
- Date d'inscription: 16 Jun 2007
- Messages: 19
Re: ArcGis 9.x Extraction données raster via point shp
Perso j'utile (pour contrôler x sources Mnt ) :
ArcToolbox\Spatial Analyst Tools\Math\Minus
celà te permettra de réaliser la différence de ton mnt récent par rapport au moins récent.
Tu peux utiliser ensuite l'oultil (pour ma part si j'ai des écart trop important entre mes sources, sinon trop de points...je travaille sur des emprises tres grandes):
ArctoolBox - Spatial Analyst Tools / Extraction / Extract by Attibutes
requête SQL éventuelle
puis j'utlise ensuite comme Olive 71 l'outil:
ArctoolBox - Spatial Analyst Tools / ConversionTools / From Raster/ Raster to Point
Cordialement
André
Hors ligne
#5 Thu 18 March 2010 21:56
- JCD_16
- Participant occasionnel
- Date d'inscription: 23 Jul 2008
- Messages: 15
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour
Si j'ai tout compris, je réalise un peu la même opération que toi,
j'ai plusieurs rasters et à coté de cela j'ai un shp point, je récupère la valeur pixel du raster dans mon shp point
j'ai automatisé tout cela à l'aide d'un script + modèle builder
est ce que cela répondrai à ton problème ?
A+
J
Hors ligne
#6 Fri 26 March 2010 10:53
- Amelie_s
- Juste Inscrit !
- Date d'inscription: 26 Mar 2010
- Messages: 5
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
Debutante sur ArcGis je cherche a extraire des donnees (temperatures...) a partir de plusieurs fichiers raster.
Et cela pour plusieurs points shp (populations).
Je comptais convertir mon raster en .shp mais la perte d'information qui en resulte m'embete un peut.
Quelle methode vous semble etre la meilleur?
Par avance merci
Amelie
Hors ligne
#7 Fri 26 March 2010 11:00
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
Je comptais convertir mon raster en .shp mais la perte d'information qui en resulte m'embete un peut.
Quel serait cette "perte d'information", justement ? Si le but est d'extraire des valeurs de raster vers des points, il n'y a pas de raison.. ? Peut être faut il préciser le but final de l'opération d'extraction.. ?
Robin.
Hors ligne
#8 Mon 29 March 2010 09:15
- Amelie_s
- Juste Inscrit !
- Date d'inscription: 26 Mar 2010
- Messages: 5
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
Le but final est d'extraire des valeurs de raster pour chaque point
afin de faire des traitements statistiques sur ces valeurs.
J'ai lu que la conversion en raster demandais de creer des classes (d'ou la perte d'information)
J'espere que ces informations sont suffisantes.
Merci
Amelie
Hors ligne
#9 Mon 29 March 2010 11:47
Re: ArcGis 9.x Extraction données raster via point shp
Pourquoi ne pas utiliser l'outil cité plus haut ("Extract Values to Points" en anglais) ? Cet outil ne nécessite pas de conversion vers ou depuis le raster et la valeur extraite sera celle du pixel touché par le point.
Pour la question initiale posée par margouilla, on peut aussi travailler sur l'emprise des buffer (incertitude) et cette fois ci l'outil "zonal statisticsAs Table" de spatial analyst qui donnera des stat de zone plutôt que ponctuelles.
Mais peut être ne dispose tu pas de Spatial Analyst ?
Robin.
Hors ligne
#10 Tue 30 March 2010 15:58
- Margouilla
- Juste Inscrit !
- Date d'inscription: 30 Dec 2008
- Messages: 3
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
Après de multiples recherches infructueuses sur internet, je me suis renseigné auprès du personel d'ESRI France; il n'est apparamant possible que d'associer une valeur d'un raster par point (or pour l'étude statistique, il me faut toutes les valeurs raster pour un même point d'extraction). Ceci ne permet donc pas d'obtenir en sortie une table où chaque ligne correspond à un point d'extraction affilié à toutes ses valeurs de raster.
J'ai pu y remédier en utilisant un script qui tourne sur MatLab. Voici la démarche:
*Sous ArcGis
-Créer un buffer (à partir des points de mesures et de leurs incertitudes de positionnement)
-Faire une extraction des pixel du raster (à partir du buffer précédent)
-Convertir le raster (issu de l'extraction) en point
-Associer pour chaque point (issu de la conversion) les attributs des buffer (directement issu des attributs des points de mesure)
-Exporter la table ainsi obtenu en format tableau texte (Export .txt ou .dbf) sous forme X|Y|Z|Zpixel et de même pour la table des mesure (X|Y|Z)
*Sous Excel
-Mettre en forme le tableau pour qu'il soit compatible avec Matlab (pas de virgule mais des points)
*Sous MatLab
-Application du programme MatLab qui va rechercher et mettre sur une même ligne les valeurs de Z et Zpixel qui ont le même couple X Y (matrice de la forme X|Y|Z|Zpixel(1)|Zpixel(2)|Zpixel(3)|...|Zpixel(n))
-Mise en place des calculs voulus pour chaque ligne (ici Dz(n)=Z-Zpixel(n)|min(abs(Dz))|max(abs(Dz))|moyenne(Dz)|ecart-type)
Le script écrit est loin d'être le plus efficace (je ne m'y connais pas assez en programmation) et le plus intuitif (les explications claires ne sont pas non plus mon fort) mais a le mérite de marcher (même pour des tables de 2 millions de point).
Vu qu'il est relativement long, je ne sais pas si je peux le publier directement sur cette page.
Margouilla
Hors ligne
#11 Wed 31 March 2010 09:41
- Amelie_s
- Juste Inscrit !
- Date d'inscription: 26 Mar 2010
- Messages: 5
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
en effet avec l'extension c'est mieux, l'outil "Extract Values to Points" fonctionne bien.
Margouilla, merci pour ces info mais je travail avec un jeux de donnees bien plus petit que le tiens.
Et je n'ai qu'une valeur de raster par point, mais plusieurs rasters
Du coup je me suis lancee dans un copier coller sous excel un peut long mais efficasse
Et en ce qui concerne incertitudes de positionnement j'avoue ne pas l'avoir prise en compte.
Merci a tous
Amelie
Hors ligne
#12 Wed 31 March 2010 10:55
Re: ArcGis 9.x Extraction données raster via point shp
Hello,
je me suis renseigné auprès du personel d'ESRI France; il n'est apparamant possible que d'associer une valeur d'un raster par point
Bizarre, je vois pas pourquoi l'opération ne pourrait pas être répétée, mais bon, je suppose qu'ils savent ce qu'ils font.
Autre idée :
On part d'un semis de points numérotés avec un identifiant unique de 1 à (nombre de points)
1. Copie de ce semis de point autant de fois que de raster
2. Extract value to points sur chaque couple semis/raster
3. Jointure attributaire de chaque semis sur un semis unique récapitulatif via l'identifiant
Et.. voilà
Robin.
Hors ligne
#13 Wed 31 March 2010 22:05
- JVA95
- Participant occasionnel
- Lieu: Auvers sur Oise
- Date d'inscription: 16 Jun 2007
- Messages: 19
Re: ArcGis 9.x Extraction données raster via point shp
En effet Extract value to points extrait la valeur de "notre" Raster1 dans une colonne nommée : RASTERVALU sur le fichier shape que l'on désire. C'est à cause du nom qui existe déjà....que l'on ne peux pas faire cette opération dans le même fichier.
Rien n'empêche de renommer ensuite dans Arcgis cette colonne par exemple Z_Raster1 et recommencer l'opération pour Raster2,...RasterN.
Il existe un script (je suis preneur, car "perso" je fait cela pour chaqu'une de mes sources) pour renommer cette colonne
Bon courage
André
Hors ligne
#14 Thu 01 April 2010 10:20
Re: ArcGis 9.x Extraction données raster via point shp
En fait, si je te suis André, il faudrait mettre en place un script qui fait à partir de N raster et d'un semis de points quelconque :
Création d'une colonne ID + remplissage valeurs uniques (genre avec FID+1)
i = 1
Début boucle de 1 à N par pas de i
Extraction de la valeur du raster i vers le semis de points
Réorganisation des champs standards (ex : création de colonne nommé par exemple Ri puis remplissage avec le contenu de RASTERVALUE)
Suppression des champs créés par l'outil (ex : RASTERVALUE) pour lui permettre de recommencer
i = i + 1
Retour début boucle
Pas le temps, mais a mon avis, il doit y avoir un moyen avec le modelBuilder et les boucles itératives
Voir ici pour les boucles itératives : http://georezo.net/forum/viewtopic.php?pid=129730
EDIT : un lien juste pour la curiosité sous arcview 3.2 + SA : http://gis-lab.info/qa/extract-values-grids-eng.html
Hors ligne
#15 Thu 01 April 2010 11:08
Re: ArcGis 9.x Extraction données raster via point shp
Me revolà, après quelques recherches, il semble que cet outil réponde à la question !
http://arcscripts.esri.com/details.asp?dbid=13712
GRID SAMPLER
The need to sample multiple rasters at specified point locations is a common GIS operation. For example, multiple
rasters may represent a time series of flood or climate surfaces and point locations may represent the location of
buildings or nodes in a road network. GridSampler© streamlines the preparation of data files which store a point
location and its respective cell value for multiple input rasters. GridSampler© is a software program developed
using Visual Basic which allows users to batch sample multiple GIS raster surfaces at specified point locations.
GridSampler© was originally developed to assist in the preparation of input data files (dataframes) for use in
predictive statistical models such as GAMS and GLM’S running within either Splus or R. However, its utility should
extend beyond these applications
Hors ligne
#16 Mon 05 April 2010 21:40
- JVA95
- Participant occasionnel
- Lieu: Auvers sur Oise
- Date d'inscription: 16 Jun 2007
- Messages: 19
Re: ArcGis 9.x Extraction données raster via point shp
Merci Robin pour ces recherches, et tes nombreuses explications sur le forum.
Très intéressant: Grid Sampler. Malheureusement il ne prend pas en entrée du shape, mais un format txt (ce qui en soit n'est pas réellement un PB).
merci également pour ce lien:
http://gis-lab.info/qa/extract-values-grids-eng.html
A priori JCD_16, a déjà réalisé un script avec modèle builder. Peut ètre pourra t-il me le transmettre? J'avoue que je serais bien heureux de l'utiliser.
André
Hors ligne
#17 Mon 12 April 2010 16:58
- JCD_16
- Participant occasionnel
- Date d'inscription: 23 Jul 2008
- Messages: 15
Re: ArcGis 9.x Extraction données raster via point shp
Désolé, j'étais un peu absent ! et pas suivi tous les échanges
suite à un changement de version j'ai été obligé de changer de système :
2 possibilités :
- soit un model cf image, qui à partir de fichier grille j'extrait la valeur pixel vers le fichier shp
là j'utilise un outil un peu spécial qui permet de déterminer le nom du champ (quand je fais plusieurs extraction je change l'entête de colonne) mais on peut utiliser normalement l'outils Esri de arctoulbox
j'ai un script spécial pour transformer des fichiers ENVI flottant vers raster entier (si besoin)
- avant j'avais fait ce script
Code:
# coding: latin-1 # --------------------------------------------------------------------------- # Extraction_Envi_2009_V3 # nouvelle version à partir de Extraction_Envi_V2 # # Dernière modification # 20/01/2009 à 14h45 # Révisé le 15/12/2009 # --------------------------------------------------------------------------- # Import system modules import sys, string, os, arcgisscripting, shutil, datetime, time heure_debut_calcul = time.time() #print heure_debut_calcul # Create the Geoprocessor object gp = arcgisscripting.create() gp.setproduct("ArcInfo") gp.overwriteoutput = 1 # Charge la boite à outils A_CETIOM gp.AddToolbox("D:/SIG/OUTILS/BOITES_A_OUTILS/A_CETIOM.tbx") # Définir Espace de Travail #gp.workspace = sys.argv[1] gp.workspace = r"D:\SIG\PROJETS\2009-2010\FARMSTAR\Donnees_SIG_Infoterra\ENVI\Test" # Fichier Données CETIOM #Fichiers_Donnees = sys.argv[2] Fichiers_Donnees = r"D:\SIG\PROJETS\2009-2010\FARMSTAR\Donnees_SIG_CETIOM\Shapes_CETIOM\Test_extraction.shp" # Definition de la période travaillée et/ou version (type EH1) #Periode = sys.argv[3] Periode = "SHH" # Calcul_long Oui/Non #Calcul_long = sys.argv[4] Calcul_long = "Non" print "Démarrage" # Répertoire intermédiaire rep_fic_inter = r"D:\SIG\PROJETS\2009-2010\FARMSTAR\Donnees_SIG_Infoterra\ENVI\Fichiers_Intermediaires" # Variables de travail temporaire #R_NoData = rep_fic_inter + r"\R_Nodata" #R_Extrait = rep_fic_inter + r"\R_Extrait" R_Entier = rep_fic_inter + r"\R_Entier" #R_Moy = rep_fic_inter + r"\R_moy" #R_Med = rep_fic_inter + r"\R_Med" #R_Min = rep_fic_inter + r"\R_Min" #R_Max = rep_fic_inter + r"\R_Max" #Masque_Extraction = rep_fic_inter + r"\Masque_Extraction.shp" #Fichier_Temp = rep_fic_inter + r"\Fichier_Temp.shp" Layer_Attente = rep_fic_inter + r"\Layer_Attente" # Création Répertoire intermédiaire if os.path.isdir(rep_fic_inter) == 1: shutil.rmtree(rep_fic_inter) os.mkdir(rep_fic_inter) else : os.mkdir(rep_fic_inter) try: if gp.CheckExtension("spatial") == "Available": # Verifie si l'extention est disponible gp.CheckOutExtension("spatial") # Si oui, prend l'extension ## Définir la liste des rasters Liste_Rasters = gp.listrasters("*","IMA") ## Remise à zéro compteur Liste_Rasters.reset() ## Affecter à la variable le nom du premier fichier Raster = Liste_Rasters.next() print Raster ## Boucle while Raster: # Calcul Durée Calcul Traitement_Debut = datetime.datetime.now() # Récupération du code parcelle pour comparer avec fichier RCA # 2009 --> LC02_B_048952_2_COLZA01.07_flt_200902271728.ima # 2010 --> GC1_LC01_A_081675_2_COLZA07.07_flt_200912041329.ima Nom organisme en plus Num_Saisi = str(Raster[9:19]) Num_Saisi = Num_Saisi.replace("_","-") print "Num_Saisi --> " + Num_Saisi # Chemin du Raster à traiter Chemin_Raster = gp.workspace + "\\" + Raster print "Chemin_Raster --> " + Chemin_Raster ## Expression pour transfomer en g puis en entier Expression = "int(" + Chemin_Raster + " * 1000)" print "Expression --> " + Expression # Process: Algèbre spatial - sortie unique... gp.SingleOutputMapAlgebra_sa(Expression, R_Entier) print "Raster Entier créé" # Supprime les 0 par NoData #Valeur_NoData = "0" # Process: Copier un raster... #gp.CopyRaster_management(R_Entier, R_Nodata, "", "", Valeur_NoData, "NONE", "NONE", "") print "Fichiers_Donnees --> " + Fichiers_Donnees # Expression pour définir la parcelle à traiter #Expression_Nom = "\"NUM_SAISI\" = Num_Saisi" #print "Expression Num Saisi" # Génère une couche .lyr utilisable pour SelectLayer #gp.MakeFeatureLayer_management(Fichiers_Donnees, Layer_Attente, "", "", "") #print "Fichier Lyr --> " + Layer_Attente # Process: Sélectionner une couche par attributs... #gp.SelectLayerByAttribute_management(Layer_Attente, "NEW_SELECTION", Expression_Nom) #print "Selection effectuée" # Pixel Process: Extraction de la valeur de cellule d'une grille (8)... gp.GpExtractFunction(Layer_Attente, "Pix_" + Periode, R_Entier) # mettre le chemin et nom du fichier #gp.ExtractValue("", "Valeur", "") via ModelBulder #gp.ExtractValue(Layer_Attente, "Pix_" + Periode, R_Entier) print "Fin Extraction" print "Raster " + Raster + " traité" gp.addwarning("Raster " + Raster + " traité") # Raster suivant Raster = Liste_Rasters.next() # Redonne l'extension spatial gp.CheckInExtension("spatial") # Suppression du repertoire intermédiaires shutil.rmtree(r"D:\SIG\PROJETS\2009-2010\FARMSTAR\Donnees_SIG_Infoterra\ENVI\Fichiers_Intermediaires") # Calcul du temps de calcul temps_calcul = time.time()-heure_debut_calcul print "Temps de calculs : " + str(temps_calcul)[:5] + " secondes.\n" #print "Traitement des rasters terminé" gp.addwarning("Traitement des rasters terminé - Temps de calculs : " + str(temps_calcul)[:5] + " secondes.\n") else: print "La license Spatial Analyst n'est pas disponible." gp.addwarning("La license Spatial Analyst n'est pas disponible.") except: print gp.GetMessages(2)
qui doit encore fonctionné mais que je n'utilise plus car il plante avec la 9.3 au niveau de l'outils mais la encore
possibilité de changer l'outils extraction de de prendre l'outil esri, en 9.2 je pense que ça marche sans souci
voilà reviens moi si besoin
A+
J
Hors ligne
#18 Wed 21 September 2011 22:10
- jack009
- Juste Inscrit !
- Date d'inscription: 21 Sep 2011
- Messages: 2
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour JCD_16,
Je suis entrain de travailler sur un projet dont plusieurs couches raster sont utilisées, je dois extraire les valeurs de toutes les couches pour réaliser des régessions sur Excel. Je pense que ton script que tu as programmé m'aiderait à accomplir cette tâche. Serait-il possible de m'envoyer ton modèle.
Merci,
J.
Bonjour
Si j'ai tout compris, je réalise un peu la même opération que toi,
j'ai plusieurs rasters et à coté de cela j'ai un shp point, je récupère la valeur pixel du raster dans mon shp point
j'ai automatisé tout cela à l'aide d'un script + modèle builder
est ce que cela répondrai à ton problème ?
A+
J
Hors ligne
#19 Thu 22 September 2011 08:36
- vipere
- Participant actif
- Date d'inscription: 23 Jan 2008
- Messages: 100
Re: ArcGis 9.x Extraction données raster via point shp
Bonjour,
pour ceux qui ont l'extension spatial analyst, n'hésitez pas à utiliser l'outil SAMPLE (Echantillon en VF) qui est fait pour ça.
Attention aux NoData qui deviennent des 0 si vous travaillez en SHP (voir aide : http://help.arcgis.com/fr/arcgisdesktop … 2v000000/)
vincent
Hors ligne