Aller au contenu

Calage image Lambert 2


Etienne67

Messages recommandés

Bonjour,

 

Je dispose d'une base de donnée images TIFF et coordonnées (fichier TAB) de calage pour un systéme IGN en Lambert 2 étendu.

 

Est ce que quelqu'un connait un pluggin AutoCAD 2002 permattant de caler l'image raster (sur la base du fichier tab) sur une simple fonction d'insertion?

 

Par exemple, à l'identique du pluggin ermapper pour les images ECW.

 

Merçi.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Si ça peux t'aider, voici un truc que je me suis fait pour créer mon fichier de référence.

 

Je ne me sert pas de fichier TAB, mais directement des images TIFF (les clichés n'ont pas un nom barbare, le nom peut servir à caler l'image).

 

((lambda ( / lst_img lg_i ht_i x_ins y_ins)
(setq lst_img (vl-directory-files "d:/" "*.tif"))
(setq lg_i (getreal "\nLargeur des dalles <10000>?: "))
(if (not lg_i) (setq lg_i 10000.00))
(setq ht_i (getreal "\nHauteur des dalles <7500>?: "))
(if (not ht_i) (setq ht_i 7500.00))
(foreach n lst_img
	(setq
		x_ins (- (* (read (substr n 2 3)) lg_i) lg_i)
		y_ins (- (+ (* (read (substr n 6 3)) ht_i) 1 500 000.00) ht_i)
	)
	(command "_.image" "_attach" (strcat "d:/" n) (list x_ins y_ins 0.0) "10000.0" "0.0")
)
))
;|
Pour le fichier S077_067.tif concernant l'ardéche par exemple
077067 dans le T.A. de l'IGN du SCAN25 me donne pour X_insertion: 760 000 et Y_insertion: 1 995 000 

les dalles sont de 10km X 7.5km soit 10 000m et 7 500m

j'ai pour ce cliché le numéro de colone 077 et le numero de rangée 067 donc l'identification du coin haut droit (cliché inclu).
pour déterminer le coin bas gauche de l'insertion image je fais donc

(10000 * 77) - 10000 = 760 000 -> x origine des clichés
et
(7500 * 67) - 7500 = 495 000 -> y origine des clichés

Y de Ref moins Y des clichés
(1 995 000 - 495 000) = 1 500 000 

Tout ceci je pense exprimé en Lambert II Etendu.
|;

 

NB: Il te faut adapter "d:/" dans le code à ton environnement.

 

Ensuite fait une cotation, puis efface la et met toi sur le calque DEFPOINT et applique le code suivant en adaptant encore "d:\\"

 

((lambda ( / js dxf_ent dxf_img)
(setq js (ssget "_X" '((0 . "IMAGE"))) n -1)
(cond
	(js
		(repeat (sslength js)
			(setq dxf_img (entget (cdr (assoc 340 (setq dxf_ent (entget (ssname js (setq n (1+ n)))))))))
			(command "_.-text" "_none" (cdr (assoc 10 dxf_ent)) "100.0" "0.0" (cdr (assoc 1 dxf_img)))
			(command "_.-image" "_unload" (vl-string-right-trim ".TIF" (vl-string-left-trim "d:\\" (cdr (assoc 1 dxf_img)))))
		)
	)
)
(prin1)
)) 

 

Enregistre alors ton dessin, tu pourras gérer le chargement des images avec le code suivant

 

(defun c:scan25 ( / js dxf_ent name-image)
(while (not (setq js (ssget "_+.:E:S" '((0 . "TEXT") (67 . 0) (410 . "Model") (8 . "Defpoints") (100 . "AcDbText"))))))
(setq dxf_ent (entget (ssname js 0)))
(setq name-image (substr (cdr (assoc 1 dxf_ent)) 11 8))
(initget "Recharge Decharge _Reload Unload")
(if (eq (getkword (strcat "\n[Recharge/Decharge] l'image " name-image " : ")) "Reload")
	(command "_.-image" "_reload" name-image)
	(command "_.-image" "_unload" name-image)
)
) 

 

Il te suffit de cliquer sur le texte dans le coin bas gauche du cadre de l'image pour charger ou décharger la dalle correspondante. Ce texte N'EST JAMAIS imprimé..., puisqu'il est sur le calque spécial "defpoint"

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Encore moi,

 

Autrement pour le scan100, je m'étais fait ceci pour lire les fichiers HDR équivalent au TAB, mais pas identique, donc à voir...

 

(defun espa (chn / )
(while (eq (substr chn 1 1) " ")
	(setq chn (substr chn 2))
)
(while (/= (substr chn 1 1) " ")
	(if (eq (substr chn 1 1) "")
		(setq chn '" ")
		(setq chn (substr chn 2))
	)
)
)
(defun c:make-scan100 ( / select_file file_open line_read)
(setq select_file (getfiled "Sélection d'un fichier HDR : " "" "HDR" 2))
(cond
	(select_file
		(setq file_open (open select_file "r"))
		(setq line_read (read-line file_open))
		(while line_read
;				(print line_read)
			(set (read line_read)
				(if (or (eq (type (read (espa line_read))) 'REAL) (eq (type (read (espa line_read))) 'INT))
					(read (espa line_read))
					nil
				)
			)
			(setq line_read (read-line file_open))
		)
		(close file_open)
		(cond
			((and ULXMAP ULYMAP XDIM YDIM)
;					(setvar "filedia" 0)
				(command "_.-image" "_attach" (strcat (vl-string-right-trim "hdr" select_file) "tif") (list ULXMAP ULYMAP) (* XDIM YDIM) 0.0)
;					(command "_.zoom" "_window" (list ULXMAP ULYMAP) (list (+ ULXMAP (* XDIM NCOLS)) (+ ULYMAP (* YDIM NROWS))))
;					(setvar "filedia" 1)
			)
		)
	)
)
(prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Je vois que tu es intéressé par la 2ème solution.

 

Si tu n'as aucune expérience dans la programmation, je peux essayer d'adapter le code, mais pour cela il serait bien que tu fasse un copier-coller du contenu (du moins un extrait conséquent et exploitable) d'un fichier TAB (je n'ai pas de tel fichiers sur mes CD fourni par l'IGN pour le 1/25000, mais je sais que cela existe).

 

A moins que tu tiennes absolument à l'écrire par toi même, je consacrerais moins de temps à l'adapter que de te guider en aveugle pour faire les modifs.

 

En ce moment je n'ai pas trop de temps disponible pour expliquer par de multiples réponses interposée, mais je te laisse le choix (si tu n'es pas trop pressé) ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité