jsh4887

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

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • 답변: 데이터 읽는 방법에 관한 문제 #2829
    jsh4887
    회원

    답변 감사합니다~

    일단 헤더부분에 대해서는 현재 처리를 한 상태이구요

    이건 좀 다른 질문이긴 한데

    혹시 저 위의 데이터

    13 6 16 2 1 30.0000000 0 8G14G22G31G32G29G25G12G24
    76.9524 0 L1L2C1P2 11.18 207.92
    99.7028 0 L1L2C1P2 76.72 210.32
    79.7613 0 L1L2C1P2 45.95 290.19
    101.0117 0 L1L2C1P2 70.14 309.43
    102.8105 0 L1L2C1P2 59.85 141.03
    102.8003 0 L1L2C1P2 18.89 59.01
    82.8734 0 L1L2C1P2 58.20 50.18

    이 부분을

    76.9524 0 11.18 207.92 G14 2 1 30.0000000
    99.7028 0 76.72 210.32 G22 2 1 30.0000000
    79.7613 0 45.95 290.19 G31 2 1 30.0000000
    101.0117 0 70.14 309.43 G32 2 1 30.0000000
    102.8105 0 59.85 141.03 G29 2 1 30.0000000
    102.8003 0 18.89 59.01 G12 2 1 30.0000000
    82.8734 0 58.20 50.18 G24 2 1 30.0000000

    이런식으로 바꿀수 있을까요? L1L2C1P2 없애는 부분까지는 했고 8G14G22G31G32G29G25G12G24이 부분도 strsplit을 통해서 쪼개는 것까지 하였는데 저와 같은 형식으로 만들지는 못하겠더라구요..

    저게 8G14G22G31G32G29G25G12G24이 부분에서 제일 앞의 숫자인 8이 한 시간안의 데이터 수를 나타내는데 1200개 가량되는 데이터 중에 한 시간 안에 8개의 데이터가 있을 수도 있고 10개의 데이터가 있을 수도 있고 이런 식으로 불규칙적이여서 어찌해야할지 잘 모르겠습니다ㅜㅜ

    많으 도움 주시길 바랍니다..ㅜㅜ

    답변: grid interpolation 관련 질문 #2800
    jsh4887
    회원

    제가 실험을 좀 해봤는데요..

    저기 index를 안쓰니깐 값이 똑같이 나오더라구요..

    즉.. 제가 임의로 정해놓은 지역 내에서만 interpolation을 하고 싶었는데..

    그래서 그 지역을 지정하기 위해 inside란 함수를 썼는데 저 함수를 안쓰고 trigrid를 쓰니 값이 똑같이 나오더라구요..

    저게 961개의 1차원 배열에서 inside를 쓸 경우 나머지는 nan이 되고 96개정도만 남아서 혹시 data가 너무 적어서 interpolation 되는 과정에서 값이 변한게 아닌가 싶은데요..

    제가 하는 방법이 틀린건가요.. 아님 코드가 틀린건가요..

    답변: grid interpolation 관련 질문 #2795
    jsh4887
    회원

    일단 제가 짠 코드을 올려드리겠습니다.

    i = 0
    path = ‘C:\Users\SSL\Desktop\Student\Nick’
    readcol, path+’\CIT data\’+year[i]+’_dTEC_CIT_’+doy[i]+’_’+ut[i]+’UT_before30min_after30min.txt’,$
    format='(f,f,f)’,lon_cit,lat_cit,dtec_cit, /silent, skipline=1

    위와 같이 readcol을 통해 data를 불러왔구요..
    data형식은
    lon_cit lat_cit dtec_cit
    120 20 0.1
    120 21 0.5
    120 22 0.3

    이런식으로 해서 961개의 값들로 이루어진 data입니다.
    lat = indgen(301)/float(10) + float(20)
    lon = indgen(301)/float(10) + float(120)

    lonx = [128,138,140,146,142,130,128]
    laty = [34,38,46,44,35,31,34]

    lat_interpol = fltarr(float(301)*float(301))
    lon_interpol = fltarr(float(301)*float(301))

    for ii = 0, 300 do begin
    for jj =0, 300 do begin
    lon_interpol[float(301)*ii+jj] = 120 + 0.1* ii
    lat_interpol[float(301)*ii+jj] = 20 + 0.1* jj
    endfor
    endfor

    index = where( inside(lon_cit, lat_cit, lonx, laty) eq 0 )

    dtec_cit_div = dtec_cit/10
    dtec_cit_div[index] = !Values.F_nan

    TRIANGULATE, lon_cit, lat_cit, tr
    grid = trigrid(lon_cit, lat_cit, dtec_cit_div, tr, [0.1,0.1], [120,20,150,50])

    new_data = fltarr(3,float(301)*float(301))
    new_data[0,*] = lon_interpol
    new_data[1,*] = lat_interpol
    new_data[2,*] = grid

    end

    위와 같이 코드를 짯는데요.. 저는 data값이 많이 다르게 나옵니다.
    현재 다르게 보이는 점은 저는 1차원 배열을 썻을뿐이고.. 작성해주신분은 2차원배열을 썻다는 것밖에 다른점을 못느끼겠습니다.. 혹시 제가 코드를 잘못짠것인가요..?

    답변: grid interpolation 관련 질문 #2787
    jsh4887
    회원

    답변 감사합니다~

    근데 또 한가지 문제가 생겨 글을 남기게 되었습니다.

    위와 같이 코드를 짰는데요..

    혹시 trigrid를 쓰면서 데이터 값이 변형될수도 있는건가요?

    그러니깐 원래 1도간격의 데이터가 0.1도로 바뀌면서 1도에 위치한 데이터의 값은 바뀌면 안되는거잖아요..

    근데 제가 짠 코드는 데이터값도 바뀌고.. 심지어 사라지고 nan값이 위치한 곳에 데이터값이 나오기도 합니다..

    lon_cit = float(961)을 가진 데이터구요 나머지 lat_cit와 dtec_cit_div 모두 같은 값을 가지고 있습니다.

    그래서 혹시 nan값을 가지고 있어서 그런가 싶어 계산을 해보았으나.. 갯수만 다르게 나올뿐 값은 모두 똑같이 나오더라구요..

    왜 그런것일까요..

    제가 짠 코드입니다.

    index = where( inside(lon_cit, lat_cit, lonx, laty) eq 0 ) ; 이 영역을 만들어서 영역 안의 포인트들을 제외하고 나머지는 nan을 만들어서 trigrid를 진행하였습니다.

    TRIANGULATE, lon_cit, lat_cit, tr
    grid = trigrid(lon_cit, lat_cit, dtec_cit_div, tr, [0.1,0.1], [120,20,150,50])

    • 이 답변은 jsh4887에 의해 8 years 전에 수정됐습니다.
    • 이 답변은 jsh4887에 의해 8 years 전에 수정됐습니다.
    답변: contour 관련 문의입니다. #2724
    jsh4887
    회원

    말씀 안드린게 있는데.. contour 과정에서 cell_fill을 했을 때의 interpolation 기법을 알고 싶습니다..

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