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 Mon 24 March 2008 23:57

Romain72
Participant occasionnel
Date d'inscription: 20 Mar 2008
Messages: 10

Décaler un vecteur dans ENVI

Bonjour,

Je dispose d'un MNT au format EVF mais celui ci est décalé dans le système de projection. Apparemment, il s'agirait simplement d'une translation.
Cependant je n'arrive pas à trouver la commande sous ENVI qui me permet de réaliser cette translation. Je dispose d'un plan topo pour recaler le MNT et de points géodésiques qui sont visibles sur le MNT.

Merci de votre aide

Romain

Hors ligne

 

#2 Tue 25 March 2008 13:56

pharos1
Participant actif
Date d'inscription: 28 Nov 2006
Messages: 81

Re: Décaler un vecteur dans ENVI

Salut Romain,
bienque tu exiges ENVI comme outil, mais je te suggere l'ArcGIS, le dernier je pense que c'est le plus approprié dans ce cas là. il te souffira de donner les même proprio. du fichier base à ton MNT une fois que tu l'exporte dans le domaine de ArcGIS.
bonne chance

Hors ligne

 

#3 Wed 26 March 2008 11:05

Cla1r3
Juste Inscrit !
Date d'inscription: 7 Sep 2007
Messages: 7

Re: Décaler un vecteur dans ENVI

Bonjour Romain,

Je ne vois pas comment faire ça dans ENVI (à part peut être en modifiant les paramètres de projection du fichier .evf: False Easting/False Northing, mais ça risque de poser d'autres problemes par la suite)
Une autre solution serait de passer par la programmation IDL/ENVI batch pour modifier les coordonnées X,Y de ton fichier .evf:
Ci-dessous un code qui lit un fichier .evf de départ et ré-écrit les mêmes coordonnées translatées (par exemple de 10 sur les X) dans un autre fichier .evf. Il faudra modifier les chemins d'accès dans le code.

J'espère que ca pourra t'aider,


PRO decale_coord_evf

COMPILE_OPT STRICTARR

ENVI, /RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT

;; Ouvrir le fichier EVF
evf_fname = 'C:\roads.evf'
evf_id = ENVI_EVF_OPEN(evf_fname)


;; Infos sur le fichier .evf d'origine
ENVI_EVF_INFO, evf_id, $
    NUM_RECS=num_recs, $ ;nombre d'entites
    DATA_TYPE=data_type, $ ;type de donnees
    PROJECTION=projection, $ ;info carto
    LAYER_NAME=layer_name ;nom de la couche vectorielle

;; Fichier EVF modifie (meme proj, meme nombre d'entites, meme type)
evf_out_fname = 'C:\roadsOut.evf'
evf_out_ptr = ENVI_EVF_DEFINE_INIT(evf_out_fname, $
    PROJECTION=projection, DATA_TYPE=dt, LAYER_NAME=layer_name+'_modified')

;; Pour chaque entite, recuperer ses coordonnees, les modifier et les sauvegarder dans l'autre fichier .evf
print, "Nombre d'enregistrements: ",num_recs
FOR i=0,num_recs-1 DO BEGIN
      record = envi_evf_read_record(evf_id, i)
    record[0,*] += 10.0D ;par exemple, translater les X (attention a conserver le meme typage, dans mon evf, c'est de DOUBLE)
    envi_evf_define_add_record, evf_out_ptr, record
ENDFOR

;; Fermer les fichiers EVF
ENVI_EVF_CLOSE, evf_id
evf_out_id = ENVI_EVF_DEFINE_CLOSE(evf_out_ptr, /RETURN_ID)
ENVI_EVF_CLOSE, evf_out_id

ENVI_BATCH_EXIT
END

Hors ligne

 

#4 Wed 26 March 2008 23:07

Romain72
Participant occasionnel
Date d'inscription: 20 Mar 2008
Messages: 10

Re: Décaler un vecteur dans ENVI

Merci beaucoup de votre réponse.
Je vais essayer dès maintenant d'utiliser le code que vous m'avez fourni pour translater mon vecteur.

Romain

Hors ligne

 

Pied de page des forums

Powered by FluxBB