jhlee

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

15 글 보임 - 1 에서 15 까지 (총 66 중에서)
  • 글쓴이
  • jhlee
    Keymaster

    우선 하나의 window에 layout 을 설정하여 3개를 한번에 표출하는 것은 제 컴퓨터에서는 정상 작동을 합니다. 아래 내용으로 테스트 해보시길 부탁드리며, 그래도 겹쳐서 표출이 된다면 IDL 버전, 사용하시는 컴퓨터 OS 정보를 공유해주시면 감사하겠습니다.
    w1 = window(dimensions = [900,400])
    p1 = plot3d(/test, /CURRENT, layout=[3,1,1])
    p2 = plot(/test, /current,layout=[3,1,2])
    p3 = barplot(/test, /current,layout=[3,1,3])

    그리고 new graphics와 direct graphics을 혼용하고 계신 것 같은데요, window 함수를 사용하신 것은 new graphics문법입니다. cursor는 direct graphics에서 작동하며 new graphics에서의 이벤트 생성에 대해서는 아래 문서를 참고해주십시오.
    http://www.idl-envi.co.kr/callcenter/tips/file/61_1378456651.pdf

    새창 생성말고 현재 창에서 반복 작업을 위해서는 단순히 window 함수를 for문 위에 배치시키면 될 것 같고,
    window 함수를 이용하여 작업을 하신다면 tvrd가 아닌 save 매서드를 이용하시는게 좋을 것 같습니다.
    위의 문법 마지막에
    w1.save, ‘save_test.png’
    정도만으로 캡쳐 및 저장이 가능함을 확인하실 수 있습니다.

    답변: map 위경도 추출 #5447
    jhlee
    Keymaster

    다른 분들께서 이미 IDL을 이용한 다양한 방법에 대해 답변을 주신 것 같습니다.
    혹시 IDL만 사용하시는게 아니라 ENVI 사용도 가능하시다면, 아래 링크의 내용도 참고하시면 좋겠습니다.
    http://idl.selab.re.kr/?p=3167
    위 링크에서 설명하는 API와 TASK는 ENVI의 기능을 IDL 문법으로 처리하는 것이라서 IDLer 라면 쉽게 이해하실 수 있으리라 생각합니다.

    • 이 답변은 jhlee에 의해 5 years, 3 months 전에 수정됐습니다.
    jhlee
    Keymaster

    s1 = ” ; 작은 따옴표 2개
    s2 = ”
    data = fltarr(x, y) ; x, y는 알고 계신 데이터 크기
    openr, 1, ‘data.txt’ ; data.txt는 가지고 계신 파일 이름
    readf, 1, s1
    readf, 1, s2
    readf, 1, data
    close, 1

    로 될것 같은데요? 확인 부탁드립니다.

    답변: dat 파일 읽는 법 #5378
    jhlee
    Keymaster

    올려주신 dat 파일은 바이너리 파일로 보입니다. 바이너리 파일을 읽으려면 파일에 대한 정보(데이터 타입, 데이터 사이즈, offset 등)가 필요합니다. 정보 없이는 데이터를 절대로 열 수 없습니다.
    혹시 ENVI도 사용하시나요? .dat는 버전에 따라 다르기는 하지만 ENVI에서 저장 시 사용하는 확장자입니다. 동일 이름의 .hdr 파일이 있지는 않은지 확인 부탁드립니다.

    답변: 라이센스 관련 질문있습니다 #5377
    jhlee
    Keymaster

    가입 시 입력하신 메일로 연락을 드렸는데 아직 회신을 받지 못했습니다. 메일 확인 부탁드립니다.

    jhlee
    Keymaster

    아래 링크에 동일한 에러 메시지가 발생한 예가 있네요. IDL_PATH를 추가하여 해결했다고 합니다.
    http://www.harrisgeospatial.com/Support/Forums/tabid/2342/aft/4299/Default.aspx

    찾아보니 IDL 설치 시 포함되는 .pro 파일명인데요, 이유는 모르겠지만 path 설정이 풀린게 아닌가 싶습니다. 기본 lib 폴더가 지정되면 해결될 것 같습니다.

    • 이 답변은 jhlee에 의해 6 years, 1 month 전에 수정됐습니다.
    답변: idl 라이센스 등록 오류 질문 #5024
    jhlee
    Keymaster

    메일로 답변드렸습니다.

    답변: IDL 8.6 설치중 문제 문의 #5015
    jhlee
    Keymaster

    말씀해주신 내용과 에러메시지를 보면 OS 버전 문제가 아니라 라이선스 설정 과정에서의 문제로 보입니다.
    디폴트로 설치를 하셨다면 /Applications/harris 하부에 license administrator가 있을텐데요, 이를 실행하신 후 좌측의 ‘view licenses’를 눌렀을 때 확인되는 라이선스와 activation code가 있는지 확인하시고,
    ‘view log’를 눌러 나오는 내용을 sales@selab.co.kr로 보내주세요.

    그리고 말씀하신 내용을 보면 리눅스에서 설치 및 설정을 하셨을 경우에는 사용이 가능하다는 것 같은데요, 네트워크 설정이 리눅스에서와 맥에서 동일한지 확인하시는 것도 좋아 보입니다.

    답변: wireframe 3D sphere #2972
    jhlee
    Keymaster

    IDL 도움말의 Graphics > Graphics Gallery > Surface > Global Digital Elevation model 의 내용 및 코드를 참조하여 아래와 같이 수정을 해봤습니다.

    PRO TEST_3D

    temp = BYTARR(360, 360)
    temp = SHIFT(temp, 180)
    a = 360L
    b = 360L
    n = a * b
    spherical = MAKE_ARRAY(3, n, /DOUBLE)
    FOR i = 0L, a – 1 DO BEGIN
    FOR j = 0L, b – 1 DO BEGIN
    k = ( i * b ) + j
    spherical[0, k] = j * 360.0 / (a – 1)
    spherical[1, k] = i * 180.0 / (b – 1) – 90.0
    spherical[2, k] = 1.0
    ENDFOR
    ENDFOR

    ; Convert the spherical coordinates to rectangular coordinates.
    rectangular = CV_COORD(FROM_SPHERE = spherical, /TO_RECT, /DEGREES)
    z = REFORM( rectangular[2, *], a, b )
    x = REFORM( rectangular[0, *], a, b )
    y = REFORM( rectangular[1, *], a, b )

    ; Create the image
    img = BYTARR(360, 180)+255
    lat = indgen(37)*10-90
    lon = indgen(37)*10
    img[lon, *] = 0
    img[*, lat] = 0
    ; ii = image(img)

    ; Display the surface.
    s = SURFACE(z, x, y, LOCATION = [0, 0], TEXTURE_IMAGE = img, $
    aspect_z=1.0, transparency = 90, axis_style = 0)

    END

    3D로 구현하는 것은 기본적으로 surface 함수를 이용한 것이며,
    격자형 프레임은 따로 배열을 만든 후 surface 표현 시 texture_image 키워드를 통해,
    뒷면이 보이는 것은 transparency 라는 키워드를 통해 구현하였습니다.
    최종 사용 목적이 뭔지는 모르겠는데요, 위 내용에서 조금씩 수정하시어 사용하시면 될 것 같습니다.

    • 이 답변은 jhlee에 의해 7 years, 6 months 전에 수정됐습니다.
    • 이 답변은 jhlee에 의해 7 years, 6 months 전에 수정됐습니다.
    답변: 감독분류법 질문 #2927
    jhlee
    Keymaster

    상세한 설명 감사합니다. 제가 어제 제대로 파악을 못한 것 같습니다.
    특정 시점에 대한 특정 픽셀 혹은 ROI에 대한 분광 정보를 다른 시점에서도 이용하시고자 하는 내용이 맞는지요?

    그런 경우라면 .sli(spectral library)로 저장하시어 활용하시면 될 것 같습니다.
    원래 .sli은 하나의 픽셀에 대한 것으로 이루어지는 것으로 알고 있었으나, 지금 확인을 해보니 일반적으로 생성하는 ROI와 같이 여러 개의 픽셀(예시로 들어주신 10개의 경우도 물론 포함됩니다)에 대해서도 저장되네요.

    단일 픽셀에 대한 .sli의 내용은 원본 영상의 해당 픽셀이 각 밴드에서 어떤 반사패턴을 가지는지를 보여주는데요,
    다중 픽셀의 .sli 는 min(최소), mean-stdDev(평균-표준편차), mean(평균), mean+stdDev(평균+표준편차), max(최대)값의 5개로 구성이 됩니다.
    차후 분류 시 5개의 어떤 특성을 이용할 것인지 물론 선택하실 수 있습니다.

    이를 저장하시기 위해서는 버전(classic ENVI or new ENVI)에 따라 내용이 달라질 것 같은데요,
    기본적으로 spectral library builder 나 viewer라는 기능을 검색 및 실행하시면 이해하실 수 있으리라 생각합니다.

    답변: IDL을 이용한 Band math 문의드립니다. #2926
    jhlee
    Keymaster

    물론 가능합니다. max 함수를 쓰시면 됩니다(참고로 평균은 mean 함수입니다).
    다만, 각 밴드를 open 할때마다 비교를 하여 max를 찾는 방법은 처리 시간으로 보면 비효율적일 것 같습니다.
    메모리 문제가 없다면 임시의 2차원 배열을 생성하는 것이 아니라 3차원 배열(동일 규격의 x size * y size * 영상개수)을 만들어 한번에 읽고 비교 및 처리를 하는 것이 좋을 것 같습니다.

    답변: 감독분류법 질문 #2922
    jhlee
    Keymaster

    ROI의 공간적 위치를 반복적으로 사용하신다는 말씀이신가요?
    ROI 설정을 하는 base 영상이 지오코딩된 영상이라면 ROI를 .xml 포맷으로 저장하실 때 위경도 값을 가지고 저장됩니다.
    이후 다른 영상에 적용할 때는 ROI tool에서 import ROI를 하여 사용하실 수 있습니다.

    답변: IDL을 이용한 Band math 문의드립니다. #2921
    jhlee
    Keymaster

    년도별 평균값에 대해서는, 모든 영상의 사이즈가 동일하다면 해당 크기만큼의 빈 배열을 만들어놓고 i, j에 대한 2개의 for문을 통해 각 픽셀에 대한 평균값을 입력하는 방식이면 되리라 생각합니다.
    년도별 데이터 개수와 각 영상의 사이즈에 따라 메모리 문제가 발생할 수도 있으나 열흘 간격의 약 36~37개 파일이라면 무리는 되지 않을 것으로 예상합니다.

    답변: IDL을 이용한 Band math 문의드립니다. #2920
    jhlee
    Keymaster

    안녕하세요, 이제 온라인에서도 뵙게되었네요 ㅎㅎ 반갑습니다.
    위 내용과 관련하여 에러 메시지도 알려주셨으면 어떤 문제인지 더 정확히 파악할 수 있을 것 같은데요, 우선은 알려주신 코드로 실행해본 후 몇가지 문제에 대해 말씀드립니다.

    – 먼저 for 문 이후 begin 이 실행되지 않았습니다. i 가 순차적으로 증가할 때마다 outfile까지 처리가 되어야 할 것 같은데요, 위 경우라면 e.openraster가 한번에 처리되고 이후, outfile 지정하는 부분으로 넘어가는데 문제가 생깁니다.

    – out,name은 단순 오타인지, 정말로 저렇게 사용하신 것인지 모르겠습니다. out_name으로 쓰셔야 합니다.

    – 각 영상을 호출하고 단일 영상에서 각 픽셀에 대한 값을 변경하는 것이므로 fid는 1개이면 됩니다.

    심각한 문제는 아니지만 조금 더 말씀드리면,
    – outfile 이름도 저 상태로라면 다소 이상하게 저장됩니다. files1983[i]에서 이미 .tif가 들어가 있기 때문에 “원본.tifR.tif”가 될 것 같습니다.
    – 0.0078125는 이미 실수형이기 때문에 float으로 감싸지 않으셔도 됩니다.

    위 내용으로 수정한 예시 코드를 추가합니다.
    compile_opt idl2
    e=envi()

    files1983=file_search(‘JAPAN83*NDVI.tif’, count=ct1983)

    for i = 0, ct1983-1 do begin
    Raster=e.openraster(Files1983[i])
    temp_name = strmid(files1983[i], 0, 19)
    OUTFILE = temp_name+’_R’

    fid = ENVIRasterToFID(raster)
    ENVI_File_Query, fid, DIMS=dims
    ENVI_Doit, ‘Math_Doit’, FID = [fid], DIMS = dims, POS = [0], EXP = ‘b1*0.0078125-1.’, OUT_NAME = OutFile
    endfor

    답변: IDL 실행시 문제 #2912
    jhlee
    Keymaster

    우선 아래 링크의 글을 확인해주십시오.
    http://www.spweather.com/idluser/bbs/view.php?id=idlqa&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=java&select_arrange=headnum&desc=asc&no=2482
    위 링크 내용에는 에러메시지는 있다고 하니 다른 문제일지도 모르겠습니다.

    문제가 계속된다면 라이선스 종류나 타입 등을 확인해야할 것 같은데요, sales@selab.co.kr 로 이에 대한 정보를 보내주시기 바랍니다. 라이선스 번호만 있으면 확인이 가능할 것 같습니다.

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