banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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à smile
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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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.

JCD_16 a écrit:

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

 

Pied de page des forums

Powered by FluxBB