P-Tree production download: quick start

Documentation index · Generation pipeline · Cloud-atmosphere notes · Source profile

This is the short, production-safe path from a new P-Tree account to the six Cloud-atmosphere maps. The workflow downloads a credentialed Himawari cloud NetCDF from P-Tree plus public JAXA Earth COGs, prepares one H3 snapshot, verifies it, and renders it. Run repository commands from the cartofreako checkout root.

1. Request a P-Tree account

  1. Read the current P-Tree registration precautions and terms of use.
  2. Submit the registration form and complete the emailed application.
  3. Wait for the completion email containing the FTP account information.

Approval is not immediate; JAXA says it may take a couple of days. This repository uses the account only for the P-Tree cloud product. The other three atmosphere sources are public JAXA Earth STAC assets.

2. Store the credential safely

The fetcher deliberately reads the standard user-level ~/.netrc. It does not accept a password on the command line and does not copy credentials into raw or prepared manifests.

If ~/.netrc does not exist, create it with owner-only permissions:

(umask 077 && touch ~/.netrc)
chmod 600 ~/.netrc

Open the file in an editor and add the account supplied by JAXA:

machine ftp.ptree.jaxa.jp
  login YOUR_P_TREE_ACCOUNT
  password YOUR_P_TREE_PASSWORD

If the file already contains credentials for other services, append this machine block; do not replace the existing file. Never put .netrc, the account, or the password inside this repository, a command line, a shell transcript, or an issue report.

3. Install the JAXA certificate root

JAXA P-Tree’s current FTPS chain terminates at SECOM TLS RSA Root CA 2024, which may not yet be present in the operating-system CA bundle. Install the official root in private per-user Cartofreako data:

make install-jaxa-certificate

The installer downloads the PEM certificate only from SECOM’s HTTPS root repository, verifies that its certificate SHA-256 is exactly 1435f225c5d252d7a21948cc3ce62aecfa88001e3dd72d1cc3555100eb372f93, checks that it is a current self-signed trust anchor, and installs it with mode 600 beneath ${XDG_DATA_HOME:-~/.local/share}/cartofreako/certs/. It does not modify the system trust store. authorize-external and the production fetcher discover that location automatically.

Set PTREE_CACERT to an absolute path when a different private destination is required:

make PTREE_CACERT=/absolute/path/secom-tls-rsa-root-ca-2024.pem \
  install-jaxa-certificate

Do not download a similarly named certificate from an unverified mirror and do not work around certificate failures with --insecure.

4. Test only the P-Tree login

The repository check uses the same implicit FTPS endpoint, private certificate, and .netrc lookup as the fetcher:

make EXTERNAL_PASSES=jaxa-ptree authorize-external

Success reports that JAXA P-Tree and the requested optional passes are ready. The P-Tree FAQ confirms FTPS port 990 and notes that a web browser is not an FTP client.

5. Fetch, prepare, verify, and render

First confirm the local compiler, H3, GDAL NetCDF/GeoTIFF drivers, utilities, font, and rendering tools:

make check-prerequisite

For one internally consistent and reproducible run, capture the current UTC instant once and let every stage inherit it:

export SOURCE_DATE_EPOCH="$(date -u +%s)"

make fetch-cloud-atmosphere-data
make prepare-cloud-atmosphere-data
make verify-cloud-atmosphere-data
make generate-cloud-atmosphere

unset SOURCE_DATE_EPOCH

The fixed instant is optional but recommended. Without it, fetch and render sample their own process-start clocks. P-Tree selection uses the newest published observation ending no later than that instant, even when archive publication lags the preferred target. The fetch log, manifest, SVG legend, and SVG metadata retain every layer’s exact source interval, age, policy, and preferred freshness target. An older latest-available observation is labeled rather than making an already verified offline snapshot expire.

To export SVG, PDF, and PNG after verification, replace the final generation command with:

make generate-cloud-atmosphere-artifacts

Or run the same complete credentialed sequence—including the authorization check—with one target:

