HN 日本語サマリー

← 一覧へ戻る
科学・技術

Planet Labsのオープン衛星フィード

Planet Labs' Open Satellite Feed (tech.marksblogg.com)

176 pointsby marklit30 コメント

要約

Planet Labsは、地球全土の画像を毎日撮影するサンフランシスコ拠点の衛星メーカーおよび運用企業です。同社は最近、SpaceXのミッションで新しいPelican-11衛星を低地球軌道(LLEO)に投入しました。この記事では、同社の軌道上の97機の衛星に関する最新情報と、それらの軌道データを取得・分析するためのコマンドラインツール(wget、grep、duckdb)の使用例を紹介しています。

全文翻訳

Planet Labsは、サンフランシスコに拠点を置く、15年の歴史を持つ衛星製造・コンステレーション運用企業です。これまでに4つの異なるコンステレーションを運用し、毎日地球上の全陸地の画像を撮影しています。LinkedInによると、同社には1,751人の関連メンバーがいます。

CEOのWill Marshallは、同社の3人の共同創業者の一人です。2月には、NATO事務総長マーク・ルッテ氏、フランス大統領エマニュエル・マクロン氏、そして2021年から2024年までエストニア首相を務め、現在は欧州委員会の副委員長であるカヤ・カッラス氏と共に画像を投稿しました。

[画像: Planet Labs Open Satellite Feed]

同社の最新のPelican-11衛星は、Tanagerコンステレーションに加わる予定で、7月7日にSpaceXのTransporter 17ミッションによって打ち上げられました。

[画像: Planet Labs Open Satellite Feed]

これはギリシャ上空の低軌道(LLEO)への放出の様子です。

[画像: Planet Labs Open Satellite Feed]

現在、Planet Labsのエフェメリデスサービスには、軌道上にある97基の衛星がリストされています。これらはGCATからの最新の詳細情報です。

$ wget https://ephemerides.planet-labs.com/planet_mc.tle

$ grep '^2.*' planet_mc.tle \
    | cut -d' ' -f2 \
    > NORAD_IDs.csv

$ ~/duckdb
.maxrows 4000

SELECT   State,
         Name,
         * EXCLUDE(AltNames,
                   Bus,
                   Dest,
                   Attach_flag,
                   Subtype_flag,
                   Orbit_flag,
                   ID_flag,
                   Status_or_failure_flag,
                   Coarse_type,
                   SDate,
                   SDate_Year,
                   "Primary",
                   DDate,
                   Manufacturer,
                   Motor,
                   JCAT,
                   ODate,
                   Type,
                   OQUAL,
                   PLName,
                   Shape,
                   Name,
                   State,
                   DryMass,
                   TotMass)
FROM     'satcat.parquet'
WHERE    Satcat IN (SELECT column0::VARCHAR
                    FROM   'NORAD_IDs.csv')
AND      Status = 'In orbit'
ORDER BY Launch_Tag,
         Name;
