idl을 이용해 인터넷에서 파일을 받을 때

게시판 IDL Q&A idl을 이용해 인터넷에서 파일을 받을 때

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #5060 Reply
      JAEHEE
      회원

      pro get_data_from_web

      cd, ‘E:’

      for k=2013,2015 do begin
      year=string(k,format='(i4.4)’)
      for j=1,12 do begin
      month=string(j,format='(i2.2)’)
      for i=1,31 do begin
      day = string(i, format='(i2.2)’)
      FILE_HTTP_COPY,’http://emfisis.physics.uiowa.edu/Flight/RBSP-A/L4/’+year+’/’+month+’/’+day+’/rbsp-a_density_emfisis-L4_’+year+month+day+’_*.cdf’
      PRINTDAT, file_info(‘rbsp-b_magnetometer_emfisis-L4_’+year+month+day+’_*.cdf’)

      endfor
      endfor
      endfor

      end

      이런식으로 해서 인터넷에서 파일을 다운받으려고 하는데요, Bad server: “” 라고 뜨면서 돌아가지가 않습니다.
      링크주소에 *를 썻는데, 그것을 안쓰면 돌아가더군요… 하지만 *처럼 임의의 문자가 들어가기때문에*이 꼭 필요한데 해결방법이 없을까요?

    • #5066 Reply
      mwkim
      회원

      안녕하세요, 우선 제가 알기로는 웹 상에서 특수 문자(-제외)는 사용안되는 걸로 알고 있습니다.

      다만 받으실 자료를 보니 뒤에 붙는 문자가 버전을 나타내며 한정적인것 같습니다.

      따라서 반복문을 돌릴 때 한정된 내용을 문자열로 만들어 두고 받도록 하는 것도 방법이 되지 않을까 합니다.

      다만 IDL과 별도 이지만 리눅스의 wget 명령어를 통해서 웹 주소의 자료를 받을 수 있는 것으로 알고 있습니다.

      아래 관련 내용의 링크를 달아드립니다.

      wget 관련 링크

    • #5069 Reply
      Sangwoo
      회원

      올려주신 코드에서 사용된 FILE_HTTP_COPY, PRINTDAT 등은 IDL이 기본적으로 내장하고 있는 명령들이 아닙니다. 아마 다른 외부 라이브러리를 설치하여 사용중이신 것 같습니다. 따라서 FILE_HTTP_COPY와 같은 명령의 자세한 사용법은 그 라이브러리를 배포하는 배포처에서 직접 찾아서 보셔야 할 것 같습니다. IDL에서 네트워크를 통하여 HTTP 또는 FTP 접속을 하고 파일을 수신하는 방법에 관해서는 아래 링크의 내용을 참조하시기 바랍니다.

      http://idl-envi.co.kr/callcenter/tips/view.php?num=24&page=5

      다만 이 방법을 사용하더라도 지금과 같이 와일드카드 심볼(*)을 붙인 파일명으로 불특정 갯수의 모든 파일들을 한꺼번에 받는 것은 가능한지는 잘 모르겠습니다. 저는 불가능한 것으로 알고 있는데 다른 방법이 있는지도 모르죠. 어쨌든 받고자 하시는 파일들의 특성에 대해서는 잘 모르겠지만 .cdf 바로 앞에 붙는 파일명들이 완전히 불규칙하고 중구난방인 이름이 아닌 한은 어떤 규칙이 있을 것입니다. 그 규칙을 파악하여 파일명을 정확히 명시되어야 할 것 같습니다.

2 답변 글타래를 보이고 있습니다
'idl을 이용해 인터넷에서 파일을 받을 때'에 답변달기
글쓴이 정보: