- This topic has 4개 답변, 2명 참여, and was last updated 6 years, 5 months 전에 by levanter0401.
-
글쓴이글
-
-
안녕하세요.
IDL 8.5.1에서 NG 체계로 아시아 지역의 기압 패턴과 바람 벡터 이미지를 그리고자 하는데요,
기압 패턴의 공간 분포는 잘 그려지지만 벡터를 그리는데 문제가 생겨 문의를 드립니다.이미지 표출을 위해 사용되는 변수는 위도(LAT), 경도(LON), 동서방향의 바람(UGRD), 남북방향의 바람(VGRD),
기압관련변수(HGT)로, 2차원의 배열로 구성되어있으며 각 변수의 구조는 아래와 같습니다.LAT : FLOAT = Array[360,181]
LON : FLOAT = Array[360,181]
UGRD : DOUBLE = Array[360,181]
VGRD : DOUBLE = Array[360,181]
HGT : FLOAT = Array[360,181]그림을 그리기 위해 작성했던 설정은 다음과 같습니다.
limit = [23, 105, 50, 147]
m = MAP(‘Mercator’, LIMIT=limit, POSITION=[0.1,0.1,0.8,0.9]
grid = m.MAPGRID
grid.GRID_LATITUDE = 2
grid.LABEL_POSITION = 0
grid.LINESTYLE = 1
grid.FONT_SIZE = 11ct = COLORTABLE(72)
C_VALUE = [1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470]
C_COLOR = [5 , 15, 20, 25, 30, 35, 40, 45, 50, 70, 90, 110, 120, 130, 165, 190]
LABEL_COLOR = [0, 2, 4, 6, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]c = CONTOUR(hgt, LON, LAT, C_VALUE=c_value, C_COLOR=c_color, LABEL_COLOR=label_color, /FILL, OVERPLOT=m, GRID_UNITS=’degrees’, RGB_TABLE=ct, TITLE=’gph_850hPa’)
shp_file = ‘./GSHHS_i_L1.shp’
mapc = MAPCONTINENTS(shp_file)vec = vector(ugrd, vgrd, lat, lon, /OVERPLOT) ; —– 문제 발생 부분
2차원의 성분 자료(ugrd, vgrd)를 이용하여 원하는 위경도 위치에 바람을 그리려면 어떻게 적용해야 할까요?
(* 참고, ugrd의 경우 +일때 동풍, vgrd의 경우 +일때 북풍입니다) -
Sangwoo회원
VECTOR 함수를 사용할 때 다음과 같이 4개의 인자들이 사용될 경우가 일반적인데요.
graphic = VECTOR(U, V, X, Y, ~~~)
IDL 도움말에 설명된 내용을 토대로 한다면, 언급하신 예제에서 U, V 각각 2차원 배열이므로 X, Y 각각은 1차원 배열이 되어야 합니다. 즉 이 예제에서 X는 360개의 경도값들로만 구성된 1차원 배열이어야 하고, Y는 181개의 위도값들로만 구성된 1차원 배열이어야 합니다. 이렇게 주어져야 VECTOR 함수가 정상적으로 작동하게 됩니다.
-
빠른 답변과 도움에 진심으로 감사드립니다~^^
알려주신 정보를 바탕으로 벡터 이미지를 그렸는데요, 그 과정에 궁금한 내용이 생겨서 추가 문의를 드립니다.
1. 벡터를 그릴때 원 자료를 삭제(0 변경)하지 않고, 몇 칸 간격으로 벡터를 그리도록 interval을
줄 수 있을지요?2. 기상 또는 대기질 모델의 전처리 프로그램에서 산출된 LAT, LON 정보는
지도 투영법(ex. lambert conformal)에 따라 2차원의 정보를 가지고 있는데요,
이러한 2차원의 LAT, LON 정보를 이용하여 벡터를 그려줄 수 있을까요? -
Sangwoo회원
1. VECTOR 함수에서 지원되는 키워드들 중 X_SAMPLE, Y_SAMPLE을 활용하면 될 것 같습니다. 물론 이게 엄밀히 말하면 생략이라기보단 샘플링 기법에 해당되기 때문에, 원하시는 방향과 정확히 일치하지 않을 수도 있겠지만 한번 시도해보시길 권장합니다.
2. 그런 경우에는 VECTOR 함수에 투입될 u, v, x, y 각각을 모두 1차원 배열화하면 됩니다. 올려주신 예제의 내용을 기반으로 한다면 lat1 = REFORM(lat)과 같이 처리하면 원래의 lat은 360×181인 2차원 배열이지만 lat1은 360×181=65160개인 1차원 배열의 형태가 됩니다. 나머지 lon, ugrd, vgrd 역시 같은 방식으로 변환하여 투입하면 됩니다.
-
덕분에 궁금한 점이 해결되었습니다.
감사합니다!!! ^^
-
-
글쓴이글