┌─────────┬──────────────┬────────┬──────────┬───────┬────────────┬─────────────┬────────┬───────┬─────────┬─────────┬───────────────┬─────────┬────────────┬─────────┬───────┬──────────┐
│  State  │     Name     │ Apogee │ Diameter │  Inc  │ Launch_Tag │    LDate    │ Length │ Mass  │ OpOrbit │  Owner  │    Parent     │ Perigee │   Piece    │ Satcat  │ Span  │  Status  │
│ varchar │   varchar    │ int32  │  float   │ float │  varchar   │   varchar   │ float  │ float │ varchar │ varchar │    varchar    │ varchar │  varchar   │ varchar │ float │ varchar  │
├─────────┼──────────────┼────────┼──────────┼───────┼────────────┼─────────────┼────────┼───────┼─────────┼─────────┼───────────────┼─────────┼────────────┼─────────┼───────┼──────────┤
│ US      │ SkySat A     │    597 │      0.6 │ 97.81 │ 2013-066   │ 2013 Nov 21 │    0.8 │  90.0 │ LLEO/S  │ SKYBOX  │ S39450        │ 567     │ 2013-066C  │ 39418   │   0.6 │ In orbit │
│ US      │ SkySat C1    │    515 │      0.5 │ 97.51 │ 2016-040   │ 2016 Jun 22 │    1.2 │ 110.0 │ LLEO/S  │ TBELLA  │ S41620        │ 499     │ 2016-040C  │ 41601   │   0.5 │ In orbit │
│ US      │ SkySat C2    │    502 │      0.5 │ 97.42 │ 2016-058   │ 2016 Sep 16 │    1.2 │ 110.0 │ LLEO/S  │ TBELLA  │ S41775        │ 501     │ 2016-058D  │ 41773   │   0.5 │ In orbit │
│ US      │ SkySat C4    │    506 │      0.5 │ 97.43 │ 2016-058   │ 2016 Sep 16 │    1.2 │ 110.0 │ LLEO/S  │ TBELLA  │ S41775        │ 497     │ 2016-058B  │ 41771   │   0.5 │ In orbit │
│ US      │ SkySat C5    │    503 │      0.5 │ 97.42 │ 2016-058   │ 2016 Sep 16 │    1.2 │ 110.0 │ LLEO/S  │ TBELLA  │ S41775        │ 501     │ 2016-058C  │ 41772   │   0.5 │ In orbit │
│ US      │ SkySat C6    │    527 │      0.5 │ 97.35 │ 2017-068   │ 2017 Oct 31 │    1.2 │ 110.0 │ LLEO/S  │ PLABST  │ S42994        │ 500     │ 2017-068F  │ 42992   │   0.5 │ In orbit │
│ US      │ SkySat C7    │    527 │      0.5 │ 97.35 │ 2017-068   │ 2017 Oct 31 │    1.2 │ 110.0 │ LLEO/S  │ PLABST  │ S42994        │ 500     │ 2017-068E  │ 42991   │   0.5 │ In orbit │
│ US      │ SkySat C8    │    527 │      0.5 │ 97.35 │ 2017-068   │ 2017 Oct 31 │    1.2 │ 110.0 │ LLEO/S  │ PLABST  │ S42994        │ 500     │ 2017-068D  │ 42990   │   0.5 │ In orbit │
│ US      │ SkySat C9    │    528 │      0.5 │ 97.35 │ 2017-068   │ 2017 Oct 31 │    1.2 │ 110.0 │ LLEO/S  │ PLABST  │ S42994        │ 500     │ 2017-068C  │ 42989   │   0.5 │ In orbit │
│ US      │ SkySat C12   │    588 │      0.5 │ 97.77 │ 2018-099   │ 2018 Dec  3 │    1.2 │ 110.0 │ LLEO/S  │ PLABST  │ S43763        │ 572     │ 2018-099AR │ 43797   │   0.5 │ In orbit │
│ US      │ Flock 4q-16 │    531 │      0.1 │ 97.48 │ 2023-174   │ 2023 Nov 11 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11079  SD4.4 │ 516     │ 2023-174R  │ 58271   │   0.3 │ In orbit │
│ US      │ Flock 4q-2  │    529 │      0.1 │ 97.48 │ 2023-174   │ 2023 Nov 11 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11079  SD1.2 │ 512     │ 2023-174BS │ 58320   │   0.3 │ In orbit │
│ US      │ Flock 4q-4  │    530 │      0.1 │ 97.48 │ 2023-174   │ 2023 Nov 11 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11079  SD1.4 │ 517     │ 2023-174BZ │ 58327   │   0.3 │ In orbit │
│ US      │ Flock 4q-9  │    529 │      0.1 │ 97.48 │ 2023-174   │ 2023 Nov 11 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11079  SD3.1 │ 512     │ 2023-174BU │ 58322   │   0.3 │ In orbit │
│ US      │ Pelican 1  │    530 │      0.6 │ 97.48 │ 2023-174   │ 2023 Nov 11 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11079        │ 515     │ 2023-174AS │ 58296   │   3.0 │ In orbit │
│ US      │ Flock 4be-1│    515 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 506     │ 2024-149BC │ 60518   │   0.3 │ In orbit │
│ US      │ Flock 4be-11│    517 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 507     │ 2024-149AK │ 60501   │   0.3 │ In orbit │
│ US      │ Flock 4be-13│    517 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 506     │ 2024-149AW │ 60512   │   0.3 │ In orbit │
│ US      │ Flock 4be-14│    516 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 505     │ 2024-149BB │ 60517   │   0.3 │ In orbit │
│ US      │ Flock 4be-17│    517 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 509     │ 2024-149AA │ 60492   │   0.3 │ In orbit │
│ US      │ Flock 4be-18│    519 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 509     │ 2024-149N  │ 60480   │   0.3 │ In orbit │
│ US      │ Flock 4be-19│    516 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 505     │ 2024-149CZ │ 60563   │   0.3 │ In orbit │
│ US      │ Flock 4be-22│    518 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 508     │ 2024-149AC │ 60494   │   0.3 │ In orbit │
│ US      │ Flock 4be-23│    518 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 509     │ 2024-149Y  │ 60490   │   0.3 │ In orbit │
│ US      │ Flock 4be-24│    517 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 507     │ 2024-149AP │ 60505   │   0.3 │ In orbit │
│ US      │ Flock 4be-25│    517 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 510     │ 2024-149V  │ 60487   │   0.3 │ In orbit │
│ US      │ Flock 4be-28│    516 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 505     │ 2024-149BD │ 60519   │   0.3 │ In orbit │
│ US      │ Flock 4be-29│    515 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 508     │ 2024-149AT │ 60509   │   0.3 │ In orbit │
│ US      │ Flock 4be-3 │    516 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 506     │ 2024-149CX │ 60561   │   0.3 │ In orbit │
│ US      │ Flock 4be-31│    517 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 509     │ 2024-149W  │ 60488   │   0.3 │ In orbit │
│ US      │ Flock 4be-32│    518 │      0.1 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 508     │ 2024-149AF │ 60497   │   0.3 │ In orbit │
│ US      │ Flock 4be-34│    517 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 509     │ 2024-149AD │ 60495   │   0.3 │ In orbit │
│ US      │ Flock 4be-5 │    515 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 507     │ 2024-149CV │ 60559   │   0.3 │ In orbit │
│ US      │ Flock 4be-6 │    515 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 506     │ 2024-149BA │ 60516   │   0.3 │ In orbit │
│ US      │ Flock 4be-7 │    518 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 510     │ 2024-149P  │ 60481   │   0.3 │ In orbit │
│ US      │ Flock 4be-9 │    515 │      0.1 │ 97.45 │ 2024-149   │ 2024 Aug 16 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11288        │ 507     │ 2024-149AY │ 60514   │   0.3 │ In orbit │
│ US      │ Tanager 1  │    516 │      0.6 │ 97.44 │ 2024-149   │ 2024 Aug 16 │    2.3 │ 150.0 │ LLEO/S  │ PLAN    │ A11288        │ 507     │ 2024-149AR │ 60507   │   3.0 │ In orbit │
│ US      │ Flock 4g-1 │    518 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009BK │ 62666   │   0.3 │ In orbit │
│ US      │ Flock 4g-10│    518 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009BP │ 62670   │   0.3 │ In orbit │
│ US      │ Flock 4g-11│    515 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009W  │ 62629   │   0.3 │ In orbit │
│ US      │ Flock 4g-12│    516 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009S  │ 62625   │   0.3 │ In orbit │
│ US      │ Flock 4g-14│    518 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009BL │ 62667   │   0.3 │ In orbit │
│ US      │ Flock 4g-15│    518 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009BX │ 62678   │   0.3 │ In orbit │
│ US      │ Flock 4g-17│    519 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009CA │ 62681   │   0.3 │ In orbit │
│ US      │ Flock 4g-2 │    518 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009BE │ 62661   │   0.3 │ In orbit │
│ US      │ Flock 4g-22│    514 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AN │ 62645   │   0.3 │ In orbit │
│ US      │ Flock 4g-24│    515 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AE │ 62637   │   0.3 │ In orbit │
│ US      │ Flock 4g-25│    514 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AP │ 62646   │   0.3 │ In orbit │
│ US      │ Flock 4g-26│    515 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AA │ 62633   │   0.3 │ In orbit │
│ US      │ Flock 4g-27│    514 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009AJ │ 62641   │   0.3 │ In orbit │
│ US      │ Flock 4g-28│    515 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AB │ 62634   │   0.3 │ In orbit │
│ US      │ Flock 4g-3 │    515 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AG │ 62639   │   0.3 │ In orbit │
│ US      │ Flock 4g-31│    513 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009AV │ 62652   │   0.3 │ In orbit │
│ US      │ Flock 4g-36│    519 │      0.1 │ 97.45 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009BU │ 62675   │   0.3 │ In orbit │
│ US      │ Flock 4g-6 │    517 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009BD │ 62660   │   0.3 │ In orbit │
│ US      │ Flock 4g-7 │    516 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009R  │ 62624   │   0.3 │ In orbit │
│ US      │ Flock 4g-8 │    516 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 511     │ 2025-009E  │ 62613   │   0.3 │ In orbit │
│ US      │ Flock 4g-9 │    520 │      0.1 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11398        │ 512     │ 2025-009P  │ 62622   │   0.3 │ In orbit │
│ US      │ Pelican 2  │    516 │      0.6 │ 97.44 │ 2025-009   │ 2025 Jan 14 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11288        │ 512     │ 2025-009Y  │ 62631   │   3.0 │ In orbit │
│ US      │ Pelican 3  │    464 │      0.6 │ 97.26 │ 2025-188   │ 2025 Aug 26 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11588        │ 458     │ 2025-188A  │ 65315   │   3.0 │ In orbit │
│ US      │ Pelican 4  │    464 │      0.6 │ 97.26 │ 2025-188   │ 2025 Aug 26 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11588        │ 458     │ 2025-188B  │ 65316   │   3.0 │ In orbit │
│ US      │ Flock 4h-10│    518 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276AZ │ 66713   │   0.3 │ In orbit │
│ US      │ Flock 4h-12│    513 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BB │ 66715   │   0.3 │ In orbit │
│ US      │ Flock 4h-14│    512 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BD │ 66717   │   0.3 │ In orbit │
│ US      │ Flock 4h-15│    518 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BE │ 66718   │   0.3 │ In orbit │
│ US      │ Flock 4h-16│    517 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BF │ 66719   │   0.3 │ In orbit │
│ US      │ Flock 4h-18│    518 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BH │ 66721   │   0.3 │ In orbit │
│ US      │ Flock 4h-19│    513 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276BJ │ 66722   │   0.3 │ In orbit │
│ US      │ Flock 4h-2 │    513 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276AR │ 66705   │   0.3 │ In orbit │
│ US      │ Flock 4h-20│    513 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276BK │ 66723   │   0.3 │ In orbit │
│ US      │ Flock 4h-21│    513 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276BL │ 66724   │   0.3 │ In orbit │
│ US      │ Flock 4h-22│    517 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BM │ 66725   │   0.3 │ In orbit │
│ US      │ Flock 4h-23│    518 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BN │ 66726   │   0.3 │ In orbit │
│ US      │ Flock 4h-24│    517 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BP │ 66727   │   0.3 │ In orbit │
│ US      │ Flock 4h-25│    512 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276BQ │ 66728   │   0.3 │ In orbit │
│ US      │ Flock 4h-26│    518 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BR │ 66729   │   0.3 │ In orbit │
│ US      │ Flock 4h-27│    513 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BS │ 66730   │   0.3 │ In orbit │
│ US      │ Flock 4h-29│    517 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BU │ 66732   │   0.3 │ In orbit │
│ US      │ Flock 4h-3 │    517 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276AS │ 66706   │   0.3 │ In orbit │
│ US      │ Flock 4h-30│    518 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BV │ 66733   │   0.3 │ In orbit │
│ US      │ Flock 4h-31│    517 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BW │ 66734   │   0.3 │ In orbit │
│ US      │ Flock 4h-32│    518 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276BX │ 66735   │   0.3 │ In orbit │
│ US      │ Flock 4h-33│    513 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276BY │ 66736   │   0.3 │ In orbit │
│ US      │ Flock 4h-34│    513 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276BZ │ 66737   │   0.3 │ In orbit │
│ US      │ Flock 4h-35│    512 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276CA │ 66738   │   0.3 │ In orbit │
│ US      │ Flock 4h-36│    514 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276CB │ 66739   │   0.3 │ In orbit │
│ US      │ Flock 4h-4 │    518 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276AT │ 66707   │   0.3 │ In orbit │
│ US      │ Flock 4h-5 │    513 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276AU │ 66708   │   0.3 │ In orbit │
│ US      │ Flock 4h-7 │    516 │      0.1 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 513     │ 2025-276AW │ 66710   │   0.3 │ In orbit │
│ US      │ Flock 4h-8 │    517 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276AX │ 66711   │   0.3 │ In orbit │
│ US      │ Flock 4h-9 │    515 │      0.1 │ 97.45 │ 2025-276   │ 2025 Nov 28 │    0.3 │   5.7 │ LLEO/S  │ PLAN    │ A11695        │ 511     │ 2025-276AY │ 66712   │   0.3 │ In orbit │
│ US      │ Pelican 5  │    515 │      0.6 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11695        │ 512     │ 2025-276B  │ 66667   │   3.0 │ In orbit │
│ US      │ Pelican 6  │    516 │      0.6 │ 97.44 │ 2025-276   │ 2025 Nov 28 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11695        │ 513     │ 2025-276AP │ 66703   │   3.0 │ In orbit │
│ US      │ Edda 1     │    509 │      0.6 │ 97.41 │ 2026-100   │ 2026 May  3 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11839        │ 500     │ 2026-100AP │ 69017   │   3.0 │ In orbit │
│ S       │ Pelican 8  │    518 │      0.6 │ 97.72 │ 2026-100   │ 2026 May  3 │    2.3 │ 160.0 │ LLEO/S  │ FVM     │ A11839        │ 482     │ 2026-100AQ │ 69018   │   3.0 │ In orbit │
│ US      │ Pelican 9  │    508 │      0.6 │ 97.41 │ 2026-100   │ 2026 May  3 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11839        │ 500     │ 2026-100AR │ 69019   │   3.0 │ In orbit │
│ US      │ Pelican 11 │    597 │      0.6 │ 97.76 │ 2026-156   │ 2026 Jul  7 │    2.3 │ 160.0 │ LLEO/S  │ PLAN    │ A11917        │ 587     │ 2026-156C  │ 69871   │   3.0 │ In orbit │
└─────────┴──────────────┴────────┴──────────┴───────┴────────────┴─────────────┴────────┴───────┴─────────┴─────────┴───────────────┴─────────┴────────────┴─────────┴───────┴──────────┘

