JongHyeon

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

15 글 보임 - 1 에서 15 까지 (총 15 중에서)
  • 글쓴이
  • 답변: 바이너리 포맷 읽기 #1395
    JongHyeon
    회원

    코드 내에서 잘못된 점은 fix나 float등이 배열들의 개별값을 변환하는 함수라는 점입니다.
    nbyte= fix(data[offset+4L:offset+7L]) & print, ‘nbyte:’, nbyte
    에서 출력이
    nbyte: 44 0 0 0
    라고 되는데요.
    보시면 data라는 byte array의 data[offset+4L:offset+7L]의 결과가 배열이 됩니다.

    따라서 nbyte를 포함한 fix,float로 변환하는 변수들을 help로 확인하면
    <Expression> INT = Array[4]
    등으로 출력이 됩니다. (fix를 이용했으면 int, float를 이용하면 float)

    단 string은 byte를 char로 판단하기 때문에 byte array를 넣으면 정상적으로 출력됩니다. 따라서 id는 제대로 출력이 된 것이지요.

    참고로 byte array로 출력된 데이터를 다른형으로 맞춰서 변환하는 것이 힘들기 때문에 처음 파일을 읽을 때 데이터형에 따라서

    char형은 bytarr(4) [예)id = bytarr(4)]
    integer4형은 IDL의 long [예) nbyte=0L]
    integer2형은 IDL의 int
    float4형은 IDL의 float

    와 같이 변수를 우선 생성하고,

    openr,1,fp+file

    로 파일을 열어서

    readu,id,nbyte,sweep_num …

    식으로 파일을 읽으면 될 것 같습니다.

    답변: Data 비교 정리 #1378
    JongHyeon
    회원

    1행과 2행을 문자로 만들어서 비교하는 것은 문제가 없어 보입니다.
    strmatch를 이용하셔서 어떤 문제가 발생하는지 모르겠지만, 1행과 2행을 비교하실 때 각 행을 tmp = strtrim(str,2) 를 통해서 양쪽의 공백을 지워주시고 if 1행 eq 2행 then begin을 통해서 비교 진행을 하는 것이 더 좋을 것 같습니다. if문이 string도 비교해주기 때문에 양쪽의 공백만 제거해 주시면 제대로 작동할 것입니다.

    답변: IDL 왕초보 도와주세요 ㅠ #1377
    JongHyeon
    회원

    해당 에러코드는 netcdf에서 주어지는 에러가 아니기 때문에 해결하는 데 더 자세한 정보가 필요합니다.

    우선 경로를 문자열에서 추출하고( tmp = str[i] ) 이것을 통해서 ncdf_open을 시도해보세요.( ncdf_id = ncdf_open(tmp[0]) )

    지금까지 확인한 내용으로는 해결되었다고 하는 유일한 방법이었습니다. 그래도 안되시면, 해당 코드를 올려주시면 코드를 확인하고 해결방안을 찾아드리도록 하겠습니다.

    답변: HDF 자료 읽을때 자료형 #1055
    JongHyeon
    회원

    실제로 데이터가 잘려서 나온게 아니라 포맷의 문제인 것 같습니다.
    아래쪽에 Julan day관련된 질문과 연관되어 보여서 링크 추가했습니다.
    http://idl.selab.re.kr/?topic=julian-day-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4

    • 이 답변은 JongHyeon에 의해 10 years, 7 months 전에 수정됐습니다.
    JongHyeon
    회원

    if 조건 then return

    하시면 됩니다.

    프로시저일때는 return이 값을 반환하지 않고 종료합니다.

    답변: 다수의파일읽기질문입니다… #946
    JongHyeon
    회원

    http://idl.selab.re.kr/?p=668

    링크를 보시면 자세하게 보실 수 있습니다.

    답변: hdf5 여러 파일 읽기 #945
    JongHyeon
    회원

    우선 HDF5포맷에 대해서는 IDL에서 F1을 하신다음 도움말에서 HDF5를 검색하시면 설명이 나옵니다.

    여러개의 파일을 읽는다는 것은 파일을 열고 읽고 닫는 일련의 작업을 파일의 갯수만큼 반복한다는 것인데, 여러 파일을 동시에 찾는 작업은 http://idl.selab.re.kr/?p=668 를 보시면 아실 수 있을 겁니다.

    답변: contour color bar 질문입니다. #849
    JongHyeon
    회원

    levels는 직접 contour의 등고선을 지정하는 것입니다. nlevel은 동일한 크기로만 등고선을 자르는데 비해 levels는 등고선의 선을 자신이 원하는 형식으로 설정할 수 있다는 차이가 있습니다. 컬러테이블의 색은 자동으로 레벨에 맞추어 나누어주는 것 같습니다.

    컬러바에서 ncolors를 100으로 지정해주실 때 전체 컬러테이블의 크기만큼 되기를 원하신다면, loadct,39,ncolor=100으로 하셔서 작업을 하시면 contour와 동일한 모양의 컬러바가 지정이 될 것입니다.

    컬러바에 들어가는 숫자의 포맷은 FORMAT 키워드로 조정이 가능합니다. 10의 지수승 즉 1.000e+003같은 형태로 받는 방법은 FORMAT='(e7.3)’으로 해주시면 됩니다.

    답변: 파일의 날짜 정보를 알고 싶습니다. #816
    JongHyeon
    회원

    파일의 정보를 읽는 것은 result=FILE_INFO(파일명) 으로 가능합니다.

    result는 구조체로 들어오며, result.atime은 마지막으로 접근한(파일을 이용한) 날짜이며, result.ctime은 파일의 상태가 변화된 날짜(생성일), result.mtime은 마지막으로 수정된 날짜를 UTC기준에 맞춰서 초단위로 저장하게 됩니다.

    추가적으로 이것을 날짜의 문자열로 바꾸는 것은

    day=systime(0,result.ctime,/utc)

    으로 변경이 가능합니다.

    답변: linfit에서 에러값에 대해서.. #815
    JongHyeon
    회원

    chi square root값을 찾고 싶으시면,

    result = LINFIT(X, Y,chisqr=k)

    로 하시면 됩니다. k에 값이 들어가게됩니다.

    자세한 설명은 IDL 도움말을 이용하시는 것이 좋을 듯 싶습니다.

    JongHyeon
    회원

    우선 첫번째의 해결은 원본 지도를 그린 후 알래스카 지도를 표현할 때
    map_set,/CYLINDRICAL,limit=[50,190,75,230], color=0,POSITION=[0.1, 0.7, 0.2, 0.8],/noerase

    를 이용하시면 됩니다. 단 지도에 표시할 것이 있다고 하셨으니, 원본지도에 우선 데이터 표출을 완료한 다음에 덧씌우는 것이 좋을 것 같습니다.position같은 경우 임의로 해놨는데 원하시는 위치에 넣으시면 될 것입니다.

    또한 경도의 문제 같은 경우 주어진 경도의 배열의 이름을 바꾸는 방식이 가능합니다.

    MAP_GRID, COLOR=100, BOX_AXES=0.1,lons=[-150,-130,-110,-90,-70,-50],lonname=[210,230,250,270,290,310]

    위와 같이 바꿀 경도의 배열과 변환된 배열을 입력하시면 결과가 나올 것입니다.

    JongHyeon
    회원

    IDLgrWindow::SetCurrentCursor 라는 프로시저가 질문하신 내용에 맞는 함수인 것 같습니다.

    Obj->[IDLgrWindow::]SetCurrentCursor [, CursorName] [, IMAGE=16 x 16 bitmap] [, MASK=16 x 16 bitmap] [, HOTSPOT=[x, y]]

    식으로 이용이 가능하고 cursorname을 넣으면 제공하는 커서모양이 가능한 것 같고 image 키워드를 통해서 커서 이미지도 직접 넣는 것이 가능한 듯 싶습니다.

    cursorname에 쓰이는 것들은 ARROW CROSSHAIR ICON IBEAM MOVE ORIGINAL SIZE_NE SIZE_NW SIZE_SE SIZE_SW SIZE_NS SIZE_EW UP_ARROW 가 있으며 REGISTER_CURSOR 를 통해서 커서 모양을 추가할 수 있습니다.

    답변: IF문 문의 #731
    JongHyeon
    회원

    링크
    링크를 참조하시면 될 듯 싶습니다. 파일 루트와 갯수를 다 찾기때문에 반복문으로 작성하기도 쉽습니다. 딱히 if문이 필요하지도 않을 것입니다.

    답변: 그림을 그리고 싶습니다 #709
    JongHyeon
    회원

    어떠한 그림을 그리실지는 모르겠습니다만,(그림링크도 잘못된거 같습니다) AWS의 자료를 그래픽화 시키기 위해서 필요한 함수는 여기에서 확인하실 수 있으실겁니다.

    • 이 답변은 JongHyeon에 의해 10 years, 11 months 전에 수정됐습니다.
    • 이 답변은 JongHyeon에 의해 10 years, 11 months 전에 수정됐습니다.
    답변: 중심에서 떨어진 거리 비 계산 #706
    JongHyeon
    회원

    적당한 함수는 찾지 못했습니다만, 데이터의 양이 절망스럽게 많지 않고 적당한 오차범위에서 contour가 그려진다면 다음과 같은 방법은 가능할 것 같습니다.

    a에서 b를 지나는 직선의 x값과 y값을 x1,y1로 하여 배열을 만들고(이때 시작은 a점으로 하면 좋습니다) contour의 x값과 y값을 x2,y2의 배열로 존재한다면 다음과 같은 방법도 가능합니다.

    (만약 4개의 배열이 다 1000개의 값을 가진다면)
    z1=fltarr(1000,1000)
    z2=fltarr(1000,1000)
    for i=0,999 do for j=0,999 z1[i,j]=abs(x1[i]-x2[j])
    for i=0,999 do for j=0,999 z2[i,j]=abs(y1[i]-y2[j])
    sumz=sqrt(z1^2+z2^2)
    result=min(sumz,tmp)
    where=tmp MOD 1000

    print,x1[where],y1[where]

    이렇게 하시면, c의 근사값은 구할 수 있을 것이라 생각합니다.

15 글 보임 - 1 에서 15 까지 (총 15 중에서)