#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