これらは、SuperDove、SkySat衛星と、RapidEye、Landsat-8、Sentinel-2を比較した際のスペクトル応答レベルです。

[画像: Planet Labs Open Satellite Feed]

ハイパースペクトルPelicanコンステレーションは、他のコンステレーションと異なり、衛星が426バンドの光を捉えます。昨年、私はその無料画像の一部をレビューしました。

昨年、Planet Labsは新しいDisaster Dataフィードを発表しました。これはCloudflareホストの、DuckDBとQGISフレンドリーなフィードで、発生直後の様々な自然災害や人為的災害から捉えた選りすぐりの画像を提供します。画像を説明するメタデータはParquetファイルとJSONファイルとして出荷されます。

この記事では、今年公開された画像データを分析します。

My Workstation

私は5.7 GHzのAMD Ryzen 9 9950X CPUを使用しています。これは16コア32スレッドで、L1キャッシュ1.2 MB、L2キャッシュ16 MB、L3キャッシュ64 MBを備えています。液体クーラーが取り付けられており、広々としたフルサイズのCooler Master HAF 700 PCケースに収められています。

システムには、4,800 MT/sで動作する96 GBのDDR5 RAMと、最大12,400 MB/sの読み取り速度を持つ第5世代Crucial T700 4 TB NVMe M.2 SSDが搭載されています。SSDには温度を下げるためのヒートシンクが付いています。これが私のシステムのCドライブです。

