衛星画像
気象庁のひまわり9号、AHI の画像タイルです。データは NOAA Open Data 経由で取得しています。観測バンドは 10 分に 1 シーンで、約 48 時間保持します。 同じエンドポイントで、16 の元バンド(B01–B16)と 20 種の派生レイヤーを提供します。ひまわり9号から見える地球の円盤をカバーし、円盤の外は透明です。
共通のルール(座標、キャッシュ、出典表示、完全な地図の例)は 地図タイルの概要 を参照してください。
データライセンス
Section titled “データライセンス”推奨表記データ出典:気象庁 ひまわり9号(NOAA Open Data 経由)、ExpTech Studio(exptech.dev)
- 気象庁 ひまわり9号(NOAA Open Data 経由):ひまわりデータに対する気象庁および NOAA Open Data の利用条件も適用されます。
- NOAA:米国政府のデータで、原則として利用制限はありません。NOAA が製品を推奨・保証しているように示さないでください。
表記の場所、例、商用利用の申請はデータの利用条件と出典表記をご覧ください。
現在は API Token は不要です。
利用可能な時刻の取得
Section titled “利用可能な時刻の取得”channelバンド 1–16、または派生レイヤー名(下の「バンドとレイヤー」を参照)。正規の書き方だけを受け付けます。たとえば 13 は可で、013 は不可です。
curl --compressed "https://api.core-tnn1.exptech.dev/api/v2/tiles/satellite/<channel>/list"const res = await fetch("https://api.core-tnn1.exptech.dev/api/v2/tiles/satellite/<channel>/list");if (!res.ok) throw new Error(`HTTP ${res.status}`);const data = await res.json();console.log(data);import requests
res = requests.get( "https://api.core-tnn1.exptech.dev/api/v2/tiles/satellite/<channel>/list", timeout=10,)res.raise_for_status()print(res.json())成功(データがないときは [ ])。クライアントが対応しているときは gzip で圧縮
[ 1794641400, 600, 600, 600]channel が不正
bad channelサーバーエラー(プレーンテキストのエラーメッセージ)text/plain
試してみる
レスポンスのフィールド
Section titled “レスポンスのフィールド”レスポンスは delta 符号化の整数配列です。古い順で、単位は Unix 秒です(復元方法は地図タイルの概要を参照)。派生レイヤーは、構成するバンドがすべて揃った時刻だけを返します。リストにある時刻は、必ず描画できます。
| フィールド | 型 | 説明 |
|---|---|---|
[0] | integer | 最も古い 1 件の時刻です。Unix 秒。 |
[i](i ≥ 1) | integer | 直前の 1 件との差(秒)です。累積すると各件の時刻になります。 |
タイルの取得
Section titled “タイルの取得”https://static.core-tnn1.exptech.dev/api/v2/tiles/satellite/{channel}/{style}/{time}/{z}/{x}/{y}.webp channelバンド 1–16、または派生レイヤー名です。
stylenormal、jma、bd のいずれかです。効くのはバンド 7–16 だけです。バンド 1–6 と派生レイヤーは normal を入れてください。
timeUnix 秒。リストにある値を使ってください。同じ 10 分区間のどの秒も、同じシーンに対応します。
zズームレベル。0–11。範囲外は 1 × 1 の透明 GIF を返します。
xXYZ タイルの列番号です。
yXYZ タイルの行番号です(北から南)。
curl -o output.webp "https://static.core-tnn1.exptech.dev/api/v2/tiles/satellite/<channel>/<style>/<time>/<z>/<x>/<y>.webp"const res = await fetch("https://static.core-tnn1.exptech.dev/api/v2/tiles/satellite/<channel>/<style>/<time>/<z>/<x>/<y>.webp");if (!res.ok) throw new Error(`HTTP ${res.status}`);const blob = await res.blob();import requests
res = requests.get( "https://static.core-tnn1.exptech.dev/api/v2/tiles/satellite/<channel>/<style>/<time>/<z>/<x>/<y>.webp", timeout=10,)res.raise_for_status()with open("output.webp", "wb") as f: f.write(res.content)image/webp、256 × 256、透過チャンネルあり。レイヤーにより非可逆または可逆圧縮。Cache-Control: public, max-age=300 を付けます。z が 0–11 の外のときは、1 × 1 の透明 GIF(image/gif)を返しますbinary image/webp
If-None-Match が ETag と一致。内容なしレスポンスボディなし
channel、style、time、または座標が不正
bad styleその時刻にデータがない。まだ取り込んでいない、または保持期間を過ぎている(application/json)
{ "error": "Data not found for specified timestamp"}サーバーエラー。内容は改行 1 つだけレスポンスボディなし
試してみる
バンドとレイヤー
Section titled “バンドとレイヤー”channel には、元バンドの番号か派生レイヤー名を指定できます。どちらも下表の正規の書き方だけを受け付けます(大文字小文字の違いも、先頭のゼロも 400 になります)。
元のバンド 1-16
Section titled “元のバンド 1-16”| channel | 波長 | 種類 | 見えるもの |
|---|---|---|---|
1 |
0.47 µm | 可視(青) | エーロゾル、砂塵、煙。日中のみ |
2 |
0.51 µm | 可視(緑) | 植生。トゥルーカラーの緑。日中のみ |
3 |
0.64 µm | 可視(赤) | 解像度が最も高い(0.5 km)。雲のテクスチャと地表の輪郭。日中のみ |
4 |
0.86 µm | 近赤外 | 水域は暗く、植生は明るい。海岸線と浸水範囲。日中のみ |
5 |
1.6 µm | 近赤外 | 氷雲と積雪は暗め。雲の相を区別する。日中のみ |
6 |
2.3 µm | 近赤外 | 雲の微物理、地表の高温の熱源。日中のみ |
7 |
3.9 µm | 短波長赤外 | 夜間の霧と下層雲、火災 |
8 |
6.2 µm | 水蒸気 | 上層の水蒸気、ジェット気流、乾燥空気の流入 |
9 |
6.9 µm | 水蒸気 | 中層の水蒸気 |
10 |
7.3 µm | 水蒸気 | 下層の水蒸気輸送 |
11 |
8.6 µm | 赤外 | 雲相、SO₂ |
12 |
9.6 µm | オゾン | 成層圏オゾン |
13 |
10.4 µm | 赤外(大気の窓) | 実際の雲頂・地表温度に最も近い。最もよく使う赤外画像 |
14 |
11.2 µm | 赤外 | 長波長赤外 |
15 |
12.4 µm | 赤外 | 13 との差で砂塵と火山灰を識別できる |
16 |
13.3 µm | CO₂ | 雲頂高度、半透明の巻雲 |
バンド 1–6 は反射率のグレースケールです(0% は透明、100% は白)。夜間は画像がありません。バンド 7–16 は昼夜とも画像があり、style で色階を切り替えられます。
style(バンド 7-16 のみ)
Section titled “style(バンド 7-16 のみ)”| style | 説明 |
|---|---|
normal |
気象庁で慣用のグレースケール。冷たいほど白くなります。290 K は透明、208 K は完全な白で不透明です |
jma |
雲頂の強調。暖かい雲はグレースケールのまま、最も冷たい雲頂に色を付けます(暖かい側が青、冷たい側が赤の連続階調) |
bd |
Dvorak の BD 曲線。台風強度の解析に使う階段状の色階です。区切りは +9、−30、−41、−53、−63、−69、−75、−81 °C です |
バンド 1–6 とすべての派生レイヤーは style を無視します。ただし URL にはこの部分が必要なので、normal を入れてください。
派生レイヤー(20 種)
Section titled “派生レイヤー(20 種)”| channel | 内容 | 構成 | 更新 |
|---|---|---|---|
truecolor |
トゥルーカラー RGB(気象庁の配合)。肉眼に近い。日中のみ | バンド 3/2/1 | 10 分 |
naturalcolor |
ナチュラルカラー RGB。氷雲と水雲、植生と裸地を区別する。日中のみ | バンド 5/4/3 | 10 分 |
ash |
火山灰 RGB(気象庁の配合)。火山灰と SO₂ の噴煙 | 13−15/11−13/13 | 10 分 |
dust |
ダスト RGB(気象庁の配合)。砂塵、黄砂 | 13−15/11−13/13 | 10 分 |
airmass |
気団 RGB(気象庁の配合)。乾燥した成層圏の空気の流入と、暖湿な気団 | 10−8/13−12/8 | 10 分 |
nightmicrophysics |
夜間マイクロ物理 RGB(気象庁の配合)。夜間の霧と下層雲 | 13−15/7−13/13 | 10 分 |
watervapor |
水蒸気(6.2 µm)。昼夜とも使えます | バンド 8 | 10 分 |
btd_split |
スプリットウィンドウ差。砂塵・火山灰と通常の雲で符号が逆になります | 13 − 15 | 10 分 |
btd_fog |
夜間の霧と下層雲 | 7 − 13 | 10 分 |
btd_wvirw |
オーバーシューティングトップ(深い対流) | 8 − 13 | 10 分 |
btd_so2 |
火山性 SO₂、雲相 | 11 − 13 | 10 分 |
btd_co2 |
薄い巻雲、雲高 | 16 − 13 | 10 分 |
btd_ozone |
オゾン、対流圏界面の折れ込み | 12 − 13 | 10 分 |
cloudtop |
雲頂温度(NOAA のリトリーバル)。190–300 K | NOAA の雲頂高度プロダクト | 1 時間ごと |
cloudmask |
4 段階の雲マスク(晴天から有雲) | NOAA の雲マスクプロダクト | 1 時間ごと |
sst |
海面水温。271.15–305.15 K | NOAA CoastWatch ACSPO | 1 時間ごと |
tpw |
可降水量。0–75 mm | NOAA NESDIS Blended TPW | 1 時間ごと |
ndvi |
植生指数 (B04−B03)/(B04+B03)。雲のある場所は透明 | バンド 4、3 と雲マスク | 1 時間ごと |
ndwi |
水域指数 (B02−B04)/(B02+B04)。雲のある場所は透明 | バンド 2、4 と雲マスク | 1 時間ごと |
mndwi |
改良水域指数 (B02−B06)/(B02+B06)。水域と市街地を区別できる。雲のある場所は透明 | バンド 2、6 と雲マスク | 1 時間ごと |
ndvi、ndwi、mndwi は、大気補正をしていない大気上端の指数です。変化と範囲を見る用途に向き、補正済みの地表面の量としては使えません。
MapLibre GL JS に、あるバンドの最新シーンを追加します。まずリストを取り、累積して最新時刻を出し、タイル URL のテンプレートを raster source に足します。アニメーションの手順はレーダーと同じです。地図タイルの概要を参照してください。
const API = "https://api.core-tnn1.exptech.dev";const STATIC = "https://static.core-tnn1.exptech.dev";
async function addLatestSatellite(map, channel = "13", style = "normal") { const list = await (await fetch(`${API}/api/v2/tiles/satellite/${channel}/list`)).json(); if (list.length === 0) return null; let t = 0; for (const v of list) t += v;
map.addSource("satellite", { type: "raster", tiles: [`${STATIC}/api/v2/tiles/satellite/${channel}/${style}/${t}/{z}/{x}/{y}.webp`], tileSize: 256, minzoom: 0, maxzoom: 11, attribution: "データ出典:気象庁 ひまわり9号(NOAA Open Data 経由)、ExpTech Studio(exptech.dev)", }); map.addLayer({ id: "satellite", type: "raster", source: "satellite", paint: { "raster-opacity": 0.85 } }); return t;}- 時刻が存在しないときは 404 の JSON です。 404 の結果は約 10 秒残ります。リストにある時刻だけを使ってください。約 48 時間を超えたシーンはリストから消えます。
timeは 10 分区間の先頭に揃えられます。同じ区間のどの秒でも、同じシーンが返ります。- 可視バンド(1–6)と
truecolor、naturalcolor、指数レイヤーに画像があるのは日中だけです。リストには夜間の時刻も出ますが、夜側のタイルは透明です。 - 1 時間ごとに更新するレイヤー(
cloudtop、cloudmask、sst、tpw、および 3 種の指数)は、通常、観測バンドより 1.5 時間以上遅れて現れます。一時的にデータがないときは、リストは空配列[]です。 styleはnormal、jma、bdを使ってください。grayはnormalの旧名で、公開タイルホストは受け付けません(400)。channelまたはstyleが不正なときは 400 です。time、z、x、yが整数でないときは 404 です(パスが一致しません)。- 地図には、データライセンスの推奨表記で出典を表示してください。
cloudtop、cloudmask、sst、tpw、および指数レイヤーを使うときは、さらに NOAA を加えてください。
