#1 Mon 04 March 2002 00:03
- Fred P
- Invité
[Avenue] Georefencement d'images
Bonjour la liste,
J'aimerais savoir si qq1 pourrait m'aider a finaliser ce petit script. Je cherche tout simplement a creer un fichier de georeferencement (*.tfw) pour une image pour laquelle je lui definis ses coordonnees (taille du pixel en Xy et position planimetrique en XY).
Mon probleme est le suivant :
- les donnees que je saisie dans la boite de dialogue (=une multiInput) ne se copient pas dans ce fichier texte.
Qq1 pourrait-il me renseigner ?
Merci
Code:
*********************** ' Name: GeorefAnImg ' ' Title: Creation du fichier de georeferencement d'une image (*.tif) ' ' Topics: ' ' Description: ' Requires: ' ' Self: ' ' Returns: '=========================================================== 'Definition des variables theCoordList = List.Make RotCoordX = 0.00000 RotCoordY = 0.00000 origExt = .tif theExt = .tfw theDef = *.tif 'Selection du document actif, il s'agit d'une vue : theView=av.GetActiveDoc if(theView.Is(View).Not)then MsgBox.Error( Ce script doit fonctionner sur une vue . Exiting , Error ) return nil end 'Chargement de l'image : Ttle = Choose an image to Reference Imgfullpath = FileDialog.Show(theDef, Image( +theDef+ ) ,Ttle) theSrcName = SrcName.Make(Imgfullpath.asstring) theISrc = ImgSrc.Make(theSrcName) path = Imgfullpath.ReturnDir wkDir = av.GetProject.GetWorkDir 'Affichage de la boite de dialogue pour entrer les coordonnees: TmpCoordList = MsgBox.MultiInput( Entrer les coordonnees: , Donnees : , { Pixel X , Pixel Y , CoodX , CoordY },{ 1 , -1 , 600000 , 1200000 }) If (TmpCoordList.count
#2 Mon 04 March 2002 00:05
- Claude MONTEIL
- Invité
Re: [Avenue] Georefencement d'images
Bonjour,
il y a 3 erreurs a corriger :
1/ le end final est mal place (a remonter et mettre derriere :
> theCoordList.Add(Coord.AsNumber)
> End 'du if
de maniere a clore le for each
2/ pas de +NL dans les WrldFile.WriteElt (c'est implicite)
3/ l'instruction WrldList.Add(theCoordList.Get(1)) est mal placee : il faut la mettre derriere : WrldList.Add(RotCoordY) (donc en 4eme position dans le fichier TFW)
Moyennant ceci, ca marche bien !
Cordialement,
CM
#3 Wed 06 March 2002 00:07
- Fred P
- Invité
Re: [Avenue] Georefencement d'images
Bonjour la liste,
Je souhaite etendre ce script (qui permet de creer un fichier de georeferencement pour une image) pour pouvoir charger et creer un fichier .tfw pour plusieurs images.
Je pense qu'il faille remplacer
Imgfullpath = FileDialog.Show(theDef, Image ( +theDef+ ) ,Ttle)
par un
ReturnFile( Patterns, Labels, aTitle, defaultPatternIndex ).
Le probleme, c'est que j'ai beau m'arrache les cheveux, je ne parviens pas a creer la liste defaultPatternIndex et la variable qui doit me permettre d'aller chercher les images sources chargees.
Si qq1 a une piste !!!!!!!!!!!!!!!!!!!!!!!!
FP
PS : Special remerciement a Claude Monteil pour les corrections qu'il a apporte sur ce script.
Code:
*************************** Name: GeorefAnImg ' ' Title: Creation du fichier de georeferencement d'une image (*.tif) ' ' Topics: ' ' Description: ' Requires: ' ' Self: ' ' Returns: '=========================================================== 'Definition des variables theCoordList = List.Make RotCoordX = 0.00000 RotCoordY = 0.00000 origExt = .tif theExt = .tfw theDef = *.tif 'Selection du document actif, il s'agit d'une vue : theView=av.GetActiveDoc if(theView.Is(View).Not)then MsgBox.Error( Ce script doit fonctionner sur une vue . Exiting , Error ) return nil end 'Chargement de l'image : Ttle = Ajouter une image Imgfullpath = FileDialog.Show(theDef, Image ( +theDef+ ) ,Ttle) theSrcName = SrcName.Make(Imgfullpath.asstring) theISrc = ImgSrc.Make(theSrcName) path = Imgfullpath.ReturnDir wkDir = av.GetProject.GetWorkDir 'Affichage de la boite de dialogue pour entrer les coordonnees: TmpCoordList = MsgBox.MultiInput( Entrer les coordonnees: , Georeferencement de l'image : , { Pixel X , Pixel Y , CoodX , CoordY },{ 1 , -1 , 600000 , 1200000 }) If (TmpCoordList.count
#4 Wed 06 March 2002 00:09
- Claude MONTEIL
- Invité
Re: [Avenue] Georefencement d'images
En fait, defaultPatternIndex n'est pas une liste mais un index qui indique par un numero d'ordre (0, 1, ...etc.) laquelle des extensions mise dans les 2 1ers parametres de ReturnFiles sera celle preselectionnee par defaut. Ici, il n'y en a qu'une, d'ou un index de 0 :
ImgList = FileDialog.ReturnFiles ({ *.tif }, { Images TIF (*.tif) }, Choisir les images , 0)
for each ImgFullPath in ImgList
MsgBox.Info(ImgFullPath.AsString, Image a georeferencer )
'... a remplacer par le traitement voulu ...
end
Bien cordialement,
Claude MONTEIL
Institut National Polytechnique de Toulouse
Ecole Nationale Superieure Agronomique de Toulouse