システムは1,200ワットのフルモジュラーCorsair電源で駆動され、ASRock X870E Nova 90マザーボード上に設置されています。

Windows 11 Pro上のUbuntu for Windowsを介して、Ubuntu 24 LTSを実行しています。なぜプライマリワーク環境としてLinuxベースのデスクトップを使用しないのか疑問に思われるかもしれませんが、私はまだNvidia GTX 1080 GPUを使用しており、これはWindows上でより良いドライバーサポートがあり、ArcGIS ProはネイティブでWindowsのみをサポートしているためです。

Installing Prerequisites

画像操作にはGDAL 3.9.3を、この記事のデータフォーマットにはjqを使用します。

注意:昨年、GDAL 3.12がリリースされ、CLIに大幅なオーバーホールが行われました。この記事のコマンドは、このバージョンまたはそれ以降のバージョンに調整する必要がある可能性が高いです。

$ sudo apt update
$ sudo apt install \
    gdal-bin \
    jq

この記事では、DuckDBとそのH3、JSON、Lindel、Parquet、Spatial拡張機能を使用します。

$ cd ~
$ wget -c https://github.com/duckdb/duckdb/releases/download/v1.5.4/duckdb_cli-linux-amd64.zip
$ unzip -j duckdb_cli-linux-amd64.zip
$ chmod +x duckdb
$ ~/duckdb
INSTALL h3 FROM community;
INSTALL lindel FROM community;
INSTALL json;
INSTALL parquet;
INSTALL spatial;

DuckDBが起動するたびに、インストールされているすべての拡張機能をロードするように設定します。

$ vi ~/.duckdbrc
.timer on
.width 180
LOAD h3;
LOAD lindel;
LOAD json;
LOAD parquet;
LOAD spatial;

この記事の地図は、QGISバージョン4.2.1でレンダリングされました。QGISはWindows、macOS、Linuxで動作するデスクトップアプリケーションです。このアプリケーションは近年人気が高まっており、世界中のユーザーから毎月約2200万回のアプリケーション起動があります。

境界線と地名はNatural Earthから、地震データはUSGSから取得しました。領海境界線はMarine Regionsから取得しました。QGISのHCMGISプラグインを使用して、Bingからの衛星画像ベースマップをこの記事に追加しました。

The List of Disasters

これは、災害リストを取得するためのプログラム的な方法です。各行は、アセットとイベント固有のドキュメントが見つかるURLスラッグを表します。

$ touch catalog.json; rm catalog.json
$ wget https://data.source.coop/planet/disasterdata/catalog.json

$ jq -r '.links[]|.href' catalog.json \
    | grep '.*[0-9]/catalog.json' \
    | cut -d/ -f2 \
    | sort
colombia-earthquake-2026-08-10
gironde-wildfire-2026
hurricane-melissa-2025
nepal-flash-flood-2026-08-26
philippines-earthquake-2026-06-08
venezuela-earthquake-2026-06-24

Pre-event Basemaps

各イベントのフォルダには、さまざまなアセットが含まれています。利用可能なアセットの種類はイベントによって異なります。コロンビアとベネズエラの2つのイベントでは、ベースマップが利用可能です。これらは、最近の期間にわたって撮影された複数の衛星画像のモザイクであり、地球の表面を覆う雲の量を非常に少なくすることを目指しています。

ベネズエラのベースマップは、280 kmの海岸線と最大52 kmの内陸をカバーしています。

[画像: Planet Labs Open Satellite Feed]

ベースマップはタイルとしてリリースされており、コロンビアの場合は、対応するJSONファイルと共に93個のGeoTIFFファイルとして提供されます。

以下にコロンビアのベースマップアセットのリストをダウンロードします。

$ mkdir -p colombia_basemap
$ cd colombia_basemap

$ wget https://data.source.coop/planet/disasterdata/Colombia-earthquake-2026-08-10/pre-event/basemap-2026q2/items.parquet

これは、タイルの1つに対するレコードの例です。

$ echo "FROM  'items.parquet'
        LIMIT 1"
    | ~/duckdb -json \
    | jq -S .
