mwkim

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

15 글 보임 - 1 에서 15 까지 (총 49 중에서)
  • 글쓴이
  • 답변: 벡터 범례 문의(2) #5477
    mwkim
    회원

    안녕하세요, 해당 부분에 대해서는 정확하게 확인된 것은 아닌데 아래 내용을 확인해주시면 감사하겠습니다.

    올려주신 예재를 실행했을 때, 실제 레전드에서 표출되는 크기가 변동되는 것을 확인했습니다.
    (사실상 레전드가 달라지기 보다는 벡터 표출의 기준 크기가 달라진다고 보는게 맞습니다.)

    해당 부분에서 특이한 것은 표출 시 표출이 되지 않는 위치가 있다는 것입니다.

    올려주신 예제에서 xx_1d와 yy_1d의 경우 fix_seed를 1로 하여 위치를 고정했기 때문에 아마 동일하게 확인될텐데

    경계 부분에서 일부 값이 표출되지 않는 것을 확인할 수 있습니다.

    문제가 발생하는 부분이 이 부분이 아닐까 합니다.

    앞서 알려드렸듯이 벡터의 크기 조절은 내장 함수에서 표출하고자 하는 벡터의 크기를 기준으로 정하게 되는데,

    이 표출되지 않는 지점에서 MAX(spd)값이 발생하는 경우,

    실제 vector 표출의 크기 조정에 사용되는 최대 크기와 해당 값이 다르기 때문에 발생한다고 보여집니다.
    (위에서 언급한 바와 같이 확실히 확인 된 것은 아닙니다.)

    이를 위해 표출 범위를 넓혀서 표출하면 우선 해당 문제가 해결된 것처럼 보여서 확인해보시면 될 것 같습니다.

    참고로 아래는 올려주신 코드를 변형하여 테스트한 코드입니다.
    (wideRange 옵션으로 표출 범위 조정)

    PRO TEST_LEGEND2

    ;[MAP + Anisotropic (x,y)]=====================

    ;For Anisotropic (x,y)
    ;
    wideRange = 0 ; 1로 설정하면 표출 범위가 넓어집니다.
    ;
    xx_1d = FLTARR(10, 10)
    yy_1d = FLTARR(10, 10)
    fix_seed = 1
    if widerange eq 0 then begin
    sb = 32. &wb = 123. &nb = 41. &eb = 132.
    for iy = 0, 9 do xx_1d[*, iy] = wb + FINDGEN(10) + 0.1 * RANDOMN(fix_seed, 10)
    for ix = 0, 9 do yy_1d[ix, *] = sb + FINDGEN(10) + 0.1 * RANDOMN(fix_seed, 10)
    endif else begin
    sb = 31. &wb = 122. &nb = 42. &eb = 133.
    for iy = 0, 9 do xx_1d[*, iy] = wb + 1. + FINDGEN(10) + 0.1 * RANDOMN(fix_seed, 10)
    for ix = 0, 9 do yy_1d[ix, *] = sb + 1. + FINDGEN(10) + 0.1 * RANDOMN(fix_seed, 10)
    endelse

    ;Map set
    fix_seed2 = 2 ; 풍속도 랜덤으로 하면 문제 발생할 때 까지 반복해야 해서 이 부분도 고정했습니다.
    m = MAP(‘Geographic’, LIMIT = [sb,wb,nb,eb], $
    ASPECT_RATIO = 0, CENTER_LONGITUDE = 128)
    mc_ = MAPCONTINENTS()
    FOR i = 0, 9 DO BEGIN
    uu = 10*RANDOMN(fix_seed2, 10, 10)
    vv = 10*RANDOMN(fix_seed2, 10, 10)
    uu_1d = REFORM(uu, 100)
    vv_1d = REFORM(vv, 100)
    spd = SQRT(uu_1d^2+vv_1d^2)
    scl = MAX(spd)/60.*3
    v = VECTOR(uu_1d, vv_1d, xx_1d, yy_1d, $;MIN_VALUE=0, MAX_VALUE=60, $
    LENGTH_SCALE=scl, HEAD_SIZE=scl/2, /OVERPLOT)
    v_legend = LEGEND(TARGET=v, SAMPLE_MAGNITUDE=10, UNITS=’$m s^{-1}$’)
    v_legend.POSITION = [0.95, 0.975-i*0.1] ; 겹쳐져서 그려지지 않게 하기 위해 변경하였습니다.
    ENDFOR
    pline = POLYLINE([535,535],[10,500],COLOR=’r’,/DEVICE) ; 동일한 위치인지 확인하려고 선을 그었습니다.
    pline = POLYLINE([515,515],[10,500],COLOR=’r’,/DEVICE) ;

    ;============================================
    ;
    END

    • 이 답변은 mwkim에 의해 5 years, 1 month 전에 수정됐습니다.
    • 이 답변은 mwkim에 의해 5 years, 1 month 전에 수정됐습니다.
    • 이 답변은 mwkim에 의해 5 years, 1 month 전에 수정됐습니다.
    • 이 답변은 mwkim에 의해 5 years, 1 month 전에 수정됐습니다.
    • 이 답변은 mwkim에 의해 5 years, 1 month 전에 수정됐습니다.
    답변: 벡터 범례 문의 #5466
    mwkim
    회원

    안녕하세요.

    우선 올려주신 부분에서 벡터 크기가 그릴때마다 달라진다는 부분과 관련하여 아래와 같은 내용을 찾을 수 있었습니다.

    IDL 도움말 – VECTOR에서

    ————————

    Tip: The purpose of the VECTOR function is to draw a vector field or wind field at a series of (X, Y) locations. The units of the vector or wind field are arbitrary, and are not related to the units for the X and Y coordinates. The ARROW function (with the DATA keyword) may be used to draw arrows that are directly related to the X and Y coordinates.

    Note: The units for the U and V components are arbitrary, and are not related to the units of the X and Y coordinates. The VECTOR function will compute a default length scale and head size based upon the overall number of vectors and the average magnitude of the vectors. The LENGTH_SCALE and HEAD_SCALE properties may be used to change the default size.

    ————————

    대략 해석하기로는 VECTOR 함수는 실제 X, Y 축과는 무관하게 그려지며
    함수에서 표출하는 벡터의 수와 크기를 기준으로 스케일이 자동으로 정해진다고 보여집니다.

    실제 올려주신 예제에서도 표출하면 축과 실제 그려지는 벡터 스케일이 다른 것을 확인할 수 있습니다.
    (또한 같은 원리로 입력 U, V 값의 스케일을 조정하더라도 그려지는 그림은 동일합니다.)

    다만 추정되기로는 두번째 예제와 같이 벡터의 스케일은 U, V의 최대 크기(Maximum magnitude)에 의해서 정해지는 것이 아닌가 합니다(추정입니다. 도움말에서는 어떻게 정의되는지 명시되지 않았습니다.)

    따라서 두번째 예제는 최대값을 고정했기 때문에 벡터는 동일한 스케일로 그려졌다고 보여집니다.

    그리고 두번째 예제에서 범례(레전드)가 계속 움직이는 현상은 아래와 같이 동일한 창에 연속으로 표출하면 동일하게 표출되는 것을 확인했습니다.

    ————————

    w = WINDOW()
    for i = 0, 9 do begin
    uu = 10. * RANDOMN(seed, 10, 10)
    vv = 10. * RANDOMN(seed, 10, 10)

    vv[0] = 40
    uu[0] = 40

    v = VECTOR(uu, vv, MIN_VALUE = 0, MAX_VALUE = 60)
    v_legend = LEGEND(TARGET = v, SAMPLE_MAGNITUDE = 10, UNITS=’$m s^{-1}$’, POSITION = [0.95, 0.975])
    WAIT,3 & w.Erase ; 이 부분을 주석처리하면 벡터 그림이 겹쳐지는 것에 반해 레전드는 동일한 것을 확인할 수 있습니다.
    endfor

    ————————

    답변: 지도 위에 벡터 표출하기 #5460
    mwkim
    회원

    안녕하세요.

    질문하신 부분에서 VECTOR 함수의 X, Y에 들어가는 자료의 형태는 1차원 자료이지만 정방형 데이터일 필요는 없습니다.

    간단하게는 X, Y에 들어가는 데이터를 1차원 형태로 변형만 해주어도 됩니다.
    (다만 정방형 데이터가 아니니 U, V도 같이 1차원으로 변형해야 합니다.)

    예를 들어 올려주신 예제 자료를 기준으로

    arrSize = SIZE(uu,/N_ELEMENTS)
    uuRe = REFORM(uu,arrSize)
    vvRe = REFORM(vv,arrSize)
    lonRe = REFORM(lon_arr,arrSize)
    latRe = REFORM(lat_arr,arrSize)

    와 같이 변환한 후에

    v = VECTOR(uuRe, vvRe, lonRe, latRe, /OVERPLOT, /AUTO_SUBSAMPLE)

    로 벡터를 표출하시면 됩니다.

    다만 위와 같이 표출했을 때, 올려주신 자료에서는 격자 수가 많아 벡터(화살표)가 잘 안보이기도 하고,

    일정 구역에서 벡터 크기가 튀는 부분이 있어 표출할 때 옵션을 통해 조정이 필요해 보입니다.

    답변: 데이터 QC (반복적인 roop) #5443
    mwkim
    회원

    안녕하세요.

    우선 fillvnan 은 !VALUES.F_NAN 이라고 가정하고 코드를 봤습니다.

    아마도 해결이 안되는 부분은 yy_o에 해당하는 값이 연속적으로 증가하는 부분때문에 모두 제거가 안 된 것이 아닐까합니다.

    따라서 연속적인 값을 비교하기 위해서 비교값을 저장하면 되지 않을까 합니다.

    IF yy_o[i] GT threshold THEN BEGIN
    yy1[i] = fillvnan
    ENDIF ELSE BEGIN
    threshold = yy_o[i]
    ENDELSE

    위와 같이 하셔도 되고 비슷하게 작성하셔도 됩니다.(참고로 threshold는 FOR 돌기 전에 yy_o[0]으로 설정 추가하셔야 합니다.)

    다만 문제가 있다는 부분이 정확히 어떤 부분일지는 내용만으로 판단이 안되서

    위 부분만으로 해결이 안 될수도 있습니다.(잘못이해해서 원하지 않는 부분도 제거될 수 있고요.)

    특히 자료 처리를 반복할수록 그래프가 이상하다는 부분이 어떤 부분인지는 잘 모르겠네요.

    조언을 드리자면 자료 처리에 문제가 있으면 문제가 있는 부분을 해결하고 점차 적용하는 방식으로 하면 해결이 조금은 더 쉽지 않을까합니다.

    mwkim
    회원

    안녕하세요.

    몇 가지 확인해보시면 좋을 부분을 알려드립니다.

    1. 반복문으로 구동하지 않고 두번째 파일(tps-91.dat)만 잡아서 코드를 구동할 때, 동일한 증상이 발생하는 지 확인

    1-1. 두번째 파일만 넣어도 동일한 문제가 발생하는 경우는 첫번째 파일(tps-90.dat)과 차이를 확인
    (아마도 파일을 열어서 보면 일부 자료나 컬럼이 빠져있거나, 잘못된 구분이 되있거나 할 것 같습니다.)

    1-2. 두번째 파일만 넣을 때는 잘 된다면, file_90s 변수나 file 변수를 표출하여 파일이 제대로 설정되는지 확인
    (사실 이 부분은 문제없어 보입니다.)

    2. 그리고 IDL 개발환경(idlde)에서 진행하면 위와 같은 오류메세지가 나오더라도 일단 array에 자료가 들어 있을 겁니다.
    (에러메세지는 읽으려고 하는 변수에 비해 파일에 기록된 내용이 적다는 내용)
    따라서 오류가 나서 멈추었을 때 array 자료를 표출해보면 자료가 어떻게 읽히고 어디까지 읽혔는지 확인할 수 있습니다.

    위에 알려드린 것처럼 idlde에서 작업 진행하시면 작업 중간에 변수 등을 확인할 수 있기 때문에

    에러가 동일한 부분에 발생되면 에러 전후에 STOP 명령어를 두어 변수 값을 확인하시면 도움이 되실 겁니다.

    감사합니다.

    답변: list 함수를 쓰는 경우 #5296
    mwkim
    회원

    안녕하세요, 혹시 에러가 발생한 상황에 대해서

    재현할 수 있는 코드를 올려주실수 있는지요?

    위 내용만 가지고는 어떤 상황에서 오류가 나는지 알기 어려울 것 같습니다.

    에러가 랜덤하게 발생한다면 랜덤하게 발생되는 코드를 올려주시면 감사하겠습니다.

    mwkim
    회원

    위에 링크 걸어주신 방법(IDL_PATH 추가)으로 해결이 되었나요??

    말씀하신것처럼 경로의 문제라고 하면 아마 BUFFER를 사용해도 동일하게 문제가 발생할 것입니다.

    다만 경로의 문제가 아니라면… 우선 IDL을 지우고 재설치 해보는 것도 좋을 것 같습니다.

    언급하셨듯이 원래는 문제가 없다가 추후에 문제가 생긴 것이라면 설정 변화에 따른 것일 수도 있어서

    재설치하면 해결될수도 있지 않을까 합니다.

    그 외에 추정되는게 WINDOW 자체가 안 열리는 것이

    IDL에서 애초에 별도의 윈도우를 못 띄우는 상황이 된 것이 아닐까

    추정해서 BUFFER 사용을 언급했던 것입니다.
    (메모리 문제로 추정한 것은 아닙니다)

    BUFFER를 사용하면 실제 창을 띄우지 않고 메모리상에서만 작업하기 때문에 창 띄우는데 문제가 있는거면

    임시방편으로는 사용가능하지 않을까 합니다.

    BUFFER 사용법은 WINDOW 함수의 도움말을 보시면 됩니다.
    (또는 WINDOW 함수를 자동적으로 호출하는 PLOT, IMAGE 등의 함수에도 키워드로 포함됩니다.)

    • 이 답변은 mwkim에 의해 6 years 전에 수정됐습니다.
    mwkim
    회원

    안녕하세요,

    해당 부분에 대해서는 이것이 원인이다라고 명시하기는 어려울 것 같습니다.

    가능하시면 발생한 오류를 테스트해볼 수 있는 코드를 올려주시면 좋을 것 같은데,

    한 컴퓨터에서는 정상구동되는 걸 보아서는 그것도 어려울 것 같네요.

    다만 위 플롯하는 부분을 단계별로 구분 수행해서 어느 부분에서 에러가 발생하는지 확인하면 좋을 것 같습니다.

    w = window()
    p = plot(index_y_mean, mnf_y_mean, /current)
    p.color = ‘b’
    p.symbol = ‘o’
    p.xtitle = ‘L1A coordinate (Yp)’
    p.ytitle = ‘MNF value’

    만약에 창을 띄우는 과정에서 문제가 발생되면 buffer를 사용해서 저장을 해보는 것을 추천드립니다.

    답변: axis 함수 사용 질문 #5252
    mwkim
    회원

    안녕하세요,

    하시려는 부분에서는 크게 두 부분을 질문하신 것 같습니다.

    1) 하나는 axis 추가하는 부분(이 부분은 알고 계실 수도)이고,

    2) 다른 하나는 축에 표시되는 값을 다른 값으로 바꾸는 것입니다.(여기서는 position에 해당하는 값)

    1)은 AXIS 함수를 사용하면 되며, 도움말을 보시면 해당 예제가 있으니 참고하시면 도움이 될 것 같습니다.

    2)는 AXIS 함수의 TICKNAME을 설정하여 적용 가능합니다.

    다만 주의해야 할 것은 TICKNAME에 들어가는 문자열의 갯수가 기존 TICK(major) 수와 동일해야 합니다.
    (적으면 에러가 발생하고, 많아도 에러는 나지 않지만 뒷부분이 짤립니다.)

    해당 부분에 대해서는 다음 링크를 참조하시는 것도 도움이 될 것 같습니다.
    (보조축을 사용하는 내용인데 실질적으로 보조축을 만들때 TICKNAME을 사용합니다.)
    보조축플롯

    답변: 평균 취할 때 궁금합니다 #5239
    mwkim
    회원

    안녕하세요, 크게는 두 개로 나누어볼 수 있을 것 같은데,

    1. 배열을 하나의 자료로 함칠 것
    2. 합친 자료를 특정 차원에 대해서 평균할 것

    입니다.

    ——————————-

    이 중 1번을 할 때, 2번을 위해서 기존 차원이 아니라 새로운 차원을 더해서 합쳐야 합니다.
    (여기서는 1차원 자료를 합쳐서 2차원 자료로 병합)

    간단하게는 아래와 같이 하면 됩니다.

    data = [[a],[b],[c],[d],[e]]

    다만 해당 방법은 a,b,c,d,e가 모두 같은 크기를 같아야하고

    크기가 다른 경우에는 합칠 배열을 먼저 만들어두고 인덱스를 통해 직접 넣는게 좋을 것 같습니다.

    ——————————-

    위와 같이 평균을 하는 것은 합쳐진 자료에 대해 새로 생긴 2차원에 대해 평균을 취하면 됩니다.

    f = MEAN(data,DIMENSION=2)

    위 DIMENSION 옵션에 대한 설명은 IDL 도움말에서 MEAN을 찾아보시면 설명된 것을 통해 보다 자세히 알 수 있을 겁니다.

    ——————————-

    근데 알려드린 것처럼 안하고 위에 예시로 보여준 것처럼 해도

    결과는 동일하고 코드에서도 별로 차이가 없을 것 같은데 굳이 MEAN 함수를 사용하시려는 이유가 있나요?

    답변: image 그릴 때 log scale 표현 방법 #5233
    mwkim
    회원

    안녕하세요, 올려주신 내용은 봤을 때, 축을 로그스케일로 바꿔서 그리고자 하시는 것 같습니다.

    IMAGE 함수 사용 시, 사용하신 것처럼 x, y 좌표를 입력할 수 있기 때문에

    로그스케일로 표기하고자 하는 축에 좌표의 로그 값을 넣어주면 될 것 같습니다.

    대신 축 서식을 로그 스케일에 맞게 설정해야합니다.
    (IMAGE 함수의 [XYZ]LOG 옵션 조정, 도움말 참조)

    아래 예제를 해보시면 이해하실 수 있을 것 같습니다.

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

    data = HANNING(100,100) + RANDOMN(seed,100,100) * 0.2
    x = FINDGEN(100) + 1
    y = FINDGEN(100) + 1 ; 로그스케일로 변환할 걸 고려해서 1을 더했습니다.

    img = IMAGE(data,x,y,MARGIN=0.05,RGB_TABLE=13,AXIS_STYLE=2) ; 원 자료 표출
    imgLog = IMAGE(data,x,ALOG10(y),MARGIN=0.05,RGB_TABLE=13,AXIS_STYLE=2,ASPECT_RATIO=0,YLOG=1) ; 로그스케일 표출

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

    답변: FOR함수를 간단하게 하는 방법 #5226
    mwkim
    회원

    내용을 봐서는 a와 b라는 변수에 대해 timeo라는 시간 정보를 통해

    월별 평균을 구해 o3, pm10 이라는 변수로 저장하고자 하시는 것 같습니다.

    우선 올려주신 내용에서 몇 가지 조언(?)이나 질문을 드리면 다음과 같습니다.

    ——————————–
    1. 변수명
    o3나 pm10 평균 변수를 저장할 때, 굳이 이유가 없다면 o3mean1, o3mean2, … , o3mean12 로 만드시기보단
    o3mean 이라는 변수로 통합하고 해당 변수에 월별 저장을 위한 차원을 하나 더 두시는게 편합니다.
    ——————————–
    2. 반복 수행 시 차원 설정
    아마 아래 시도하신 반복문이 o3mean으로 통합하여 수행하시려고 시도한 것 같은데,
    이 경우 o3mean은 2차원으로 설정되어야 하며, 그렇지 않은 경우 제대로 안 될 것 같습니다.
    (아마 아래 코드는 i번째 차원 저장이 안 될 겁니다.)
    에러가 발생했다고 하셨는데 어떤 에러지 올려주시면 도움이 될지도…
    ——————————–
    3. WHERE 함수의 사용
    사용하실 때, 월별마다 하나의 자료가 반드시 있다면 문제가 없지만
    그렇지 않다면 IDL 버전에 따라 문제가 생길수도 있습니다.
    따라서 WHERE함수의 /NULL 옵션을 사용하거나 count를 통해 있는지 확인해야 합니다.
    ——————————–
    4. MEAN 함수의 사용
    아마도 a, b 자료는 2차원 자료로 생각되는데, 원하는 차원에 대해서만 평균할 때는
    DIMENSION 키워드를 사용하시면 됩니다.
    (자세한건 도움말 참조)
    ——————————–

    전체적으로 자료의 처리 방식에 대해서는 이해하고 계신듯하나,

    프로그램을 만드는 부분에 대해서는 조금 더 연습하시면 좋을 것 같습니다.

    아래는 제가 올려주신 코드를 기반으로 임의의 자료 생성해서 테스트한 코드입니다. 참고하세요.
    (정확한 목적은 몰라서 대충 파악한 의도만 반영)

    ——————————–

    PRO MONTHLY_MEAN

    dataLen = 50
    timeLen = 100
    time = CEIL(RANDOMU(seed,timeLen) * 12) ; timeo와 동일한 역할
    ; data = RANDOMU(seed,dataLen,timeLen) ; 완전 랜덤, a, b 자료와 동일한 역할
    data = RANDOMU(seed,dataLen,timeLen) + (FLTARR(dataLen,1)+1) # time ; 시간 경향 추가

    dataMonthMean = FLTARR(dataLen,12) ; o3mean, pm10mean 과 동일한 역할

    FOR iMonth = 0, 11 DO BEGIN
    idx = WHERE(time EQ iMonth+1,count)
    CASE count OF
    0:
    1: dataMonthMean[*,iMonth] = MEAN(data[*,idx],/NAN)
    ELSE: dataMonthMean[*,iMonth] = MEAN(data[*,idx],DIMENSION=2,/NAN)
    ENDCASE
    ENDFOR

    img1 = IMAGE(data,MARGIN=0,LAYOUT=[2,1,1]) ; 표출 확인
    img2 = IMAGE(dataMonthMean,MARGIN=0,LAYOUT=[2,1,2],/CURRENT) ; 표출 확인

    END

    답변: Window cmd에서 idl 배치 실행 #5211
    mwkim
    회원

    안녕하세요,

    관련 내용만 가지고는 정확하게 파악하기는 어렵지만

    경로상의 문제가 아닐까 하는 추측은 해봅니다.

    일단 저 프로시저에서 정의되지 않았다는 것이 변수인지 아니면 프로시저나 함수인지요?

    프로시저나 함수라면 cmd에서 수행될 때,

    컴파일되는 목록에 포함되어있는지 확인이 필요할 것 같습니다.

    컴파일 목록에 빠져있으면 해당 프로시저나 함수를 찾지 못해 발생하는 오류인데 많은 경우에 경로의 문제로 발생됩니다.

    만약 정의되지 않은 것이 변수라면, 커맨드 창에서 실행할 때만 값이 들어오지 않는 다는 것인데…

    이 부분은 해당 변수의 정의에 필요한 값을 확인해나가면서 찾아가는 방법밖에 없을 것 같습니다.
    (확인할 때는 HELP 명령어를 통해 확인하면 수월합니다.)

    답변: plot 축 자동눈금이 안나와요 #5201
    mwkim
    회원

    안녕하세요.

    현재 올려주신 내용만으로는 어떤 문제가 있는지 파악하지 어려울 것 같습니다.

    예전에 올려주신 질문에도 언급드렸지만

    1. 어떤 상황에서 해당 오류가 발생했는지 알려주시고,
    대략 어떤 함수를 사용했을 때 해당 오류가 발생했는지 알려주시면 됩니다.
    간단하게 해당 오류를 재현할 수 있는 예제 코드를 올려주시면 더 도움이 될 것도 같습니다.

    2. 사용하신 IDL 버전과 사용환경(OS등)을 알려주세요.
    기본적으로는 IDL 최신버전에 대해서 확인하는데
    경우에 따라서는 사용하신 버전과 환경에서만 발생하는 버그일 수도 있어서 해당 정보가 필요합니다.

    3. 에러 메세지 전체도 같이 올려주시면 도움이 됩니다.

    답변: MAP 함수 관련 문의 #5200
    mwkim
    회원

    안녕하세요.

    올려주신 코드를 참조로 확인했을 때,

    MAPGRID의 CLIP 속성을 변경함으로써 해결이 가능합니다.
    (자세한 부분은 IDL 도움말 참조)

    위 코드의 MAP 함수 사용 부분에서 CLIP=0 만 추가하시면 됩니다.

    sb = 30 &wb = 120 &nb = 42 &eb = 132
    dimension = [850, 900]
    m = MAP(‘Lambert Conformal Conic’, LIMIT = [sb,wb,nb,eb], $
    DIM = dimension, ASPECT_RATIO = 0, $
    LINESTYLE = “dotted”, LABEL_POSITION = 0, FONT_SIZE = 14, LABEL_ANGLE = 0, $
    STANDARD_PAR1 = 30, STANDARD_PAR2 = 60,$
    CENTER_LONGITUDE = 126, CENTER_LATITUDE = 39, $
    MARGIN = 0.1, CLIP=0)

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