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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB