kopia lustrzana https://github.com/onthegomap/planetiler
108 wiersze
2.6 KiB
Plaintext
108 wiersze
2.6 KiB
Plaintext
@startuml
|
|
!includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/ce5a3ea16aee1b07487f9960633057d102b626a6/C4_Container.puml
|
|
skinparam WrapWidth 80
|
|
skinparam ranksep 10
|
|
skinparam dpi 200
|
|
|
|
LAYOUT_LANDSCAPE()
|
|
HIDE_STEREOTYPE()
|
|
|
|
skinparam rectangle {
|
|
BorderColor<<diagram>> transparent
|
|
BackgroundColor<<diagram>> transparent
|
|
}
|
|
sprite slicing slicing.png
|
|
|
|
Boundary(input, "**1) Process Input Files**") {
|
|
Boundary(simple, "Read Simple Sources", "Natural Earth & Shapefiles") {
|
|
System(sr, "Reader")
|
|
}
|
|
|
|
Boundary(osm, "Read OpenStreetMap Data", ".osm.pbf files") {
|
|
System(profile2, "Profile")
|
|
Boundary(pass1, "pass 1") {
|
|
System(osm1n, "Nodes")
|
|
System(osm1w, "Ways")
|
|
System(osm1r, "Relations")
|
|
' enforce ordering
|
|
osm1r -[hidden]> osm1w
|
|
osm1w -[hidden]> osm1n
|
|
}
|
|
BiRel_Up(osm1r, profile2, " ")
|
|
SystemDb(osmnl, "Node locations")
|
|
SystemDb(osmmem, "Relation Members")
|
|
SystemDb(osmmp, "Multipolygon geometries")
|
|
SystemDb(osmrl, "Relation Info")
|
|
Boundary(pass2, "pass 2") {
|
|
System(osm2n, "Nodes")
|
|
System(osm2w, "Ways")
|
|
System(osm2r, "Relations")
|
|
' enforce ordering
|
|
osm2r -[hidden]> osm2w
|
|
osm2w -[hidden]> osm2n
|
|
}
|
|
Rel(osm1n, osmnl, " ")
|
|
Rel(osm1r, osmmem, " ")
|
|
Rel(osm1r, osmrl, " ")
|
|
|
|
Rel(osmnl, osm2w, " ")
|
|
Rel(osmmem, osm2w, " ")
|
|
Rel(osmrl, osm2w, " ")
|
|
Rel_Left(osm2w, osmmp, " ")
|
|
Rel(osmmp, osm2r, " ")
|
|
}
|
|
|
|
Boundary(workers, "Process Workers", "1 per core") {
|
|
System(profile, "Profile")
|
|
System(render, "Render Vector Tile Features")
|
|
}
|
|
|
|
' slicing diagram
|
|
rectangle "<$slicing{scale=0.5}>" as slicing <<diagram>>
|
|
slicing -[hidden]> render
|
|
|
|
System(writer, "Writer")
|
|
|
|
Rel(sr, profile, " ")
|
|
Rel(osm2n, profile, " ")
|
|
Rel(osm2w, profile, " ")
|
|
Rel(osm2r, profile, " ")
|
|
|
|
Rel(profile, render, " ")
|
|
Rel(render, writer, " ")
|
|
}
|
|
|
|
Boundary(sort, "**2) Sort Features**") {
|
|
SystemDb(fc1, "Chunk")
|
|
SystemDb(fc2, "Chunk")
|
|
SystemDb(fc3, "Chunk")
|
|
' enforce ordering
|
|
fc1 -[hidden]> fc2
|
|
fc2 -[hidden]> fc3
|
|
System(sorters, "Sort Workers\n1 per core")
|
|
BiRel_Up(fc3, sorters, " ")
|
|
}
|
|
|
|
Rel(writer, fc1, " ")
|
|
Rel(writer, fc2, " ")
|
|
Rel(writer, fc3, " ")
|
|
|
|
Boundary(mbtiles, "**3) Emit Vector Tiles**") {
|
|
System(mbtread, "Read Features\nand group into tiles")
|
|
System(mbtprocess, "Encode & gzip\n1 worker per core")
|
|
System(mbtwriter, "Batched Writer")
|
|
}
|
|
|
|
SystemDb(mbtilesdb, "MBTiles", "x,y,z,data")
|
|
|
|
Rel(fc1, mbtread, " ")
|
|
Rel(fc2, mbtread, " ")
|
|
Rel(fc3, mbtread, " ")
|
|
Rel(mbtread, mbtprocess, " ")
|
|
Rel(mbtprocess, mbtwriter, " ")
|
|
Rel(mbtwriter, mbtilesdb, " ")
|
|
|
|
|
|
@enduml
|
|
|