[
  {
    "assets": {
      "thumbnail": {
        "href": "https://data.source.coop/planet/disasterdata/colombia-earthquake-2026-08-10/pre-event/basemap-2026q2/items/585-1059/585-1059_thumbnail.png",
        "roles": [
          "thumbnail"
        ],
        "title": "Thumbnail",
        "type": "image/png"
      },
      "visual": {
        "eo:bands": [
          {
            "common_name": "red",
            "name": "Red"
          },
          {
            "common_name": "green",
            "name": "Green"
          },
          {
            "common_name": "blue",
            "name": "Blue"
          },
          {
            "common_name": "alpha",
            "name": "Alpha"
          }
        ],
        "href": "https://data.source.coop/planet/disasterdata/colombia-earthquake-2026-08-10/pre-event/basemap-2026q2/items/585-1059/585-1059_visual.tif",
        "roles": [
          "data",
          "visual"
        ],
        "title": "Visual (true-colour RGB) basemap quad COG",
        "type": "image/tiff; application=geotiff; profile=cloud-optimized"
      }
    },
    "bbox": {
      "xmax": -76.99218748925043,
      "xmin": -77.16796873922601,
      "ymax": 6.315298537512351,
      "ymin": 6.140554781656619
    },
    "collection": "pre-event-basemap-2026q2",
    "constellation": "planetscope",
    "datetime": "2026-05-16 15:00:00+03",
    "end_datetime": "2026-07-01 03:00:00+03",
    "geometry": "POLYGON ((-77.16796873922601 6.140554781656619, -76.99218748925043 6.140554781656619, -76.99218748925043 6.315298537512351, -77.16796873922601 6.315298537512351, -77.16796873922601 6.140554781656619))",
    "gsd": 4.77731426716,
    "id": "585-1059",
    "links": [
      {
        "href": "../../../../catalog.json",
        "rel": "root",
        "title": "Planet Crisis Response — Colombia Earthquake (2026)",
        "type": "application/json"
      },
      {
        "href": "../../collection.json",
        "rel": "parent",
        "title": null,
        "type": "application/json"
      },
      {
        "href": "../../collection.json",
        "rel": "collection",
        "title": null,
        "type": "application/json"
      },
      {
        "href": "https://data.source.coop/planet/disasterdata/colombia-earthquake-2026-08-10/pre-event/basemap-2026q2/items/585-1059/585-1059.json",
        "rel": "self",
        "title": null,
        "type": "application/json"
      },
      {
        "href": "./585-1059_thumbnail.png",
        "rel": "thumbnail",
        "title": null,
        "type": "image/png"
      }
    ],
    "pl:mosaic": "global_quarterly_2026q2_mosaic",
    "pl:mosaic_id": "649cf917-0aab-40eb-94df-c222535f2cf7",
    "pl:percent_covered": 100,
    "pl:quad_id": "585-1059",
    "proj:epsg": 3857,
    "proj:shape": [
      4096,
      4096
    ],
    "stac_extensions": [
      "https://stac-extensions.github.io/eo/v1.0.0/schema.json",
      "https://stac-extensions.github.io/view/v1.0.0/schema.json",
      "https://stac-extensions.github.io/raster/v1.1.0/schema.json",
      "https://stac-extensions.github.io/projection/v1.1.0/schema.json"
    ],
    "stac_version": "1.0.0",
    "start_datetime": "2026-04-01 03:00:00+03",
    "type": "Feature"
  }
]

タイルごとのGeoTIFF URLのリストを作成し、8つの並列スレッドでダウンロードします。結果のGeoTIFFは1.7 GBの容量を占めます。

$ echo "WITH a AS (
            SELECT DISTINCT
                UNNEST([assets.visual.href]) AS url
            FROM READ_PARQUET('items.parquet')
        )
        FROM   a
        WHERE  url IS NOT NULL"
    | ~/duckdb -csv -noheader \
    | xargs \
        -I% \
        -P8 \
        wget -c "%"

次に、これらのタイルから単一のGeoTIFFを構築し、WEBP圧縮を使用します。これにより、外観に最小限の変化でファイルサイズを80%以上削減できます。結果のGeoTIFFは327 MBです。

$ gdalbuildvrt mosaic.vrt *visual.tif

$ gdal_translate \
    -co NUM_THREADS=ALL_CPUS \
    -of COG \
    -co COMPRESS=WEBP \
    mosaic.vrt \
    mosaic.tif

次に、JSONメタデータファイルを単一のParquetファイルに変換します。

$ mkdir -p metadata

$ echo "SELECT href
        FROM   (
            SELECT UNNEST(links, recursive := true)
            FROM   READ_PARQUET('items.parquet')
        )
        WHERE  href LIKE 'https%'" \
    | ~/duckdb -csv -noheader \
    | xargs \
        -I% \
        -P8 \
        wget -P metadata/ -c "%"
$ touch footprints.json; rm footprints.json

