Welcome to the repository of the 3D City Database and software tools documentation starting from version 5.
This page is dedicated to developers. Please find the live version of the user manual here:
This documentation covers the 3D City Database (3DCityDB) v5, a free and open-source package for managing virtual 3D city models:
- 🏗️ Database schema with Feature, Geometry, Appearance, Metadata, and Codelist modules explained.
- 🛠️ citydb-tool for data import/export, database operations, ...
- 📄 Format support for CityGML and CityJSON with CQL2 query language support.
- 🐳 Docker integration for containerized deployment of database and tools.
- 🚀 Getting started guides with setup instructions and migration from previous versions.
- 🔄 Compatibility guide covering CityGML version migration, database upgrades, and format conversion between CityGML 1.0/2.0/3.0 and CityJSON.
This documentation uses a branch-based versioning system with automated deployment via GitHub Actions.
The version information is derived directly from the branch name, following this pattern:
- Main branch (
main): Deploys asedgeversion (latest development documentation) - Release branches (
release-X.Y): Deploy versioned documentation usingmajor.minorformat only
Examples:
release-1.0→ Documentation version1.0release-2.3→ Documentation version2.3release-10.15→ Documentation version10.15
The documentation deployment follows this workflow:
-
Main branch (
main):- Automatically deploys as
edgeversion - Represents the latest development documentation
- Automatically deploys as
-
Release branches (
release-X.Y):- Must be named with major.minor version format (e.g.,
release-1.0,release-2.3) - Automatically deploys versioned documentation
- Creates or updates corresponding GitHub releases with tag
vX.Y - The highest version number among all release branches becomes the
latestversion - The
latestalias points to the most recent stable release
- Must be named with major.minor version format (e.g.,
The GitHub Actions workflow (.github/workflows/ci.yml) automatically:
- Extracts version from the branch name (main → edge, release-X.Y → X.Y)
- Validates branch naming format
- Scans all
release-*branches to determine the latest version - Deploys documentation using mike for version management
- Creates GitHub releases with appropriate tags (vX.Y) for release branches
- Updates the
latestalias to point to the highest version number - Sets the default documentation version to
latest - Manages GitHub release "latest" flag to match the highest version
To create a new documentation release:
- Create a new branch named
release-X.Y(e.g.,release-1.0,release-2.5) - Push the branch - CI will automatically:
- Deploy the new documentation version
- Create a GitHub release with tag
vX.Y - If this is the highest version number, mark it as the new
latest
The CI automatically creates GitHub releases for each release branch:
- Tag format:
vX.Y(e.g.,v1.0,v2.5) - Release name:
Release vX.Y - Latest flag: Automatically set for the highest version number
- Release notes: Include links to documentation and version information
- Tag updates: Tags are automatically updated to point to the latest commit on release branches
- No releases for edge: Main branch (
edge) does not create GitHub releases
To update documentation content for an existing release version:
- Switch to the release branch: Check out the specific
release-X.Ybranch you want to update - Make your changes: Edit the documentation files in the
docs/directory as needed - Commit changes: Commit your updates to the release branch
- Push updates: Push the changes to the remote repository
- Automatic redeployment: The CI workflow will automatically trigger and:
- Redeploy the updated documentation for that version
- Update the git tag to point to the latest commit
- Update the corresponding GitHub release
Important notes:
- The version is automatically derived from the branch name
- GitHub releases and git tags are created/updated automatically for release branches
- Git tags are force-updated to always point to the latest commit on release branches
- Content updates preserve the existing version number and aliases
- The documentation will be redeployed with the same version identifier
- If updating the current
latestversion, the changes will be immediately visible on the default documentation site