ChoiYoun

게시판 답변이 생성됐습니다

15 글 보임 - 16 에서 30 까지 (총 39 중에서)
  • 글쓴이
  • 답변: ASCII file 읽는 법2 #5399
    ChoiYoun
    회원

    위와 같은 형태의 test2.txt를 아래와 같은 방식으로 STRSPLIT을 수행한 결과를 보았을 때,
    띄어쓰기 개수에 따른 STRSPLIT 작동이 정상적인 것으로 판단됩니다.
    발생하는 문제의 원인은 다른 것이 아닐까 싶습니다.

    file = ‘./test2.txt’
    openr, lun, file, /GET_LUN
    buf = ”
    for i = 0, FILE_LINES(file) -1 do begin
    readf, lun, buf
    splt = STRSPLIT(buf, ‘ ‘, /EXTRACT)
    print, splt
    endfor

    • 이 답변은 ChoiYoun에 의해 5 years, 6 months 전에 수정됐습니다.
    답변: ASCII file 읽는 법 #5396
    ChoiYoun
    회원

    안녕하세요. 첫번째 질문에 대한 답변만 달아봅니다.

    아래와 같은 방식으로 시간 부분을 문자열로 읽은 후 STRMID 함수를 이용해 분리하면 어떨까 싶습니다.

    file = ‘./test.txt’
    readcol, file, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, $
    FORMAT = ‘(A, A, F, F, F, F, F, F, F, F, F, F, F, F)’

    year_arr = STRMID(var2, 0, 4)
    month_arr = STRMID(var2, 5, 2)
    day_arr = STRMID(var2, 8, 2)
    hour_arr = STRMID(var2, 11, 2)
    minute_arr = STRMID(var2, 14, 2)
    second_arr = STRMID(var2, 17, 6)

    READCOL과 같은 외장 라이브러리 프로시저를 이용하는 것 외에도 내장함수를 이용하여 읽는 방법도 있는데, 이는 이상우 박사님 블로그 글을 참조하시면 도움이 될 수 있을 것 같습니다.

    http://blog.daum.net/swrush/252(클릭)

    • 이 답변은 ChoiYoun에 의해 5 years, 6 months 전에 수정됐습니다. 이유: FORMAT 변경
    답변: SetData Method 오류 문의 #5393
    ChoiYoun
    회원

    감사합니다. 항상 배워갑니다.

    답변: 그래프 축값을 변경시키는 방법 #5320
    ChoiYoun
    회원

    질문이 명확하지 않아 정확한 답변이 어렵습니다.

    window창이라는 것이 크게 두가지로 해석될 수 있을 것 같습니다.

    1) New Graphics의 window 함수(ex. w = WINDOW())
    2) window 프로시저(ex. window, 0)

    해당 게시글에서 연상되는 내용은 window 프로시저이나, 최근하셨던 질문으로는 New Graphics를 도전 중이신 듯합니다. 그리고 이전 작성글에서 xrange가 변경될 만한 경우는 아래 구문이 있습니다.

    pl.SetData, y2

    이를 다음과 같이 변경하면 xrange를 수정할 수 있습니다.

    pl.SetData, x, y2

    ChoiYoun
    회원

    hid=hdf_sd_start(file2016_[i])

    위의 코드에서 에러가 발생하는 이유는 “file2016_[i]”가 “file2016_”라는 변수의 i번째 요소로 인식되기 때문입니다. 이러한 구문이 작동하기 위해서는 hid를 정의하기 전에 다음과 같은 과정이 필요합니다.

    file2016_=[file2016_1, file2016_2, file2016_3, file2016_4, file2016_5, $
    file2016_6, file2016_7, file2016_8, file2016_9, file2016_10,$
    file2016_11,file2016_12]

    for i = 0, 11 do begin ;not i = 1, 12
    hid=hdf_sd_start(file2016_[i])

    위와 같은 선언으로도 문제를 해결할 수 있지만, 저는 여러 개의 파일을 읽을 경우 FILE_SEARCH 함수를 사용하는 것을 추천합니다.

    FILE_SEARCH 함수에 대한 사용방법은 IDL 도움말과 링크(http://idl.selab.re.kr/?p=668)를 참조하시면 될 것 같습니다.

    • 이 답변은 ChoiYoun에 의해 5 years, 11 months 전에 수정됐습니다.
    ChoiYoun
    회원

    이 코드는 위에 답변해주신 내용처럼 MAP의 LIMIT를 제대로 설정하면 사용할 필요가 없는 코드입니다.

    ChoiYoun
    회원

    맙소사, 이런 실수 때문에 작동 안하는 것이었다니 정말 감사합니다. 밑에 코드는 왜 작성했는지.. 헣헣헣.. 좋은 공부가 되었습니다.

    ps. 머리가 나쁘면 몸이 고생하네요.

    ChoiYoun
    회원

    글 찾아오시는 분이 계실까봐 스스로 답변 달아봅니다. 저는 아래와 같은 방법으로 해결하였습니다.

    MAPCONTINENTS 함수를 이용하지 않고 shape file에 직접 접근하여 PLOYLINE을 이용하여 표출하였습니다.
    즉, mc_VNM = MAPCONTIENTS(‘./VNM_adm1.shp’) 대신 아래 코드를 사용하였습니다.

    ;INSTEAD MAPCONTINENTS =======================
    shp = IDLFFSHAPE(‘./VNM_adm1.shp’)
    shp.getProperty, N_ENT = n_ent
    shp_ent = shp.getEntity(/ALL)
    for ient = 0, n_ent – 1 do begin
    n_parts = shp_ent[ient].n_parts
    for ipart = 0, n_parts – 1 do begin
    cuts = [*shp_ent[ient].parts, shp_ent[ient].n_vertices]
    n_conn = cuts[ipart + 1] – cuts[ipart]
    temp_conn = cuts[ipart] + INDGEN(n_conn)
    if ipart eq 0 then begin
    connectivity = [n_conn, temp_conn]
    endif else begin
    connectivity = [connectivity, n_conn, temp_conn]
    endelse
    endfor
    temp_x = TRANSPOSE((*shp_ent[ient].vertices)[0, *])
    temp_y = TRANSPOSE((*shp_ent[ient].vertices)[1, *])
    pline = POLYLINE(temp_x, temp_y, /DATA, TARGET = m, $
    CONNECTIVITY = connectivity)
    endfor
    ;=============================================

    ChoiYoun
    회원

    예제코드에 사용된 파일은 아래 링크에서 다운로드 받을 수 있습니다.

    ▶Shape file 다운로드(25메가바이트)

    • 이 답변은 ChoiYoun에 의해 5 years, 12 months 전에 수정됐습니다.
    답변: MAP 함수 관련 문의 #5207
    ChoiYoun
    회원

    감사합니다!

    답변: CONTOUR 색칠 관련 문의 #5187
    ChoiYoun
    회원

    언제나 정성스러운 답변 감사드립니다. 항상 많은 도움을 받고 있습니다. 정말 큰 도움이 되었습니다.

    답변: IDL 8.6.1 FONT 표출 관련 #5152
    ChoiYoun
    회원

    아래와 같은 코드로 해결되었습니다.

    p = PLOT(xx, yy, XTITLE = ‘$\rho$’)

    • 이 답변은 ChoiYoun에 의해 6 years, 4 months 전에 수정됐습니다.
    답변: SSH 시 tvlct.pro 사용 방법 #5070
    ChoiYoun
    회원

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

    답변: SSH 시 tvlct.pro 사용 방법 #5065
    ChoiYoun
    회원

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

    ChoiYoun
    회원

    위의 답변에 작성한 코드는 웹페이지 편집기의 인코딩 문제로 tickmark 변수가 이상하게 표기되는 듯합니다. 원문은 아래와 같습니다. 아래와 같은 코드를 사용하였을 때 지수형태로 나타내는 것을 확인하였습니다. 혹여나 문제가 발생할 경우 에러 메세지를 알려주시면 도움이 될 것 같습니다.

    ;+
    ;
    ; (C) Cooperative Institute for Meteorological Satellite Studies, 2000
    ;
    ; NAME:
    ; logticks_exp
    ;
    ; PURPOSE:
    ; Function to print logarithmic axis tickmarks with exponential
    ; output.
    ;
    ; CATEGORY:
    ; Graphics
    ;
    ; LANGUAGE:
    ; IDL v5
    ;
    ; CALLING SEQUENCE:
    ; PLOT, x, y, /YLOG, YICKFORMAT = ‘logticks_exp’
    ;
    ; INPUTS:
    ; axis: the axis number. 0 for X axis, 1 for Y axis, 2 for Z axis.
    ; index: the tick mark index which starts at 0.
    ; value: the default tick mark value (a floating-point number);
    ;
    ; OUTPUTS:
    ; Function returns a string containing the tick mark labels.
    ;
    ; CREATION HISTORY:
    ; Written by: Paul van Delst, CIMSS/SSEC, 08-Nov-2000
    ; paul.vande…@ssec.wisc.edu
    ;
    ;-
    FUNCTION logticks_exp, axis, index, value
    ; Determine the base-10 exponent
    exponent = LONG( ALOG10( value ) )
    ; Construct the tickmark string based on the exponent
    tickmark = ’10!E’ + STRTRIM( STRING( exponent ), 2 ) + ‘!N’
    ; Return the formatted tickmark string
    RETURN, tickmark
    END

15 글 보임 - 16 에서 30 까지 (총 39 중에서)