게시판 답변이 생성됐습니다
-
글쓴이글
-
ChoiYoun회원123456789101112131415a b c da b c da b c da b c da b c da b c da b c da b c da b c da b c da b c da b c da b c d
위와 같은 형태의 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 전에 수정됐습니다.
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 변경
ChoiYoun회원감사합니다. 항상 배워갑니다.
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회원감사합니다!
ChoiYoun회원언제나 정성스러운 답변 감사드립니다. 항상 많은 도움을 받고 있습니다. 정말 큰 도움이 되었습니다.
ChoiYoun회원아래와 같은 코드로 해결되었습니다.
p = PLOT(xx, yy, XTITLE = ‘$\rho$’)
- 이 답변은 ChoiYoun에 의해 6 years, 4 months 전에 수정됐습니다.
ChoiYoun회원COLORTABLE를 저렇게 활용할 수 있는지 처음 알았습니다. 정말 많은 공부가 되었습니다. 다시 한번 감사드립니다.
ChoiYoun회원감사합니다. 덕분에 아래와 같은 방식으로 프로시저를 변경하여 해결하였습니다.
123456789101112PRO get_rgb, rgb, r, g, bset_plot, 'Z'device, DECOMPOSED = 0loadct, 0tvlct, r, g, b, /GET ;An error has occurred!!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]]ENDChoiYoun회원위의 답변에 작성한 코드는 웹페이지 편집기의 인코딩 문제로 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 -
글쓴이글