Sentinel2로 위성 이미지 타일 만들기 (1) 위성 이미지 다운로드편

나는 Sentinel2의 위성 이미지로 위성 이미지 타일을 만들어 보았기 때문에 몇 번으로 나누어 썼다.
우선 이 글은 위성 이미지를 얻은 파이썬 라이브러리sentinelsat에 대해 설명할 것이다.
  • sentinelsat로 위성 이미지를 다운로드해 보세요.
  • sentinelsat 조건에 부합되는 위성 이미지를 조회하는 방법을 얻습니다.
  • sentinelsat로 위성 이미지 다운로드


    1. Copernicus Open Access Hub를 사용하여 사용자 등록


    우선, 위성 이미지를 다운로드하기 위해 Copernicus Open Access Hub를 방문하여 사용자 등록을 합니다.사용자 등록을 하려면 "Sign up"을 클릭하십시오.
    https://scihub.copernicus.eu/dhus/#/home
    sentinelsat 사용자 이름과 비밀번호를 지정하여 위성 이미지를 다운로드합니다. 잊지 마십시오.

    Sentinel2 플랫폼 정보


    참고로 Sentinel2 이미지를 다운로드할 수 있는 플랫폼이 많은데esa 운영하는 플랫폼은'Copernicus Open Access Hub'입니다.
    "Sentinel Hub"등 민영기업이 운영하는 유사한 플랫폼이 있기 때문에 틀리지 않도록 주의하세요.

    2.sentinelsat 위성 이미지 다운로드


    위성 이미지를 다운로드하는 데 필요한 라이브러리를 설치하다.
    $ pip install sentinelsat
    $ pip install matplotlib
    $ pip install shapely
    
    main.py를 만들고 필요한 라이브러리를 가져오십시오.
    # manin.py
    import os
    from sentinelsat import SentinelAPI, read_geojson, geojson_to_wkt 
    import matplotlib.pyplot as plt
    from shapely.geometry import MultiPolygon, Polygon
    

    2.1. 위성 이미지를 가져올 GeoJSON 만들기


    위성 이미지를 가져올 범위의 위도 경도를 가져와 GeoJSON을 만듭니다.
    귄 주립 대학에서 공개한 도구로 위도 경도를 얻다.
    https://www.keene.edu/campus/maps/tool/

    GeoJSON을 생성합니다.
    # manin.py
    # 衛星画像取得する範囲を指定
    AREA =  [
      [
        139.0240751,
        36.1879383
      ],
      [
        139.0570341,
        34.7880413
      ],
      [
        140.8093534,
        34.8060848
      ],
      [
        140.8642851,
        36.1591156
      ],
      [
        139.0240751,
        36.1879383
      ]
    ]
    
    from geojson import Polygon
    m=Polygon([AREA])
    
    # GeoJSON ファイルを出力
    object_name = 'Tokyo_Bay'
    import json
    with open(str(object_name) +'.geojson', 'w') as f:
        json.dump(m, f)
    footprint_geojson = geojson_to_wkt(read_geojson(str(object_name) +'.geojson'))
    

    2.2. 위성 이미지 다운로드

    SentinelAPI.query에 지정된 매개 변수로 위성 이미지를 다운로드할 수 있습니다.
    # manin.py
    # Copernicus Open Access Hub のユーザー情報を設定
    user = '自分のユーザー名を貼り付け' 
    password = '自分のパスワードを貼り付け' 
    api = SentinelAPI(user, password, 'https://scihub.copernicus.eu/dhus')
    
    # 衛星画像を取得する条件を指定
    products = api.query(footprint_geojson,
                         date = ('20200608', '20210608'), #取得希望期間の入力
                         platformname = 'Sentinel-2',
                         processinglevel = 'Level-2A', 
                         cloudcoverpercentage = (0,100)) #被雲率(0%〜100%)
    
    # 衛星画像のメタデータ
    product = list(products.values())[0]
    
    # ダウンロード
    api.download(product['uuid'])
    
    위의 코드를 main.py에 추가하고 터미널에서 다음 작업을 수행하면 다운로드가 시작됩니다.
    $ python main.py
    

    질의 지정 방법


    질의를 작성하려면 SentinelAPI.query 에서 조건을 지정할 수 있습니다.

    매개 변수


  • date: 검색 기간
  • yyyyMMdd
  • yyyy-MM-ddThh:mm:ss.SSSZ (ISO-8601)
  • yyyy-MM-ddThh:mm:ssZ
  • NOW
  • NOW-<n>DAY(S) (or HOUR(S), MONTH(S), etc.)
  • NOW+<n>DAY(S)
  • yyyy-MM-ddThh:mm:ssZ-<n>DAY(S)
  • NOW/DAY (or HOUR, MONTH etc.)
  • order_by
  • limit
  • 또한 다음 문서의 키워드 매개변수로도 사용할 수 있습니다.
  • platformname: 위성 이름
  • platformname:Sentinel-1
  • platformname:Sentinel-2
  • platformname:Sentinel-3
  • platformname:Sentinel-5 Precursor
  • 구름 덮어쓰기 (0%~100%)
  • cloudcoverpercentage:95
  • cloudcoverpercentage:[0 TO 5]
  • 처리 수준: 위성 영상 처리 수준
  • Level-1C
  • Level-2A
  • 자세한 내용은 공식 문서를 참조하십시오.
    https://sentinelsat.readthedocs.io/en/stable/api_reference.html#sentinelsat.sentinel.SentinelAPI.query

    processinglevel


    쿼리 매개변수에는 processinglevel 가 있습니다.귀에 익은 단어지만 위성 영상의 처리 수준이다.
    이번에'레벨-2A'를 지정했습니다.
    여기서 획득한 Sentinel-2의 제품 등급은 L1-2A를 요구합니다.
    이것은 위성 영상의 대위가 끝난 후의 L-1C 수준에서 대기의 파동(moya)을 수정한 영상이다.
    API를 사용하여 인공위성(Sentinel-2)의 관측 이미지를 자동으로 가져옵니다. - Qiita 참조
    자세한 내용은 위성 이미지의 처리 수준을 알고 싶으면 아래를 참고하십시오.

    총결산


    이번에는 위성 이미지를 다운로드해 보았다.또한 속편으로 지정된 기간 동안 구름이 가장 적은 이미지를 얻는 방법과 다운로드한 이미지를 타일로 바꾸는 방법을 쓰고 싶습니다.

    참고 자료

    좋은 웹페이지 즐겨찾기