# AI for Good at Meta の HDX データのミラー

AI for Good at Meta (旧 Data for Good at Meta) が [Humanitarian Data Exchange (HDX)](https://data.humdata.org/organization/meta) で配っている CC BY のデータセットのうち 4 つを、元のファイルのままと、HTTP Range 要求で必要な列と行だけ読める Parquet の両方で置いたもの。

- [Movement Distribution](#movement-distribution) (movement-distribution/)
- [Movement Range Maps](#movement-range-maps) (movement-range-maps/)
- [Commuting Zones](#commuting-zones) (commuting-zones/)
- [Business Activity Trends during Crisis](#facebook-business-activity-trends-during-crisis) (facebook-business-activity-trends-during-crisis/)

元のファイルは合計 1,245,212,427 bytes、Parquet は合計 202,882,696 bytes。

## 出典の表示

HDX の記載どおり CC BY (Creative Commons Attribution International) で、ここでは CC BY 4.0 として扱う。利用する際は、データセットごとに次のように表示すること。

- Data for Good at Meta, Movement Distribution, Humanitarian Data Exchange (https://data.humdata.org/dataset/movement-distribution)
- Data for Good at Meta, Movement Range Maps, Humanitarian Data Exchange (https://data.humdata.org/dataset/movement-range-maps)
- Data for Good at Meta, Commuting Zones, Humanitarian Data Exchange (https://data.humdata.org/dataset/commuting-zones)
- Data for Good at Meta, Business Activity Trends during Crisis, Humanitarian Data Exchange (https://data.humdata.org/dataset/facebook-business-activity-trends-during-crisis)

加工の中身は [LICENSE](LICENSE) にある。

## 読み方

どの Parquet も zstd で圧縮し、国と区域と日付の順に並べてある (Business Activity Trends は災害ごと)。DuckDB の httpfs なら、国で絞ると読む行グループが少なくて済む。

```sql
-- 台東区の Movement Distribution
select ds, home_to_ping_distance_category, distance_category_ping_fraction
from 'https://z.yuiseki.net/static/hdx-meta/movement-distribution/movement_distribution_2026.parquet'
where country = 'JPN' and gadm_id = 'JPN.41.51_1' order by ds;

-- 年ごとのファイルは並べて読む (HTTP の URL には * が使えない)
select * from read_parquet([
  'https://z.yuiseki.net/static/hdx-meta/movement-range-maps/movement_range_2020.parquet',
  'https://z.yuiseki.net/static/hdx-meta/movement-range-maps/movement_range_2021.parquet',
  'https://z.yuiseki.net/static/hdx-meta/movement-range-maps/movement_range_2022.parquet'
]) where country = 'JPN' and polygon_id = 'JPN.41.51_1';
```

どのファイルも 512MB 未満にしてある (それを超えると Cloudflare がキャッシュせず、初回の Range 要求に全体を返す)。Movement Distribution は年ごとにファイルが分かれ、年が変わると `movement_distribution_2027.parquet` のように増える。

## movement-distribution

Movement Distribution ([HDX](https://data.humdata.org/dataset/movement-distribution))。ライセンスは HDX の記載で Creative Commons Attribution International (CC BY)。

住んでいる場所 (夜にいることが多い場所) から、その日どれだけ離れたかの分布。行政区域 (GADM) × 日 × 距離の区分 (`0`、`(0, 10)`、`[10, 100)`、`100+`、単位は km) ごとに、その区分の人の割合 (`distance_category_ping_fraction`) を持つ。作り方と注意は [README の PDF](movement-distribution/original/movement-distribution-readme-data-for-good-at-meta.pdf) にある。

- HDX には直近の約 90 日しか残らない。ここでは HDX から消えた元のファイルも消さずに残し、手元にある CSV すべてから Parquet を作り直す。HDX から消えたもの: まだ無し。
- 期間の境目の日が 2 つのファイルに入っていることがある。同じ区域・区分・日の行が複数のファイルにあるときは、HDX の更新日が新しいファイルの行を残した。落とした行は 617,668 行で、そのうち値が残した行と違うものは 0 行 (内訳: movement-distribution-1-june-15-june-2026.csv の 308,752 行 (2026-06-15〜2026-06-16)、movement-distribution-2026-07-17_to_2026-08-01.csv の 154,472 行 (2026-08-01)、movement-distribution-2026_june_27-2026_july_01.csv の 154,444 行 (2026-07-01))。どのファイルの行かは `source_file` 列にある。
- 同じ日が 2 つのファイルに分かれて入っていることもある (2026-06-19、2026-06-23、2026-06-27)。区域は重ならないので、両方を残している。
- ファイルの名前が示す期間の日がすべてあるとは限らない。2026-06-01〜2026-08-31 のうち、無い日は 16 日 (08-04、08-05、08-07、08-09、08-10、08-13、08-17、08-19、08-20、08-21、08-22、08-24、08-26、08-28、08-29、08-30)。どのファイルにも入っていない (例: 2026-08-18〜08-31 のファイルにある日は 5 日だけ)。
- 雑音が足されているため、割合が負の行があり、4 区分の和も 1 にならない。値はそのまま置いている。
- `polygon_level` は 0 (国)、1、2 の整数。`gadm_id` は文字列。
- 年ごとに 1 ファイル (`movement_distribution_<年>.parquet`)。country、gadm_id、ds、区分の順に並べてある。

### Parquet

| ファイル | 行数 | 大きさ (bytes) | 期間 |
|---|---:|---:|---|
| [movement_distribution_2026.parquet](movement-distribution/movement_distribution_2026.parquet) | 11,735,260 | 89,054,310 | 2026-06-01〜2026-08-31 |

### 元のファイル (movement-distribution/original/)

| ファイル | HDX での名前 | 大きさ (bytes) | HDX の更新日 | HDX に |
|---|---|---:|---|---|
| [meta-movement-distribution-maps_2026-08-18_to_2026-08-31.csv](movement-distribution/original/meta-movement-distribution-maps_2026-08-18_to_2026-08-31.csv) | Meta Movement Distribution Maps_2026-08-18_to_2026-08-31_.csv | 61,028,653 | 2026-09-16 | あり |
| [meta-movement-distributions-maps_2026-08-01_to_08-16.csv](movement-distribution/original/meta-movement-distributions-maps_2026-08-01_to_08-16.csv) | Meta Movement Distributions Maps_2026-08-01_to_08-16.csv | 122,061,926 | 2026-09-05 | あり |
| [movement-distribution-1-june-15-june-2026.csv](movement-distribution/original/movement-distribution-1-june-15-june-2026.csv) | Movement Distribution 1 June - 15 June, 2026 | 195,156,308 | 2026-07-08 | あり |
| [movement-distribution-15_june_2026-19_june_2026.csv](movement-distribution/original/movement-distribution-15_june_2026-19_june_2026.csv) | Movement Distribution 15_June_2026-19_June_2026.csv | 43,987,887 | 2026-07-23 | あり |
| [movement-distribution-2026-07-17_to_2026-08-01.csv](movement-distribution/original/movement-distribution-2026-07-17_to_2026-08-01.csv) | Movement Distribution 2026-07-17_to_2026-08-01..csv | 195,205,665 | 2026-08-12 | あり |
| [movement-distribution-2026_june_19-2026_june_23.csv](movement-distribution/original/movement-distribution-2026_june_19-2026_june_23.csv) | Movement Distribution 2026_June_19-2026_June_23.csv | 43,981,952 | 2026-07-23 | あり |
| [movement-distribution-2026_june_23-2026_june_27.csv](movement-distribution/original/movement-distribution-2026_june_23-2026_june_27.csv) | Movement Distribution 2026_June_23-2026_June_27.csv | 43,986,206 | 2026-07-23 | あり |
| [movement-distribution-2026_june_27-2026_july_01.csv](movement-distribution/original/movement-distribution-2026_june_27-2026_july_01.csv) | Movement Distribution 2026_June_27-2026_July_01.csv | 43,989,919 | 2026-07-23 | あり |
| [movement-distribution-maps_2026-07-01_to_2026-07-04.csv](movement-distribution/original/movement-distribution-maps_2026-07-01_to_2026-07-04.csv) | Movement Distribution Maps_2026-07-01_to_2026-07-04.csv | 48,829,047 | 2026-07-23 | あり |
| [movement-distribution-maps_2026-07-05_to_2026-07-08.csv](movement-distribution/original/movement-distribution-maps_2026-07-05_to_2026-07-08.csv) | Movement Distribution Maps_2026-07-05_to_2026-07-08.csv | 48,807,641 | 2026-07-23 | あり |
| [movement-distribution-maps_2026-07-09_to_2026-07-12.csv](movement-distribution/original/movement-distribution-maps_2026-07-09_to_2026-07-12.csv) | Movement Distribution Maps_2026-07-09_to_2026-07-12.csv | 48,818,584 | 2026-07-23 | あり |
| [movement-distribution-maps_2026-07-13_to_2026-07-16.csv](movement-distribution/original/movement-distribution-maps_2026-07-13_to_2026-07-16.csv) | Movement Distribution Maps_2026-07-13_to_2026-07-16.csv | 48,830,570 | 2026-07-23 | あり |
| [movement-distribution-readme-data-for-good-at-meta.pdf](movement-distribution/original/movement-distribution-readme-data-for-good-at-meta.pdf) | Movement Distribution Readme - Data for Good at Meta.pdf | 120,831 | 2024-01-18 | あり |

## movement-range-maps

Movement Range Maps ([HDX](https://data.humdata.org/dataset/movement-range-maps))。ライセンスは HDX の記載で Creative Commons Attribution International (CC BY)。

COVID-19 の外出自粛への反応を見るためのデータで、2022-05-22 で更新を終えている。行政区域 × 日ごとに、訪れた Bing タイルの数の基準 (2020 年 2 月の曜日ごとの値) からの変化率 (`all_day_bing_tiles_visited_relative_change`) と、1 日中 1 つのタイルから出なかった人の割合 (`all_day_ratio_single_tile_users`) を持つ。列の説明は [how-to-understand-this-data.txt](movement-range-maps/original/how-to-understand-this-data.txt) にある (2 つの zip の中の README.txt と同じもの)。

- 2 つの zip の中の TSV 1 本ずつ (2020-03-01〜2020-12-31 と 2021-01-01〜2022-05-22) を読み、年ごとに 1 ファイルにした。期間の重なりは無く、同じ区域・日の行も無い。
- 区域は GADM (`polygon_source` が `GADM`) と、米国の郡の FIPS (`FIPS`)。基準は GADM が `full_february`、FIPS が `full_february_except_presidents_day`。
- 名前に長音記号などの入る区域は `polygon_name` が文字列の `NA` になっている (元のとおり。898 区域、台東区 `JPN.41.51_1`、江東区、文京区など)。結合は `polygon_id` で行うこと。
- 2020 年の zip は HDX の API が示す大きさ (56,561,599 bytes) と実際に配られるファイル (56,560,052 bytes) が違う。配られたものの MD5 が S3 の ETag と一致することを確かめて置いている。
- 2020 年の zip にある `__MACOSX/` は読んでいない (元の zip はそのまま置いてある)。
- country、polygon_id、ds の順に並べてある。

### Parquet

| ファイル | 行数 | 大きさ (bytes) | 期間 |
|---|---:|---:|---|
| [movement_range_2020.parquet](movement-range-maps/movement_range_2020.parquet) | 5,229,342 | 38,689,384 | 2020-03-01〜2020-12-31 |
| [movement_range_2021.parquet](movement-range-maps/movement_range_2021.parquet) | 5,287,242 | 38,271,294 | 2021-01-01〜2021-12-31 |
| [movement_range_2022.parquet](movement-range-maps/movement_range_2022.parquet) | 1,662,956 | 12,137,008 | 2022-01-01〜2022-05-22 |

### 元のファイル (movement-range-maps/original/)

| ファイル | HDX での名前 | 大きさ (bytes) | HDX の更新日 | HDX に |
|---|---|---:|---|---|
| [how-to-understand-this-data.txt](movement-range-maps/original/how-to-understand-this-data.txt) | How To Understand This Data.txt | 961 | 2022-05-24 | あり |
| [movement-range-data-2020-03-01--2020-12-31.zip](movement-range-maps/original/movement-range-data-2020-03-01--2020-12-31.zip) | movement-range-data-2020-03-01--2020-12-31.zip | 56,560,052 | 2021-07-27 | あり |
| [movement-range-data-2022-05-22.zip](movement-range-maps/original/movement-range-data-2022-05-22.zip) | movement-range-data-2022-05-22.zip | 73,054,975 | 2022-05-24 | あり |

## commuting-zones

Commuting Zones ([HDX](https://data.humdata.org/dataset/commuting-zones))。ライセンスは HDX の記載で Creative Commons Attribution International (CC BY)。

通勤圏 (Commuting Zones)。人の移動のまとまりから求めた、都市とその周りの通勤の範囲のポリゴン (2023 年 3 月版)。1 行が 1 つの通勤圏で、推定人口 (`win_population`)、道路の長さ (`win_roads_km`)、面積 (`area`) を持つ。

- GeoParquet。元の CSV の WKT (`geography` 列、WGS 84) から `geometry` 列を作った。WKT の文字列も元のまま残してある。
- 33 個の通勤圏 (Juneau、Zadar、Stanley など、海岸線の細かいもの) は、元の CSV の WKT が 32,759 文字で切れていて、ポリゴンとして読めない。これらは `geometry` が NULL で、`geometry_truncated` が true。表計算ソフトの 1 セルの上限 (32,767 文字) で切れたものと思われる。
- ほかに 1 個の通勤圏の geometry が ST_IsValid で false になる (そのまま置いている)。
- `win_population` は上下が切りそろえてあるように見える (winsorize、列名の win はこれと思われる)。最大値 4,442,659.362 と最小値 1,924.466 に 328 ずつ (全体の 5%) の通勤圏が並び、日本でも名古屋、大阪、千葉、横浜、さいたまが同じ値になる。大都市の人口の比較には使えない。
- `cz_gen_ds` は元のとおりの文字列 (`3/5/23`、2023-03-05 のことと思われる)。`fbcz_id_num` は整数、`fbcz_id` は文字列。
- country (英語の国名)、fbcz_id の順に並べてある。

### Parquet

| ファイル | 行数 | 大きさ (bytes) | 期間 |
|---|---:|---:|---|
| [commuting_zones.parquet](commuting-zones/commuting_zones.parquet) | 6,541 | 13,620,608 | |

### 元のファイル (commuting-zones/original/)

| ファイル | HDX での名前 | 大きさ (bytes) | HDX の更新日 | HDX に |
|---|---|---:|---|---|
| [data-for-good-at-meta-commuting-zones-march-2023.csv](commuting-zones/original/data-for-good-at-meta-commuting-zones-march-2023.csv) | data-for-good-at-meta-commuting-zones-march-2023.csv | 16,526,463 | 2025-05-12 | あり |

## facebook-business-activity-trends-during-crisis

Business Activity Trends during Crisis ([HDX](https://data.humdata.org/dataset/facebook-business-activity-trends-during-crisis))。ライセンスは HDX の記載で Creative Commons Attribution International (CC BY)。

災害の前後で、Facebook のビジネスページの活動がどう変わったか。行政区域 × 業種 (`business_vertical`) × 日ごとに、その日の活動が平時の分布のどの分位にあたるか (`activity_quantile`) を持つ。5 つの災害の CSV を 1 つにまとめ、`crisis` 列 (ファイル名から取った災害の名前) と `source_file` 列を足した。

| crisis | 行数 | 期間 | country |
|---|---:|---|---|
| flooding-central-eastern-europe | 703,220 | 2024-09-16〜2024-10-13 | AUT CZE DEU HUN MDA POL ROU SVK |
| flooding-rio-grande-do-sul-brazil | 247,680 | 2024-05-01〜2024-07-09 | BR |
| hurricane-beryl | 643,421 | 2024-06-30〜2024-10-21 | BLZ BRB CYM GRD GTM HND JAM LCA MEX NIC SLV TTO USA VCT |
| hurricane-helene | 273,904 | 2024-09-26〜2024-10-21 | USA |
| la_wildfires-usa | 19,786 | 2025-01-07〜2025-03-10 | USA |

- ファイルによって列が違う。ブラジルの洪水のファイルだけ `polygon_level` (`GADM2`)、`polygon_version` (`3.6`)、`latitude`、`longitude` を持ち、ほかのファイルではこれらは NULL。
- ブラジルのファイルの country は 2 文字の `BR`、ほかは 3 文字 (`USA`、`ROU` など)。元のとおり。
- 業種の無い行が、ブラジルのファイルでは空 (NULL)、ほかのファイルでは文字列の `NA` になっている。`All` とは別の行。元のとおり。
- hurricane-helene、hurricane-beryl、la_wildfires-usa の 3 ファイルには、同じ区域・業種・日の行が 2 つ以上あるものが多く、値も少しずつ違う。どちらが正しいかは分からないので、両方そのまま置いている。
- crisis、country、polygon_id、business_vertical、ds の順に並べてある。

### Parquet

| ファイル | 行数 | 大きさ (bytes) | 期間 |
|---|---:|---:|---|
| [business_activity_trends.parquet](facebook-business-activity-trends-during-crisis/business_activity_trends.parquet) | 1,888,011 | 10,348,668 | 2024-05-01〜2025-03-10 |

### 元のファイル (facebook-business-activity-trends-during-crisis/original/)

| ファイル | HDX での名前 | 大きさ (bytes) | HDX の更新日 | HDX に |
|---|---|---:|---|---|
| [business-activity-trends-crisis-flooding-rio-grande-do-sul-brazil-20240501-20240709.csv](facebook-business-activity-trends-during-crisis/original/business-activity-trends-crisis-flooding-rio-grande-do-sul-brazil-20240501-20240709.csv) | business-activity-trends-crisis-flooding-rio-grande-do-sul-brazil - 20240501-20240709.csv | 29,814,054 | 2026-05-11 | あり |
| [business-activity-trends-crisis-hurricane-beryl-20240630-20241021.csv](facebook-business-activity-trends-during-crisis/original/business-activity-trends-crisis-hurricane-beryl-20240630-20241021.csv) | business-activity-trends-crisis-hurricane-beryl-20240630-20241021.csv | 50,121,698 | 2024-10-30 | あり |
| [business-activity-trends-crisis-hurricane-helene-20240926-20241021.csv](facebook-business-activity-trends-during-crisis/original/business-activity-trends-crisis-hurricane-helene-20240926-20241021.csv) | business-activity-trends-crisis-hurricane-helene-20240926-20241021.csv | 20,552,723 | 2024-10-30 | あり |
| [business-activity-trends-crisis-la_wildfires-usa-20250107-20250310.csv](facebook-business-activity-trends-during-crisis/original/business-activity-trends-crisis-la_wildfires-usa-20250107-20250310.csv) | business-activity-trends-crisis-LA_wildfires-USA-20250107-20250310.csv | 1,499,220 | 2025-03-13 | あり |
| [business-activity-trends-flooding-central-eastern-europe-20240916-20241013.csv](facebook-business-activity-trends-during-crisis/original/business-activity-trends-flooding-central-eastern-europe-20240916-20241013.csv) | business-activity-trends-flooding-central-eastern-europe-20240916-20241013.csv | 52,277,092 | 2024-10-30 | あり |

## 更新

取得は 2026-09-29T16:20:41+09:00。Movement Distribution は HDX に直近の約 90 日しか残らず、2 週間ごとに新しいファイルが足されて古いものが消える。取得スクリプト (study-geoai-algo-py の scripts/mirror_hdx_meta.py) を流し直すと、新しいファイルだけを落とし、HDX から消えたファイルも消さずに残したまま、手元にある元のファイルすべてから Parquet を作り直す。

新しく落としたファイルは、サーバーの示す長さと、S3 の ETag が MD5 のときはその MD5 と一致することを確かめてから置く。記録の本体は [manifest.json](manifest.json) (resource id、HDX での名前と URL と大きさ、更新日、sha256、取得時刻)。この README と LICENSE は、スクリプトを流すたびに作り直される。
