Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyCon JP 2025 DAY1 「Hello, satellite data! ~Pyt...

PyCon JP 2025 DAY1 「Hello, satellite data! ~Pythonではじめる衛星データ解析~」

PyCon JP 2025 DAY1にて発表した「Hello, satellite data! ~Pythonではじめる衛星データ解析~」の資料です。
デモは、以下のGoogle Colabから実行できます。
https://colab.research.google.com/drive/1B9Zw_mGelx8ouRPhcMm4ZfHcTWE4GPXv?usp=sharing

Avatar for ぴっかりん

ぴっかりん

September 26, 2025
Tweet

More Decks by ぴっかりん

Other Decks in Technology

Transcript

  1. PyConJP 2025 はじめに • 本発表は、所属会社で行っていることではなく、 個人の立場でのものです • デモは、以下のリンクからGoogle Colab上で 実行することが可能です

    https://colab.research.google.com/drive/1B9Zw_mGelx 8ouRPhcMm4ZfHcTWE4GPXv?usp=sharing • X(旧Twitter)を見ていることが多いので、ぜひ #pyconjp_2 を付けて感想をポストして頂けると嬉しいです! 2
  2. PyConJP 2025 1. 自己紹介 • 出身: 静岡県東部 • 趣味: 地理空間情報と戯れる、ラジオを聴く、散歩、旅行...

    • 推し: 鬼頭明里さん(声優)、すそのん(静岡県裾野市ゆるキャラ) • 活動: PLATEAU ADVOCATE 2025、 OSGeo.JP 運営委員、 SatAI.Challenge 運営メンバ ←「ぴっかりん」という名前でSNS等に 生息してます 6
  3. PyConJP 2025 1. 自己紹介 私のPyCon参加歴 PyConJP 2021(オンライン) PyConJP 2022(オンサイト) PyCon

    APAC 2023(オンサイト) 8 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成
  4. PyConJP 2025 1. 自己紹介 私のPyCon参加歴 PyConJP 2021(オンライン) PyConJP 2022(オンサイト) PyCon

    APAC 2023(オンサイト) PyCon mini Shizuoka 2024 continue (オンサイト・発表) 9 「国土数値情報(行政区域データ)」(国土交通省)を加工して作成
  5. PyConJP 2025 そもそも人工衛星って? 人工衛星とは? 定常的に惑星の周りを周回している人工物のこと 例) ✓ 気象衛星「ひまわり」 ✓ 測位システム「GPS」、「みちびき」

    探査機とはどう違う? 小惑星のサンプルリターンに成功した「はやぶさ」などは、人工衛星では なく、「探査機」に分類 → 定常的に惑星の周りを周回していないため 18
  6. PyConJP 2025 人工衛星の主な種類 19 種類 地球観測 測位 通信・放送 目的 時々刻々と変化する地球環境

    などの長期的な観測 位置情報の計測に必要な 信号の送信 無線通信の中継や放送 用途 天気予報、災害時の状況 把握、農業モニタリングなど スマホやカーナビなどの 位置情報など 衛星放送、船舶や航空機の通 信、携帯電話との通信など © 国土地理院
  7. PyConJP 2025 人工衛星の主な種類 20 種類 地球観測 測位 通信・放送 目的 時々刻々と変化する地球環境

    の長期的な観測 位置情報の計測に必要な 信号の送信 無線通信の中継や放送 用途 天気予報、災害時の状況 把握、農業モニタリングなど スマホやカーナビなどの 位置情報など 衛星方法、船舶や航空機の通 信、携帯電話との通信など © 国土地理院 このトークで扱うのは、「地球観測」の衛星
  8. PyConJP 2025 地球観測衛星の主な種類 21 種類 光学 SAR(合成開口レーダー) 定義? 地表などで反射した太陽光をセンサで 受け取って観測

    衛星が自ら照射した電波の反射波を 受信し観測 強み 視覚的に分かりやすく地上の様子が 分かる よほどの大雨でない限り、雲が被って いたり夜間でも観測可能 弱み 雲や霧などが被っている場合や、夜は 観測できない 解釈や解析には専門的な知識が必要
  9. PyConJP 2025 地球観測衛星の主な種類 23 種類 光学 SAR(合成開口レーダー) 定義? 地表などで反射した太陽光をセンサで 受け取って観測

    衛星が自ら照射した電波の反射波を 受信し観測 強み 視覚的に分かりやすく地上の様子が 分かる よほどの大雨でない限り、雲が被って いたり夜間でも観測可能 弱み 雲や霧などが被っている場合や、夜は 観測できない 解釈や解析には専門的な知識が必要 このトークで扱うのは、「光学」衛星
  10. PyConJP 2025 STAC APIを用いて衛星データを検索しよう 以下の条件に合う衛星データを探していきます 条件 検索開始日: 2025/08/01 検索終了日: 2025/09/15

    画像が欲しい場所: 広島国際会議場(PyConJP 2025会場) 周辺 使用する衛星: Sentinel-2 → ヨーロッパが運用している衛星で、無料でデータが入手可能 雲量: 10%未満 → 衛星が撮影した画像全体のうち、雲の割合が10%未満 33
  11. PyConJP 2025 STAC APIを用いて衛星データを検索しよう コード 34 # 衛星データの検索 search_result =

    leafmap.stac_search( url= “https://planetarycomputer.microsoft.com/api/stac/v1”, # STAC API bbox=[132.35, 34.25, 132.55, 34.55], # 地理的な範囲 datetime="2025-08-01/2025-09-15", # 検索開始日と終了日 collections=["sentinel-2-l2a"], # Sentinel-2を指定 query={"eo:cloud_cover": {"lt": 10}} # 雲量10%未満 ) # 検索結果を、リストに変換 items = list(search_result.items()) print(f"{len(items)}件の衛星データが見つかりました。") # 検索結果をDataFrame(表形式)で表示 # 列として、撮影日時、ID、雲量を設定 gdf = leafmap.stac_search_to_gdf(search_result) print(gdf[['datetime', 's2:granule_id', 'eo:cloud_cover']])
  12. PyConJP 2025 検索で見つかった衛星データを表示してみよう True Color表示のコード(assets引数が重要) 40 # 地図上にTrue Color合成画像の表示 m

    = leafmap.Map() # 地図の中心を広島国際会議場周辺に設定、13は地図をどのくらい拡大するか m.set_center(132.45094, 34.39217, 13) m.add_stac_layer( collection=collection, item=item.id, # Sentinel-2衛星データのTrue Color合成なので、B04(赤)、B03(緑)、B02(青)を設定 assets=["B04", "B03", "B02"], name="Sentinel-2 True Color", rescale="1000,4000", attribution="Contains modified Copernicus Sentinel data (2025), processed via Microsoft Planetary Computer.", fit_bounds=False ) m
  13. PyConJP 2025 検索で見つかった衛星データを表示してみよう False Color表示のコード(assets引数に注目) 44 # 地図上にFalse Color合成画像の表示 m

    = leafmap.Map() # 地図の中心を広島国際会議場周辺に設定、13は地図をどのくらい拡大するか m.set_center(132.45094, 34.39217, 13) m.add_stac_layer( collection=collection, item=item.id, # Sentinel-2衛星データのTrue Color合成なので、B08(近赤外)、B04(赤)、B03(緑)を 設定 assets=["B08", "B04", "B03"], name="Sentinel-2 False Color", rescale="1000,5000", attribution="Contains modified Copernicus Sentinel data (2025), processed via Microsoft Planetary Computer.", fit_bounds=False ) m
  14. PyConJP 2025 NDVI(正規化植生指標)の算出 植物の葉が、近赤外の光を強く反射し、赤の光を吸収しやすい という特徴から、以下の数式を用いて-1~+1で算出 NDVI = 近赤外 − 赤

    近赤外 + 赤 今回、使用しているSentinel-2衛星のバンド番号で示すと、 近赤外=B08、赤=B04なので、以下のようになる NDVI = 近赤外 − 赤 近赤外 + 赤 = B08 − B04 B08 + B04 49
  15. PyConJP 2025 NDVI(正規化植生指標)の算出 コード(expression引数に注目) 50 # 地図上にFalse Color合成画像の表示 m =

    leafmap.Map() m.set_center(132.45094, 34.39217, 13) # NDVIを計算し、地図上に表示 m.add_stac_layer( collection=collection, item=item.id, # `expression`にNDVIを計算する引数を設定 expression="(B08-B04)/(B08+B04)", rescale="-1,1", fit_bounds=False, attribution="Contains modified Copernicus Sentinel data (2025), processed via Microsoft Planetary Computer.", name="NDVI", colormap_name="rdylgn" ) m
  16. PyConJP 2025 宣伝 今回、用いたPythonライブラリであるleafmapのような 地理空間情報を扱う自由かつオープンソースなソフトウェア群を FOSS4G(Free and Open Source Software

    for Geospatial) といいます そして、このFOSS4Gのコミュニティを支援している団体が主催する 年次カンファレンスの名前もFOSS4Gです(ややこしい) 各地の支部が主催する会議の名前も“FOSS4G”を冠することが多い (自己紹介にあったOSGeo.JPは日本の支部) 56
  17. PyConJP 2025 まとめ • 人工衛星や衛星データは、日常で大活躍しています • 衛星データをPythonで扱うためのツールが開発されて 簡単に扱うことができるようになりつつある • なぜ、Pythonで扱う?

    → 地理空間情報の処理ライブラリが豊富であり、 深層学習などの応用も行いやすい → 地理空間情報の処理は、Pythonと相性がよい(個人の意見) 63