Building & Running
Requirements
- JDK 23+
- Gradle 8.12+ (wrapper included in
woosmap-tiles/)
Quick Start
cd woosmap-tiles
# Run tests
./gradlew test
# Build fat jar
./gradlew shadowJar
# Generate tiles for Monaco (downloads sources on first run)
./scripts/generate.sh --area=monaco
Manual Run
java -jar build/libs/woosmap-tiles-0.1.0-SNAPSHOT.jar \
--download \
--area=monaco \
--output=data/output.mbtiles
Common Options
| Flag | Description |
|---|---|
--download |
Download missing source files automatically |
--area=<region> |
Geofabrik region (e.g. monaco, france, planet) |
--output=<path> |
Output path (.mbtiles or .pmtiles) |
--threads=<n> |
Number of processing threads |
--nodemap-type=array |
Use array node map (faster, more memory) |
Visual Verification
After generating tiles, serve them locally with tileserver-gl:
# Install tileserver-gl
npm install -g tileserver-gl-light
# Serve tiles
tileserver-gl-light data/output.mbtiles
# Generate a matching style
cd ..
python -m elzar generate --style=streets -o style/test.json
Then open http://localhost:8080 and point it at the generated style.
Project Structure
woosmap-tiles/
├── build.gradle.kts # Gradle build (Planetiler 0.10.0, Kotlin, Shadow)
├── settings.gradle.kts
├── gradle.properties
├── schema.yml # Reference YAML for simple layers
├── src/main/kotlin/com/woosmap/tiles/
│ ├── WoosmapMain.kt # Entry point
│ ├── WoosmapProfile.kt # Registers all layer handlers
│ ├── layers/
│ │ ├── Water.kt # Water polygons (YAML-eligible)
│ │ ├── Boundaries.kt # Admin boundaries (YAML-eligible)
│ │ └── Roads.kt # Road network (Kotlin-only)
│ └── util/
│ ├── Languages.kt # 85-language name copier
│ └── Networks.kt # Transit network aliases
├── src/test/kotlin/com/woosmap/tiles/
│ └── layers/
│ ├── TestHelper.kt # Shared test utilities
│ ├── WaterTest.kt
│ ├── BoundariesTest.kt
│ └── RoadsTest.kt
└── scripts/
└── generate.sh # Build + run shortcut