SSH 시 tvlct.pro 사용 방법

게시판 IDL Q&A SSH 시 tvlct.pro 사용 방법

4 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #5059 Reply
      ChoiYoun
      회원

      안녕하세요.

      저는 리눅스 서버에서 IDL을 사용중이며, 시간이 많이 걸리는 작업 시 screen을 사용하여 퇴근 후 결과를 확인하고 있습니다.

      그런데 plot, contour 등 NG 그래픽 함수의 경우 “/BUFFER” 키워드로 SSH 접속을 하더라도 메모리상에서 문제없이 그림을 저장할 수 있었는데, tvlct을 사용하니 아래와 같은 에러 메세지가 출력됩니다.

      % WINDOW: Unable to connect to X Windows display: localhost:15.0
      % WINDOW: Unable to open X Windows display.

      아마 tv** 프로시저가 X windows 기반으로 작동하기 때문에 발생하는 것으로 보이는데, 컴퓨터를 켜놓고 퇴근하는 것외에 해결할 수 있는 방법이 없을까요.

      아래는 대략적인 코드입니다.

    • #5062 Reply
      mwkim
      회원

      안녕하세요, DG 체계에서도 메모리상에서만 작업하고 저장할 수 있습니다.

      Z-BUFFER를 이용하면 되는데요,

      SET_PLOT 프로시저를 사용하시면 됩니다.

      자세한 사용법은 도움말을 참조하시면 되고,

      아래 도움이 될 링크도 같이 달아드립니다.

      http://blog.daum.net/swrush/381

      http://blog.daum.net/swrush/187

      • 이 답변은 mwkim에 의해 6 years, 7 months 전에 수정됐습니다.
    • #5065 Reply
      ChoiYoun
      회원

      감사합니다. 덕분에 아래와 같은 방식으로 프로시저를 변경하여 해결하였습니다.

    • #5068 Reply
      Sangwoo
      회원

      이미 해결된 마당에 첨언을 좀 해본다면, IDL에서 컬러테이블을 구성하는 r, g, b 정보를 가져오는 방법이 두가지가 있습니다. 만약 IDL 8.2.1 이전 버전을 사용중일 경우라면 위의 방법대로 TVLCT를 사용하여 컬러 정보를 불러와서 사용하면 되는데 이게 첫번째 방법입니다. 만약 IDL 8.2.1 또는 그 이후 버전을 사용중일 경우라면 COLORTABLE이라는 함수를 사용하는 방법도 있습니다. 이게 두번째 방법인데, 위의 경우에 적용한다면 다음과 같은 방식으로 사용하면 됩니다.

      rgb = COLORTABLE(0)
      r = rgb[*, 0]
      g = rgb[*, 1]
      b = rgb[*, 2]
      r = CONGRID(r[0:200], 256, /CENTER)
      g = CONGRID(g[0:200], 256, /CENTER)
      b = CONGRID(b[0:200], 256, /CENTER)
      rgb = [[r], [g], [b]]

      TVLCT 명령이 X-window와 연계되는 특성 때문에 문제가 되는 경우가 있는 것과는 달리, COLORTABLE 함수의 사용에 있어서는 이러한 문제가 발생하지 않습니다. 더구나 지금 하시는 작업이 NG 체계 그래픽을 사용하는 경우이므로 COLORTABLE 함수를 활용하는 것이 더 효율적일 수도 있습니다. 사실 TVLCT는 그 특성상 DG 체계와 함께 사용하는 것이 어울리는 측면은 있습니다. (물론 NG 체계에서의 작업에서 TVLCT를 사용한다고 해서 문제될 것은 전혀 없습니다)

      그리고 지금 하시는 작업의 내용을 보면 흑백 컬러테이블에서 컬러값이 0~200 색들만을 사용하여 가장 짙은 색이 완전 검정이 아닌 어두운 회색이 되도록 표출하는 경우인 것으로 보입니다. 사실 이런 경우 COLORTABLE 함수를 다음과 같이 사용하면 훨씬 더 간단하게 처리가 가능합니다.

      rgb = COLORTABLE([[0, 0, 0], [200, 200, 200]])

      앞서 8줄 짜리 코드의 내용이 바로 위 한 줄의 내용으로 처리가 가능합니다. 따라서 COLORTABLE 함수를 잘 알아두시는 것도 도움이 될 것 같습니다. COLORTABLE 함수와 관련하여 아래 링크의 내용도 한번 참조해보시길 권합니다.

      http://blog.daum.net/swrush/362

    • #5070 Reply
      ChoiYoun
      회원

      COLORTABLE를 저렇게 활용할 수 있는지 처음 알았습니다. 정말 많은 공부가 되었습니다. 다시 한번 감사드립니다.

4 답변 글타래를 보이고 있습니다
'SSH 시 tvlct.pro 사용 방법'에 답변달기
글쓴이 정보: