image_dimension 조언 부탁드립니다.

게시판 IDL Q&A image_dimension 조언 부탁드립니다.

이 게시글은 2개 답변과 2명 참여가 있으며 마지막으로  Sangwoo에 의해 5 월, 2 주 전에 업데이트 됐습니다.

  • 글쓴이
  • #5573 답변

    qrjtl5383
    회원

    안녕하세요,

    image 중 “First argument has invalid dimensions”에 관련하여 조언을 구하고자 합니다.

    제 결과는 배열의 그리드 정보의 최왼족 아래 값이 “lon=120, lat=40” 입니다.
    또한, x direction이 861개 이고, y direction이 911개 입니다.
    이외에도 x,y의 수평해상도는 0.01입니다.

    그러하여, image_dimension에 [8.61, 9.11]의 값을 넣어 실행해보니

    <im2=image(data, image_location=[120, 40], image_dimension=[8.61, 9.11], $> 부분에서
    <First argument has invalid dimensions>를 확인 할 수 있었습니다.

    map에서 “LIMIT=[30, 100, 55, 150]”로 grid의 크기를 결정한다음 image로 결과파일을 그리는것으로 이해하여 이와같이 작성을 해보았습니다.
    이 부분에서 잘못 알고있는 부분 및 오류에 관하여 조언 부탁드립니다.

    ============================================================

    close,/all

    file = (‘changchunflxout_d01_20171104_150000.nc’)
    id = NCDF_OPEN(file)
    ncdf_varget,id,’CONC’,conc
    help, conc

    data=conc[*,*,0,*,*]
    help, data
    print, MIN(data), MAX(data)

    win2=window(dimensions=[600, 500])
    m=map(‘geographic’, margin=[0.08, 0.25, 0.03, 0.09], LIMIT=[30, 100, 55, 150], $
    aspect_ratio=0, clip=0, font_size=10, /current)

    im2=image(data, image_location=[120, 40], image_dimension=[8.61, 9.11], $
    grid_units=2, RGB_TABLE=34, aspect_ratio=0, /overplot)

    m1=MAPCONTINENTS(‘KNU_27_01_adm1.shp’, THICK=1)
    m2=MAPCONTINENTS(‘gadm36_KOR_1.shp’, THICK=1)

    mg = m.MapGrid
    mg.Linestyle = 2
    mg.LABEL_POSITION = 0

    cb=COLORBAR(TARGET=im2, TITLE=’ppt’, FONT_SIZE=10, $
    POSITION=[0.2, 0.07, 0.8, 0.10], /BORDER)

    END

    ============================================================

    결과파일(.nc)은 <https://blog.naver.com/qrjtl5383/221548883705>에 올려놓았습니다.

    감사합니다.

  • #5575 답변

    qrjtl5383
    회원

    안녕하세요,

    제가 위와같은 질문에 답을 해결(CONC 값 수정)하였습니다.

    그러나 표출부분에서.. 문제가 생겼습니다.

    저의 결과값과 그림상에 표출최는 MAP 좌표가 맞지 않아서입니다..
    이는 위경도를 지정해주면 해결될 것 같다는 생각이 들어 실행해보고싶은데..
    CONC값에서 ‘ncdf_varget,id,’lon(lat)’,lon(lat)’ 방법을 적용하면 될 것이라 생각했습니다.

    그러하여 lon=conc[*,0,0,0,0]과 lat=conc[0,*,0,0,0] 을 적용하여 print를 해보니
    lon은 *값에 관하여 추출되었으나, lat은 [1,*] 이렇게 추출되었습니다.
    저는 이 lat에 1의 값을 지우고 싶습니다..
    방법을 알려주시면 감사하겠습니다.

    또한, 이런 방법으로 lon, lat을 추출하여 image에 적용시키면
    저의 결과값과 그림상에 표출최는 MAP 그림의 좌표가 맞을 수 있을까요?

    조언 부탁드립니다.

  • #5576 답변

    Sangwoo
    회원

    우선 배열을 추출할 때 [1, *]의 형태가 아닌 완전한 1차원 형태로 추출하려면 REFORM 함수를 사용하면 됩니다. 즉 다음과 같이 사용합니다.

    lat = REFORM(conc[0, *, 0, 0, 0])

    그런데 올려주신 nc 파일 내에는 제가 보기엔 경위도 좌표 관련 정보가 없는 것 같습니다. 변수 및 전역속성 목록을 지난번 질문하실 때에도 올려주셨지만, 변수 4종과 전역속성 20종의 세부 항목들 중 어디에도 안보입니다. 물론 변수 4종의 목록을 확인해보면 XLONG, XLAT이란 이름은 등장하는데 실제로 그런 이름의 변수는 파일 내에 존재하지 않습니다. 언급하신 conc는 그냥 5차원 배열로 저장된 데이터값들에 해당되기 때문에 그 배열 내에 경위도 좌표 정보가 들어가있지는 않은 것 같습니다. 따라서 질문하셨던 것과 같은 방식으로 conc로부터 lon이나 lat 정보를 가져올 수는 없을 것으로 보입니다. 아마도 경위도 위치 및 범위에 대한 정보는 이 nc파일과는 별도로 따로 확보해야 하는 것 같습니다. 언급하신 (120, 40) 및 (0.01, 0.01)과 같은 정보는 아마 질문자께서 따로 확보하신 정보일 것으로 생각됩니다.

    따라서 이미지를 맵상에 중첩 표출한 결과가 제대로 된 결과일 것이냐에 대해서는 제 3자 입장에선 판단을 할 방법이 없습니다. 확보하신 경위도 위치 및 범위에 대한 정보를 이용해서 표출을 해보시고 직접 판단하셔야 할 문제라고 봅니다.

'image_dimension 조언 부탁드립니다.'에 답변달기
글쓴이 정보: