ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Google Earth Engine] GEE python 코드를 사용하여 원하는 위치, 월 영상 추출하기
    GEE 2024. 7. 15. 17:40

    Google Earth Engine  페이지에서 코드 스크립트를 짤 때 JavaScript 언어를 사용해야한다. 

     

    하지만 GEE 페이지 외에도 구글 코랩에서도 GEE를 사용할 수 있으며, 파이썬으로도 가능하다. 

     

    오늘은 코랩에서 파이썬을 사용하여 GEE를 사용하는 법과 원하는 위성영상을 추출하는 방법에 대해 소개하고자 한다. 

     

    먼저 오늘 코드를 알려드리기 전, 몇 가지 경험을 통해 깨달은 점을 말하고자 한다. 

    GEE code editor와 코랩에서 파이썬으로 써본 결과 각각의 장점과 단점이 존재하는데 

     

    GEE 자체 페이지 사용 -> 위성영상 다운로드 받기 편하고 좋다 

    colab 사용 -> 여러 개의 이미지를 한 페이지에 시각화해서 위성영상 비교가 용이하다  

     

    그래서 추천하는 방식은 colab에서 원하는 위성영상을 몇 가지 미리 테스트로 시각화한 다음에 영상을 다운받을 때는 GEE 자체 페이지에서 받는 것을 추천한다...! 

     

    참고로 주피터 노트북에서도 아래 GEE 코드를 써서 해봤는데 돌아는 간다. 하지만 colab보다 오래걸리고 과부하가 오는 듯 싶다. 만약 파이썬을 사용하고 싶다면 colab을 사용해야한다. 

    역시 google끼리 같은거 사용하는게 좋나보다... 즉, 파이썬으로 하고 싶다면 colab 사용을 적극 추천한다. 


    1. Google Colab에서 Google Earth Engine(GEE)을 사용하기 위한 초기 설정 과정

     

    코랩에서 GEE를 돌릴려면 먼저 초기 설정이 필요하다. 

     

    # 권한 요청 
    ee.Authenticate()
    
    # 내 프로젝트 불러오기
    ee.Initialize(project='your_project')
    
    # 라이브러리 불러오기
    import ee
    import geemap

     

    이번에는 장보고 기지 부근의 영상을 추출해보고자 한다. 

     

    그러기 위해서 장보고 기지의 경위도 좌표를 넣어줘야 한다. 나는 이 위치에서 200km 반경 내의 버퍼를 생성하여 이 200km를 포함하는 위성영상을 추출할 예정이다. 

     

    2. 장보고 기지 위치 정의 후 영상 추출 

     

    1. 내가 원하는 위치 정의 

    2. 어떤 위성영상을 사용할지 정의

    3. 날짜 필터링 

     

    + 참고로 구름의 양 가지고도 필터링이 가능하다. 

    여기에서는 그냥 날짜만으로 필터링을 했다. 

     

    # 장보고기지 영역 정의
    jangbogo = ee.Geometry.Point(164.2288, -74.6239)
    
    # 200km 반경 내 원 생성
    jangbogo_200km_buffer = jangbogo.buffer(distance = 200000)  # 200km 이내의 반경
    
    # Sentinel-2 위성 이미지 업로드
    sentinel2 = ee.ImageCollection("COPERNICUS/S2")
    
    # 날짜로 영상 필터링
    filtered = sentinel2.filterBounds(jangbogo).filterDate('2023-01-01', '2023-12-31')
    
    # 필터링된 이미지 수 확인
    image_count = filtered.size()
    print('Number of images:', image_count.getInfo())

     

    3. 지도 시각화 

     

    지도 시각화는 geemap을 활용하여 가능하다. 

     

    일단 지도 시각화를 위해서 band를 지정해줄 수 있다. 밴드의 min, max를 각각 지정하면 된다. 

    이 값을 지정하는 꿀팁은... 사실 나는 다시 GEE code 스크립트 창으로 가서 값의 stretch를 보고 대충 해봤다. 이 부분이 아마 가장 여러번 스스로 해봐야하는 부분이 아닌가싶다. 

     

    # 장보고에서 200km 떨어진 곳에 포함되는 모든 위성영상 시각화
    # true color로 시각화
    true_color_visualization = {
        'bands': ['B4', 'B3', 'B2'],  # True color bands: Red, Green, Blue
        'min': 3400,
        'max': 10000
    }
    
    # 시각화 조건 부여
    m = geemap.Map()
    m.centerObject(filtered_200, 5)  # zoom to 장보고에서 200km 떨어진 곳
    m.add_layer(filtered_200, true_color_visualization, 'jangbogo_nearby_images') # 장보고 위치에서 200km 떨어진 위성영상들 표시
    m.add_layer(jangbogo_200km_buffer, {'color': 'red', 'opacity': 0.3}, 'jangbogo_200km_buffer') # 장보고에서 200km 버퍼 빨간색 큰 원으로 표시
    m.add_layer(jangbogo, {'color': 'red'}, 'jangbogo') # 장보고 위치 빨간색으로 표시
    m

     

    이 3과정만 거치면 GEE에서 내가 원하는 위치에 대한 위성영상을 시각화할 수 있다. 

     

    GEE code editor를 통해서 하는건 많이 봤어도 colab으로 파이썬을 사용해 영상을 시각화하는 거는 별로 없는 것 같아 조금이라도 도움이 되길 바라며 올린다. 

Designed by Tistory.