subodh_gis 发表于 2022-7-5 19:50:40

插入地理参考图像o

我们有许多绘图地图的地理参考光栅图像。
 
现在,我们在需要的地方手动将它们插入到图形中。有没有办法,如果我们点击图形中的任何地方,该位置的图像应该被插入。

BIGAL 发表于 2022-7-5 20:53:15

在任何地方插入地理参考jpg,然后使用它,它将移动和重新缩放,但您必须同时拥有JGW文件。
 
;;;Reads world tiff file (.jgw) to scale and place image correctly in autocad.
;;;First insert all tiff images into drawing at whatever scale and insertion point.
;;;If the jgw exists in same directory and is named the same as the image selected,
;;;it will automatically be found and the image will be scaled and placed. If it is
;;;not in the same directory, the user can browse for the file.
;;;03.23.2011 Added support to create jgw files as well as support rotated images
;;;Needs a file with 6 lines (ScaleX Rotation -Rotation -ScaleY TopLeftXCoord TopLeftYCoord)
;« Last Edit: April 12, 2011, 09:43:43 am by ronjonp »
(vl-load-com)
(defun ss->lst (ss / e n out)
   (setq n -1)
   (while (setq e (ssname ss (setq n (1+ n)))) (setq out (cons (vlax-ename->vla-object e) out)))
)
(defun _writefile (filename lst / file result)
   (cond ((and (eq 'str (type filename)) (setq file (open filename "w")))
   (foreach x lst
   (write-line
       (cond ((= (type x) 'str) x)
      ((= (type x) 'int) (itoa x))
      ((= (type x) 'real) (rtos x 2 6))
      ((vl-prin1-to-string x))
       )
       file
   )
   )
   (close file)
   filename
)
   )
)
(defun _readfile (filename / file result)
   (cond
   ((and (eq 'str (type filename)) (setq file (open filename "r")))
      (while (setq line (read-line file)) (setq result (cons (vl-string-trim " " line) result)))
      (close file)
      (reverse result)
   )
   )
)
(setq opt "ReadIt")
;(initget 0 "ReadIt WriteIt")
;(setq opt (cond ((getkword (strcat "\nImage World File <" opt ">: ")))
;    (opt)
;   )
; )
(princ "\nSelect image(s): ")
(setq pre (getvar 'dwgprefix))
(if (and (setq ss (ssget '((0 . "image")))) (setq ss (ss->lst ss)))
   (foreach image ss
   (setq name    (vlax-get image 'name)
    hgt   (vlax-get image 'height)
    wdth    (vlax-get image 'width)
    imhgt   (vlax-get image 'imageheight)
    imwdth(vlax-get image 'imagewidth)
    rot   (vlax-get image 'rotation)
    bpt   (vlax-get image 'origin)
    imgpath (vl-filename-directory (vlax-get image 'imagefile))
    jgw   (strcat imgpath "\\" name ".jgw")
   )
   (if (= opt "ReadIt")
(progn
(if (and (or (setq jgw (findfile (strcat pre name ".jgw")))
      (setq jgw (findfile (strcat imgpath "\\" name ".jgw")))
      (setq jgw (getfiled (strcat "***Select <<" name ".jgw>>***") pre "jgw" 16))
    )
    (setq pre (strcat (vl-filename-directory jgw) "\\"))
    (setq data (mapcar 'atof (_readfile jgw)))
    (> (length data) 5)
    (setq l1 (car data))
    (setq mvpt (list (nth 4 data) (nth 5 data) 0.0))
      )
    (progn (vla-put-imageheight image (* hgt l1))
    (vla-put-imagewidth image (* wdth l1))
    (vla-put-rotation image (cadr data))
    (setq rot (vlax-get image 'rotation))
    (setq bpt (polar bpt (+ (/ pi 2.) rot) (* hgt l1)))
    (vlax-invoke image 'move bpt mvpt)
    (princ (strcat "\njgw File Read - " jgw))
    )
    (princ "\njgw file NOT found or not correctly formatted!")
)
)
(progn (setq bpt (polar bpt (+ (/ pi 2.) rot) imhgt))
       (if (setq jgw (_writefile
         (strcat imgpath "\\" name ".jgw")
         (list (/ imhgt hgt)
      rot
      (strcat "-" (rtos (abs rot) 2 6))
      (strcat "-" (rtos (abs (/ imwdth wdth)) 2 6))
      (rtos (car bpt) 2 6)
      (rtos (cadr bpt) 2 6)
         )
       )
    )
(print jgw)
(princ "\nError writing file...")
       )
)
   )
   )
)
(princ)

(command "draworder" (entlast) "" "B")


;« Last Edit: Dec 16 2011 send to back added by alan »
页: [1]
查看完整版本: 插入地理参考图像o