Skip to main content

Print-quality city visualizations from Project PLATEAU data.

Project description

Yodo Labs

prettyplateau

Print-quality city visualizations from Project PLATEAU data.

English · 日本語

PyPI Python 3.11+ License: MIT Data: CC BY 4.0

🌐 Try it live → — render any city in your browser, no install (source).


Shibuya — Use Mosaic, generated by prettyplateau
pip install prettyplateau
prettyplateau fetch shibuya          # downloads a prebuilt buildings.parquet
prettyplateau render --city shibuya --preset use_mosaic --out shibuya.png
from prettyplateau import render

render(city="fukuoka", preset="age_rainbow", out="fukuoka.png")

prettyplateau fetch <city> pulls a prebuilt out_<city>/buildings.parquet from the public plateau-bridge release index (sha256-verified) so the renderer works without running the pipeline. ~30 cities are available; see § Data for other ways to get data, including building any of 56+ cities yourself.

What it does

Project PLATEAU is Japan's national 3D urban dataset (56+ cities, CC BY 4.0 from MLIT). Every building carries attributes that OpenStreetMap cannot match — year built, structure type, usage, hazard exposure. prettyplateau is the rendering layer that turns those attributes into poster-quality maps and animations:

Height Topo — Minato's skyline as a topographic ramp (every building binned by height).
Flood Depth — Kōtō's river-flood exposure per building, with hashed grey for no data (never "low risk").
Density Hex — Shinjuku station as a density spike on a 250 m hex lattice.
Building Age Rainbow — Fukuoka coloured by year_built. Buildings without a year stay grey — never inferred.

Browse the live gallery → for the full 31-render launch matrix (or see gallery/ in the repo).

Built-in presets

id type core fields best on
use_mosaic static usage almost every city
height_topo static height dense Tokyo wards, central Osaka
flood_depth static river_flood_* wards along rivers
risk_choropleth static wood × pre-1981 × flood the plan's flagship intersection
wood_survivor static structure + fire_resistance fallback Taitō, Sumida, Kamakura
age_rainbow static year_built Fukuoka, Sapporo
hazard_confluence static overlap of PLATEAU hazards wards with multi-hazard coverage
density_hex static centroid → hex grid any city, cheapest on mega-cities
zoning_mosaic static zoning_use (用途地域) Tokyo / Osaka
survivor_timeline mp4 (60 s) year_built Fukuoka, Sapporo

PLATEAU field coverage varies by city. prettyplateau treats missing data as unknown with a clearly-labelled grey swatch — never silently imputed, never recoloured by a theme.

Themes

prettyplateau render --city shibuya --preset use_mosaic --theme sakura --out shibuya.png

default · print · sakura · summer_matsuri · snow · neon_night

Themes change visual presentation (background, contrast, paper texture); they cannot change data semantics — the reserved palette keys for unknown, no_data, and hazard severity ordering are enforced in code.

Multi-format export

# One data load, three formats:
prettyplateau render --city shibuya --preset use_mosaic \
  --out 'shibuya.{png,svg,pdf}' --sidecar
format use
PNG (4K) social / posters
SVG Illustrator post-processing
PDF (300 dpi) print-ready
mp4 (H.264) animation presets

--sidecar writes {out}.json with the full request + preset metadata for reproducibility.

Custom presets

prettyplateau create-preset my-preset --name "My Preset"
cd prettyplateau_preset_my_preset
pip install -e .
pytest    # green out of the box

Third-party presets register via Python entry points (prettyplateau.presets). The scaffolding command emits a runnable package with a sample preset, palette JSON, smoke test, and pyproject.toml.

Attribution

Every PNG / SVG / PDF / mp4 carries:

© Project PLATEAU / MLIT (CC BY 4.0) · {dataset_id} · {generated_date}

Both as visible text and as file metadata. There is no flag to disable it; themes can't hide it; custom logos can't cover it. This is a hard requirement of the CC BY 4.0 licence under which PLATEAU data is published — see NOTICE.md for the full third-party-notices index.

Data

prettyplateau does not redistribute PLATEAU data. The renderer reads buildings.parquet files produced by plateau-bridge which in turn derives from the public PLATEAU dataset. Three ways to feed the renderer:

Option 1 — fetch a prebuilt bundle (recommended, ~30 cities)

prettyplateau fetch shibuya          # → out_shibuya/buildings.parquet (sha256-verified)
prettyplateau render --city shibuya --preset use_mosaic --out shibuya.png

Bundles come from the public plateau-bridge release index. No pipeline, no CityGML download — just the parquet the renderer needs.

Option 2 — build it yourself with plateau-bridge (any of 56+ cities)

pip install plateau-bridge
plateau build shibuya --out out_shibuya     # processes CityGML locally
prettyplateau render --city shibuya --preset use_mosaic \
  --out shibuya.png --data-root .

(plateau pull shibuya fetches the same prebuilt bundle as Option 1 from the bridge CLI.)

Option 3 — bring your own GeoDataFrame

Construct a prettyplateau.data.access.CityDataset directly and pass it to the preset machinery; see examples/custom_preset.py.

Licensing

PLATEAU data is CC BY 4.0 by Japan's Ministry of Land, Infrastructure, Transport and Tourism (国土交通省). When you publish a prettyplateau output, the visible attribution + file-metadata attribution together satisfy the licence. Do not crop the attribution out — that breaks the licence.

Performance

Render times on an Apple M-series:

City Buildings 2400 px PNG
Shibuya 42 k 18 s
Minato 32 k 27 s
Fukuoka 355 k 120 s
Osaka 615 k 230 s
Yokohama 880 k ~330 s (density_hex only)

Animation: 60-second Fukuoka survivor_timeline.mp4 (180 frames at 3 fps) ≈ 5 min 40 s. See distribution/perf_notes.md for the profile + planned v0.2 4-5× speedup.

Status

0.1.1 — first public release (with PyPI-compatible README image URLs). See CHANGELOG.md.

Contributing

Bug reports, preset PRs, theme PRs, city translation PRs all welcome. See CONTRIBUTING.md for the architecture invariants that PRs need to respect (chief among them: attribution can't be disabled).

Licence

  • Code: MIT (see LICENSE)
  • Bundled fonts: SIL Open Font License 1.1 — Noto Sans CJK JP + Inter
  • Generated outputs: carry PLATEAU's CC BY 4.0 attribution both as visible text and file metadata
  • Third-party notices index: NOTICE.md

Built by Yodo Labs · PixelX Inc. (ピクセルエックス株式会社) · 東京
Questions / partnerships: pan@yodolabs.jp

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prettyplateau-0.1.3.tar.gz (99.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prettyplateau-0.1.3-py3-none-any.whl (14.2 MB view details)

Uploaded Python 3

File details

Details for the file prettyplateau-0.1.3.tar.gz.

File metadata

  • Download URL: prettyplateau-0.1.3.tar.gz
  • Upload date:
  • Size: 99.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for prettyplateau-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5e1d82609cce83d87470b7470b6de253ad82e745731bffe3ff556fa0a1ee3c62
MD5 b3e1ea568145ed1295ecb5b7e7019c18
BLAKE2b-256 4263c99b63f4948efa8fd8a421c76d87b7a869f3815ffee04bafe5f7f22baedd

See more details on using hashes here.

Provenance

The following attestation bundles were made for prettyplateau-0.1.3.tar.gz:

Publisher: release.yml on pixelx-jp/prettyplateau

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file prettyplateau-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: prettyplateau-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for prettyplateau-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 66ab11a628a18a5b92fe98df30f894b437e456a0946017e019ab3420d79ca2a0
MD5 07fd93fc5899ac4fc40d86f74bb5472b
BLAKE2b-256 595f42b32c245b5c62ed96be6d9f65838a2529ed7a99a023fbcb383cbf3bbb0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for prettyplateau-0.1.3-py3-none-any.whl:

Publisher: release.yml on pixelx-jp/prettyplateau

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page