$ for FILENAME in metadata/*.json; do
    jq -c . $FILENAME >> footprints.json
  done
$ ~/duckdb
COPY(
    SELECT * EXCLUDE(geometry),
           geometry: ST_GEOMFROMGEOJSON(geometry)
    FROM   'footprints.json'
) TO 'footprints.parquet' (
      FORMAT 'PARQUET',
      CODEC  'ZSTD',
      COMPRESSION_LEVEL 22,
      ROW_GROUP_SIZE 15000);

これらは、プロパティ構造の各フィールドのユニークな値の数です。ネストされた構造とリストは除外しました。

SELECT   column_name,
         column_type,
         approx_unique,
         min,
         max
FROM     (SUMMARIZE
          SELECT properties.*
          FROM   'footprints.parquet')
WHERE    column_type::TEXT NOT LIKE 'STRUCT%'
AND      column_type::TEXT NOT LIKE '%[]%'
ORDER BY LOWER(column_name);

datetimeフィールドは、モザイク内の最も古い画像のタイムスタンプであり、end_datetimeは、モザイクが公開された時点、またはモザイク内の最も新しい画像がキャプチャされた時点であるようです。

┌────────────────────┬─────────────┬───────────────┬──────────────────────────────────────┬──────────────────────────────────────┐
│    column_name     │ column_type │ approx_unique │                 min                  │                 max                  │
│      varchar       │   varchar   │     int64     │               varchar                │               varchar                │
├────────────────────┼─────────────┼───────────────┼──────────────────────────────────────┼──────────────────────────────────────┤
│ constellation      │ VARCHAR     │             1 │ planetscope                          │ planetscope                          │
│ datetime           │ TIMESTAMP   │             1 │ 2026-05-16 12:00:00                  │ 2026-05-16 12:00:00                  │
│ end_datetime       │ TIMESTAMP   │             1 │ 2026-07-01 00:00:00                  │ 2026-07-01 00:00:00                  │
│ gsd                │ DOUBLE      │             1 │ 4.77731426716                        │ 4.77731426716                        │
│ pl:mosaic          │ VARCHAR     │             1 │ global_quarterly_2026q2_mosaic       │ global_quarterly_2026q2_mosaic       │
│ pl:mosaic_id       │ UUID        │             1 │ 649cf917-0aab-40eb-94df-c222535f2cf7 │ 649cf917-0aab-40eb-94df-c222535f2cf7 │
│ pl:percent_covered │ BIGINT      │             1 │ 100                                  │ 100                                  │
│ pl:quad_id         │ VARCHAR     │            86 │ 585-1059                             │ 596-1054                             │
│ proj:code          │ VARCHAR     │             1 │ EPSG:3857                            │ EPSG:3857                            │
│ start_datetime     │ TIMESTAMP   │             1 │ 2026-04-01 00:00:00                  │ 2026-04-01 00:00:00                  │
└────────────────────┴─────────────┴───────────────┴──────────────────────────────────────┴──────────────────────────────────────┘

これらは、コロンビアと周辺地域との関連におけるベースマップタイルのフットプリントです。

[画像: Planet Labs Open Satellite Feed]

以下は、ペレイラにズームインしたものです。

[画像: Planet Labs Open Satellite Feed]

Pre- and Post-Event Imagery

イベントには、主にプリイベント(イベント前)とポストイベント(イベント後)の2つの高レベルなアセットカテゴリがあります。ここでは、ネパールでのフラッシュフラッドに関するポストイベント画像を使用します。

プリイベントまたはポストイベント画像のフォルダリストには、items.parquetファイルが含まれています。ファイル名をクリックすると、その内容を説明するウェブページが表示されますが、ファイル名の隣にあるリンクからは、Cloudflareにブロックされることなく、コマンドラインやDuckDBからアクセスできます。

[画像: Planet Labs Open Satellite Feed]

以下は、先月ネパールで発生したフラッシュフラッド災害の、ポストイベントメタデータファイル(83 KB、Parquet形式)をダウンロードするコマンドです。

$ wget -O nepal.post.parquet \
       https://data.source.coop/planet/disasterdata/nepal-flash-flood-2026-08-26/post-event/items.parquet

このファイルには24件のレコードが含まれています。

$ ~/duckdb
SELECT COUNT(*)
FROM   'nepal.post.parquet';
24

これはレコードの例です。

$ echo "FROM  'nepal.post.parquet'
        LIMIT 1"
    | ~/duckdb -json \
    | jq -S .
[
  {
    "assets": {
      "analytic": null,
      "pansharpened": {
        "eo:bands": null,
        "href": "https://data.source.coop/planet/disasterdata/nepal-flash-flood-2026-08-26/post-event/pelican-2026-08-27/items/20260827_060956_98_3009/20260827_060956_98_3009_pansharpened.tif",
        "pl:asset_type": "ortho_pansharpened",
        "pl:bundle_type": "pansharpened_udm2",
        "proj:bbox": [
          335132.5,
          3125818.0,
          346500.5,
          3137230.5
        ],
        "proj:epsg": 32645,
        "proj:shape": [
          22825,
          22736
        ],
        "proj:transform": [
          0.5,
          0.0,
          335132.5,
          0.0,
          -0.5,
          3137230.5,
          0.0,
          0.0,
          1.0
        ],
        "raster:bands": [
          {
            "data_type": "uint16",
            "nodata": 0.0,
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 58588.0,
              "minimum": 11968.0
            }
          },
          {
            "data_type": "uint16",
            "nodata": 0.0,
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 33961.0,
              "minimum": 10257.0
            }
          },
          {
            "data_type": "uint16",
            "nodata": 0.0,
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 34764.0,
              "minimum": 7934.0
            }
          },
          {
            "data_type": "uint16",
            "nodata": 0.0,
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 29368.0,
              "minimum": 6403.0
            }
          },
          {
            "data_type": "uint16",
            "nodata": 0.0,
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 42197.0,
              "minimum": 7554.0
            }
          },
          {
            "data_type": "uint16",
            "nodata": 0.0,
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 39092.0,
              "minimum": 7926.0
            }
          }
        ],
        "roles": [
          "data"
        ],
        "title": "Pansharpened multiband ortho COG",
        "type": "image/tiff; application=geotiff; profile=cloud-optimized"
      },
      "thumbnail": {
        "href": "https://data.source.coop/planet/disasterdata/nepal-flash-flood-2026-08-26/post-event/pelican-2026-08-27/items/20260827_060956_98_3009/20260827_060956_98_3009_thumbnail.png",
        "roles": [
          "thumbnail"
        ],
        "title": "Thumbnail",
        "type": "image/png"
      },
      "udm": null,
      "udm2": {
        "eo:bands": null,
        "href": "https://data.source.coop/planet/disasterdata/nepal-flash-flood-2026-08-26/post-event/pelican-2026-08-27/items/20260827_060956_98_3009/20260827_060956_98_3009_udm2.tif",
        "pl:asset_type": "ortho_pansharpened_udm2",
        "pl:bundle_type": "pansharpened_udm2",
        "proj:bbox": [
          335132.5,
          3125818.0,
          346500.5,
          3137230.5
        ],
        "proj:epsg": 32645,
        "proj:shape": [
          22825,
          22736
        ],
        "raster:bands": [
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 1.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 0.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 1.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 1.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 0.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 1.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 100.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 2.0,
              "minimum": 0.0
            }
          }
        ],
        "roles": [
          "data",
          "snow-ice",
          "cloud",
          "cloud-shadow"
        ],
        "title": "Usable Data Mask (UDM2) — per-pixel quality",
        "type": "image/tiff; application=geotiff; profile=cloud-optimized"
      },
      "visual": {
        "eo:bands": null,
        "href": "https://data.source.coop/planet/disasterdata/nepal-flash-flood-2026-08-26/post-event/pelican-2026-08-27/items/20260827_060956_98_3009/20260827_060956_98_3009_visual.tif",
        "pl:asset_type": "ortho_visual",
        "pl:bundle_type": "visual",
        "proj:bbox": [
          335132.5,
          3125818.0,
          346500.5,
          3137230.5
        ],
        "proj:epsg": 32645,
        "proj:shape": [
          22825,
          22736
        ],
        "proj:transform": [
          0.5,
          0.0,
          335132.5,
          0.0,
          -0.5,
          3137230.5,
          0.0,
          0.0,
          1.0
        ],
        "raster:bands": [
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 255.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 255.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 255.0,
              "minimum": 0.0
            }
          },
          {
            "data_type": "uint8",
            "spatial_resolution": 0.5,
            "statistics": {
              "maximum": 255.0,
              "minimum": 0.0
            }
          }
        ],
        "roles": [
          "data",
          "visual"
        ],
        "title": "Visual (true-colour RGB) ortho COG",
        "type": "image/tiff; application=geotiff; profile=cloud-optimized"
      }
    },
    "bbox": {
      "xmax": 85.43406669026984,
      "xmin": 85.31918550951734,
      "ymax": 28.35121763114424,
      "ymin": 28.24911357422872
    },
    "collection": "post-event-pelican-2026-08-26",
    "constellation": "pelican",
    "created": "2026-08-27 10:33:45+03",
    "datetime": "2026-08-27 09:09:56.99105+03",
    "eo:cloud_cover": 85,
    "geometry": "POLYGON ((85.33889798257499 28.35121763114424, 85.31918550951734 28.2661375282364, 85.41382376956273 28.24911357422872, 85.43406669026984 28.334115698528574, 85.33889798257499 28.35121763114424))",
    "gsd": 0.55,
    "id": "20260827_060956_98_3009",
    "instruments": null,
    "links": [
      {
        "href": "../../../../catalog.json",
        "rel": "root",
        "title": "Planet Crisis Response — Bhote Koshi–Trishuli Outburst Flood, Nepal (2026)",
        "type": "application/json"
      },
      {
        "href": "../../collection.json",
        "rel": "parent",
        "title": null,
        "type": "application/json"
      },
      {
        "href": "../../collection.json",
        "rel": "collection",
        "title": null,
        "type": "application/json"
      },
      {
        "href": "https://data.source.coop/planet/disasterdata/nepal-flash-flood-2026-08-26/post-event/pelican-2026-08-27/items/20260827_060956_98_3009/20260827_060956_98_3009.json",
        "rel": "self",
        "title": null,
        "type": "application/json"
      },
      {
        "href": "./20260827_060956_98_3009_thumbnail.png",
        "rel": "thumbnail",
        "title": null,
        "type": "image/png"
      }
    ],
    "pl:data_version": null,
    "pl:ground_control": true,
    "pl:ground_control_ratio": null,
    "pl:item_type": "PelicanScene",
    "pl:pixel_resolution": 0.5,
    "pl:publishing_stage": "finalized",
    "pl:quality_category": "standard",
    "pl:strip_id": "20260827_060956_98_3009_strip",
    "platform": "3009",
    "published": "2026-08-27 10:33:45+03",
    "stac_extensions": [
      "https://stac-extensions.github.io/eo/v1.0.0/schema.json",
      "https://stac-extensions.github.io/view/v1.0.0/schema.json",
      "https://stac-extensions.github.io/raster/v1.1.0/schema.json",
      "https://stac-extensions.github.io/projection/v1.1.0/schema.json"
    ],
    "stac_version": "1.0.0",
    "type": "Feature",
    "updated": "2026-08-27 10:33:45+03",
    "view:azimuth": 255.9,
    "view:off_nadir": 3.8,
    "view:sun_azimuth": 171.2,
    "view:sun_elevation": 71.6
  }
]

これらは、プロパティ構造の各フィールドのユニークな値の数です。構造体とリストは除外しました。

$ ~/duckdb --nullvalue ""
SELECT   column_name,
         column_type[:15],
         approx_unique,
         min[:25],
         max[:25]
FROM     (SUMMARIZE
          FROM   'nepal.post.parquet')
WHERE    column_type::TEXT NOT LIKE 'STRUCT%'
AND      column_type::TEXT NOT LIKE '%[]%'
ORDER BY LOWER(column_name);
┌─────────────────────────┬──────────────────┬───────────────┬───────────────────────────┬───────────────────────────┐
│       column_name       │ column_type[:15] │ approx_unique │                 min[:25]  │                 max[:25]  │
│         varchar         │     varchar      │     int64     │          varchar          │          varchar          │
├─────────────────────────┼──────────────────┼───────────────┼───────────────────────────┼───────────────────────────┤
│ collection              │ VARCHAR          │             6 │ post-event-pelican-2026-0 │ post-event-skysat-2026-08 │
│ constellation           │ VARCHAR          │             3 │ pelican                   │ skysat                    │
│ created                 │ TIMESTAMP WITH   │            18 │ 2026-08-26 09:32:01+03    │ 2026-09-01 09:45:14+03    │
│ datetime                │ TIMESTAMP WITH   │            26 │ 2026-08-26 08:01:25.99322 │ 2026-09-01 08:06:35.68372 │
│ eo:cloud_cover          │ BIGINT           │            15 │ 47                        │ 93                        │
│ geometry                │ GEOMETRY('EPSG:  │            25 │ POLYGON ((85.339966733816 │ POLYGON ((85.321140858017 │
│ gsd                     │ DOUBLE           │            11 │ 0.55                      │ 3.9                       │
│ id                      │ VARCHAR          │            24 │ 20260826_050125_99_255f   │ 20260901_050635_67_300b   │
│ pl:data_version         │ VARCHAR          │             7 │ 20260826T100156Z          │ 20260828T092936Z          │
│ pl:ground_control       │ BOOLEAN          │             1 │ true                      │ true                      │
│ pl:ground_control_ratio │ BIGINT           │             1 │ 1                         │ 1                         │
│ pl:item_type            │ VARCHAR          │             2 │ PSScene                   │ SkySatCollect             │
│ pl:pixel_resolution     │ DOUBLE           │             2 │ 0.5                       │ 3.0                       │
│ pl:publishing_stage     │ VARCHAR          │             1 │ finalized                 │ finalized                 │
│ pl:quality_category     │ VARCHAR          │             2 │ standard                  │ test                      │
│ pl:strip_id             │ VARCHAR          │             7 │ 20260827_060956_98_3009_s │ s3_20260827T020055Z       │
│ platform                │ VARCHAR          │             7 │ 251f                      │ SSC9                      │
│ published               │ TIMESTAMP WITH   │            18 │ 2026-08-26 09:32:01+03    │ 2026-09-01 09:45:14+03    │
│ stac_version            │ VARCHAR          │             1 │ 1.0.0                     │ 1.0.0                     │
│ type                    │ VARCHAR          │             1 │ Feature                   │ Feature                   │
│ updated                 │ TIMESTAMP WITH   │            12 │ 2026-08-26 17:32:46+03    │ 2026-09-02 08:47:29+03    │
│ view:azimuth            │ DOUBLE           │            14 │ 3.7                       │ 276.1                     │
│ view:off_nadir          │ DOUBLE           │            12 │ 2.1                       │ 28.9                      │
│ view:sun_azimuth        │ DOUBLE           │            24 │ 92.7                      │ 255.4                     │
│ view:sun_elevation      │ DOUBLE           │            21 │ 26.9                      │ 71.8                      │
└─────────────────────────┴──────────────────┴───────────────┴───────────────────────────┴───────────────────────────┘

これらは、各コンステレーションが特定の日にキャプチャした画像の数です。

PIVOT (
    SELECT   constellation,
             taken_on: datetime::DATE,
             cnt:      COUNT(*)
    FROM     'nepal.post.parquet'
    GROUP BY 1, 2
)
ON       constellation
USING    SUM(cnt)
GROUP BY taken_on
ORDER BY taken_on;
┌────────────┬─────────┬─────────────┬────────┐
│  taken_on  │ pelican │ planetscope │ skysat │
│    date    │ int128  │   int128    │ int128 │
├────────────┼─────────┼─────────────┼────────┤
│ 2026-08-26 │         │           9 │        │
│ 2026-08-27 │       3 │             │      2 │
│ 2026-08-28 │         │           5 │        │
│ 2026-08-31 │         │             │      2 │
│ 2026-09-01 │       3 │             │        │
└────────────┴─────────┴─────────────┴────────┘

これらは、コンステレーションごとの画像キャプチャの最高解像度と最低解像度です。

SELECT   constellation,
         min_: MIN("pl:pixel_resolution"),
         max_: MAX("pl:pixel_resolution")
FROM     'nepal.post.parquet'
GROUP BY 1
ORDER BY 2;
┌───────────────┬────────┬────────┐
│ constellation │  min_  │  max_  │
│    varchar    │ double │ double │
├───────────────┼────────┼────────┤
│ pelican       │    0.5 │    0.5 │
│ skysat        │    0.5 │    0.5 │
│ planetscope   │    3.0 │    3.0 │
└───────────────┴────────┴────────┘

画像はキャプチャ後わずか1.4時間で公開されています。

SELECT   hours_:     ROUND(EPOCH(created - datetime) / 3600, 1),
         num_images: COUNT(*)
FROM     'nepal.post.parquet'
GROUP BY 1
ORDER BY 1;
┌────────┬────────────┐
│ hours_ │ num_images │
│ double │   int64    │
├────────┼────────────┤
│    1.4 │          3 │
│    1.5 │          4 │
│    1.6 │          4 │
│    1.7 │          1 │
│    2.2 │          4 │
│    3.1 │          4 │
│    4.0 │          2 │
│    4.1 │          2 │
└────────┴────────────┘

これらは、ネパール全体と中国南部との関連におけるフットプリントの位置です。

[画像: Planet Labs Open Satellite Feed]

画像は異なる時間にキャプチャされており、場合によっては既に収集された他の画像と重複しています。

[画像: Planet Labs Open Satellite Feed]

Downloading Imagery

SkySat GeoTIFFのリストを作成し、4つの並列スレッドでダウンロードします。

$ mkdir -p nepal_skysat
$ cd nepal_skysat

$ echo "SELECT href
        FROM (
            SELECT UNNEST(assets.visual, recursive := true)
            FROM   '../nepal.post.parquet'
            WHERE  constellation = 'skysat'
        )" \
    | ~/duckdb -csv -noheader \
    | xargs \
        -I% \
        -P4 \
        wget -c "%"

結果の画像は合計で1.9 GBです。

$ du -hsc *_visual.tif
749M    20260827_020055_ssc1_u0001_visual.tif
416M    20260827_020055_ssc1_u0002_visual.tif
359M    20260831_092523_ssc9_u0002_visual.tif
342M    20260831_092523_ssc9_u0003_visual.tif
1.9G    total

これらは衛星画像です。

[画像: Planet Labs Open Satellite Feed]

これらの画像がキャプチャされたとき、多くの雲がありましたが、フラッシュフラッドの影響を受けた集落の一部が見えます。

[画像: Planet Labs Open Satellite Feed]

Usable Data Masks

上記の画像には、画像が雲で覆われている領域を特定する、使用可能なデータマスク(UDM)の対応物があります。

$ echo "SELECT href
        FROM (
            SELECT UNNEST(assets.udm, recursive := true)
            FROM   '../nepal.post.parquet'
            WHERE  constellation = 'skysat'
        )" \
    | ~/duckdb -csv -noheader \
    | xargs \
        -I% \
        -P4 \
        wget -c "%"

上記の画像のUDMは合計で49 MBです。

$ du -hsc *_udm.tif
22M     20260827_020055_ssc1_u0001_udm.tif
8.8M    20260827_020055_ssc1_u0002_udm.tif
12M     20260831_092523_ssc9_u0002_udm.tif
7.5M    20260831_092523_ssc9_u0003_udm.tif
49M     total

黒く色付けされた領域は地球の表面をはっきりと見ることができ、白は雲によって遮られており、灰色の領域には画像が含まれていません。

[画像: Planet Labs Open Satellite Feed]

PlanetScopeおよびTanagerコンステレーションからの画像は、UDM2とペアになります。UDM2は、雲に加えて、影、かすみ、雪を識別できます。

この記事をお読みいただきありがとうございます。北米およびヨーロッパのクライアント向けに、コンサルティングと実践的な開発サービスの両方を提供しています。私のサービスがビジネスにどのように役立つかについてご相談をご希望の場合は、LinkedInからご連絡ください。