make EXTERNAL_PASSES=jaxa-ptree generate-authorized-external

That wrapper runs the fetch, preparation, verification, and full SVG/PDF/PNG artifact target. If the per-user certificate is missing, the wrapper installs and fingerprint-verifies it before authorization. It is intentionally separate from authorize-external, which remains read-only and therefore expects the certificate to have been installed already. Only after the complete workflow succeeds does it record jaxa-ptree in the local ignored state file, enabling the prepared cloud artifact graph in later make all runs.

6. Confirm the result

The fetch stage writes ignored operational inputs under:

assets.static/cloud-atmosphere/.raw/cloud-atmosphere-fetch-manifest.json
assets.static/cloud-atmosphere/.raw/YYYYMMDDHHMMSS/

Inspect the selected source intervals and number of downloaded tiles:

jq '{process_start_utc,
     observations: [.observations[] |
       {source, start_utc, end_utc, files: (.files | length)}]}' \
  assets.static/cloud-atmosphere/.raw/cloud-atmosphere-fetch-manifest.json

Preparation verifies every raw SHA-256 digest before writing:

assets.static/cloud-atmosphere/.prepared/cloud-atmosphere-latest.geojson
assets.static/cloud-atmosphere/.prepared/cloud-atmosphere-latest.manifest.json

The explicit verify command must finish with Verified cloud-atmosphere snapshot. Successful generation then writes six cloud-atmosphere-*.svg files under each assets.generated/PROJECTION/svg/ directory. Missing cells in those maps mean unobserved, not clear sky and not zero.

Raw rasters and prepared snapshots are intentionally ignored by Git. They can be large and must not be committed or redistributed merely because they were downloaded successfully.

Troubleshooting

Symptom What to check
curl: (67) or login denied Confirm the completion email arrived, the machine name is exactly ftp.ptree.jaxa.jp, the login/password block is in the current user’s ~/.netrc, and the file mode is 600.
Timeout or connection refused Confirm outbound TCP port 990 is allowed. Check the P-Tree FAQ and site status and retry later; JAXA notes that traffic can become busy.
curl: (60) with unable to get local issuer certificate Run make install-jaxa-certificate, confirm its published SHA-256 check passes, and retry. Use PTREE_CACERT=/absolute/path only for an intentional alternate private location. Do not add --insecure.
curl: (9) Server denied you to change to the given directory from an older checkout Update to the latest resolver. It follows the month/day/hour directories actually advertised by P-Tree instead of guessing that the current UTC directory already exists.
P-Tree supplied no matching H09 CLP NetCDF Confirm the product-root listing contains H09 L2CLP010 data and that SOURCE_DATE_EPOCH is not before the archive. This is distinct from authorization, which is checked first.
A selected source is older than its preferred target This is allowed for the newest published observation ending no later than process start. Review the exact source interval, age, and latest available label in the generated legend. Refresh before publication when a newer observation is required.
A public JAXA collection cannot be resolved Retry in case the static catalog is temporarily unavailable, then compare the collection IDs in the source profile with the live JAXA Earth STAC root.
Missing GDAL NetCDF or GeoTIFF support Run make check-prerequisite and install the missing GDAL drivers before preparation.
Checksum mismatch during preparation or verification Treat the staged data as incomplete or modified. Rerun fetch/preparation; do not edit the digest or snapshot to force acceptance.
A layer is labeled latest available The selected observation exceeded its preferred target but remains valid as the newest source in the authorized snapshot. Refresh the snapshot for a current-data product; do not edit its date or suppress the label.

An interrupted fetch is safe to rerun. The workflow stages downloads before replacing the active raw manifest, and preparation installs the verified snapshot separately. P-Tree also limits simultaneous connections and session duration, so avoid launching many fetches in parallel.

Before publishing output

Review the current P-Tree registration conditions, terms, and user guide for the selected observation date and intended use. They govern account security, use, redistribution, acknowledgment, and reporting. The generated SVG includes source credit, but that metadata does not replace the operator’s obligations.