Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose pmtiles writer #520

Merged
merged 27 commits into from
Mar 18, 2023
Merged

Expose pmtiles writer #520

merged 27 commits into from
Mar 18, 2023

Conversation

msbarry
Copy link
Contributor

@msbarry msbarry commented Mar 16, 2023

Add support for using new pmtiles writer functionality by changing --output argument to point at a file ending in .pmtiles.

Major changes:

  • Standardize on using the --output=path.mbtiles or --output=path.pmtiles command-line argument to control where the output goes. --mbtiles=output.mbtiles will also continue to work until you upgrade from deprecated setOutput("mbtiles", path) tosetOutput(path).
  • Output can accept a URI instead of just a path string.
  • Instead of global command-line arguments controlling mbtiles output, you can specify them as query parameters on the output string:
    • --compact-db=false becomes --output=out.mbtiles?compact=false
    • --skip-mbtiles-index-creation becomes --output=out.mbtiles?no_index
    • --optimize-db becomes --output=out.mbtiles?vacuum_analyze

Also cleaned up the code since there were quite a few places that assumed mbtiles output:

  • Created common TileArchiveMetadata that describes metadata that pmtiles and mbtiles metadata can hold and pulled metadata interface up into WriteableTileArchive and ReadableTileArchive interfaces.
  • Created TileArchiveConfig that describes the location, format, and options of a tile archive to write to/read from
  • Created TileArchives utility with static factory methods for creating readable and writable archives

@github-actions
Copy link

github-actions bot commented Mar 16, 2023

Base 9945ad4 This Branch 171d090
0:02:27 DEB [archive] - Tile stats:
0:02:27 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:27 DEB [archive] - z1 avg:4k max:4k
0:02:27 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:27 DEB [archive] - z3 avg:4k max:6.4k
0:02:27 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:27 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:27 DEB [archive] - z6 avg:995 max:22k
0:02:27 DEB [archive] - z7 avg:778 max:59k
0:02:27 DEB [archive] - z8 avg:418 max:127k
0:02:27 DEB [archive] - z9 avg:281 max:298k
0:02:27 DEB [archive] - z10 avg:161 max:255k
0:02:27 DEB [archive] - z11 avg:106 max:136k
0:02:27 DEB [archive] - z12 avg:85 max:114k
0:02:27 DEB [archive] - z13 avg:72 max:127k
0:02:27 DEB [archive] - z14 avg:68 max:301k
0:02:27 DEB [archive] - all avg:70 max:301k
0:02:27 DEB [archive] -  # features: 5,427,738
0:02:27 DEB [archive] -     # tiles: 4,115,452
0:02:27 INF [archive] - Finished in 40s cpu:1m19s gc:1s avg:2
0:02:27 INF [archive] -   read    1x(2% 0.9s wait:38s)
0:02:27 INF [archive] -   encode  2x(64% 25s)
0:02:27 INF [archive] -   write   1x(13% 5s wait:32s)
0:02:27 INF - Finished in 2m28s cpu:4m25s gc:5s avg:1.8
0:02:27 INF - FINISHED!
0:02:27 INF - 
0:02:27 INF - ----------------------------------------
0:02:27 INF - 	overall          2m28s cpu:4m25s gc:5s avg:1.8
0:02:27 INF - 	lake_centerlines 4s cpu:8s avg:1.9
0:02:27 INF - 	  read     1x(49% 2s done:2s)
0:02:27 INF - 	  process  2x(8% 0.3s wait:2s done:2s)
0:02:27 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:27 INF - 	water_polygons   31s cpu:54s gc:3s avg:1.8
0:02:27 INF - 	  read     1x(57% 17s sys:1s wait:3s)
0:02:27 INF - 	  process  2x(29% 9s wait:14s)
0:02:27 INF - 	  write    1x(2% 0.7s wait:30s)
0:02:27 INF - 	natural_earth    25s cpu:31s avg:1.2
0:02:27 INF - 	  read     1x(70% 17s sys:3s done:7s)
0:02:27 INF - 	  process  2x(6% 1s wait:17s done:7s)
0:02:27 INF - 	  write    1x(0% 0s wait:18s done:7s)
0:02:27 INF - 	osm_pass1        4s cpu:7s avg:1.8
0:02:27 INF - 	  read     1x(1% 0s wait:3s)
0:02:27 INF - 	  parse    1x(70% 3s)
0:02:27 INF - 	  process  1x(42% 2s wait:2s)
0:02:27 INF - 	osm_pass2        41s cpu:1m21s avg:2
0:02:27 INF - 	  read     1x(0% 0s wait:22s done:19s)
0:02:27 INF - 	  process  2x(75% 31s)
0:02:27 INF - 	  write    1x(1% 0.4s wait:40s)
0:02:27 INF - 	boundaries       0s cpu:0.1s avg:1.6
0:02:27 INF - 	sort             3s cpu:4s avg:1.3
0:02:27 INF - 	  worker  1x(85% 2s)
0:02:27 INF - 	archive          40s cpu:1m19s gc:1s avg:2
0:02:27 INF - 	  read    1x(2% 0.9s wait:38s)
0:02:27 INF - 	  encode  2x(64% 25s)
0:02:27 INF - 	  write   1x(13% 5s wait:32s)
0:02:27 INF - ----------------------------------------
0:02:27 INF - 	archive	109MB
0:02:27 INF - 	features	283MB
-rw-r--r-- 1 runner docker 65M Mar 18 18:28 run.jar
0:02:28 DEB [archive] - Tile stats:
0:02:28 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:28 DEB [archive] - z1 avg:4k max:4k
0:02:28 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:28 DEB [archive] - z3 avg:4k max:6.4k
0:02:28 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:28 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:28 DEB [archive] - z6 avg:995 max:22k
0:02:28 DEB [archive] - z7 avg:778 max:59k
0:02:28 DEB [archive] - z8 avg:418 max:127k
0:02:28 DEB [archive] - z9 avg:281 max:298k
0:02:28 DEB [archive] - z10 avg:161 max:255k
0:02:28 DEB [archive] - z11 avg:106 max:136k
0:02:28 DEB [archive] - z12 avg:85 max:114k
0:02:28 DEB [archive] - z13 avg:72 max:127k
0:02:28 DEB [archive] - z14 avg:68 max:301k
0:02:28 DEB [archive] - all avg:70 max:301k
0:02:28 DEB [archive] -  # features: 5,427,738
0:02:28 DEB [archive] -     # tiles: 4,115,452
0:02:28 INF [archive] - Finished in 39s cpu:1m16s gc:1s avg:2
0:02:28 INF [archive] -   read    1x(2% 0.9s wait:36s)
0:02:28 INF [archive] -   encode  2x(64% 25s)
0:02:28 INF [archive] -   write   1x(12% 5s wait:31s)
0:02:28 INF - Finished in 2m28s cpu:4m19s gc:4s avg:1.8
0:02:28 INF - FINISHED!
0:02:28 INF - 
0:02:28 INF - ----------------------------------------
0:02:28 INF - 	overall          2m28s cpu:4m19s gc:4s avg:1.8
0:02:28 INF - 	lake_centerlines 5s cpu:8s avg:1.7
0:02:28 INF - 	  read     1x(40% 2s done:2s)
0:02:28 INF - 	  process  2x(5% 0.3s wait:2s done:2s)
0:02:28 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:28 INF - 	water_polygons   30s cpu:52s gc:2s avg:1.8
0:02:28 INF - 	  read     1x(58% 17s wait:3s)
0:02:28 INF - 	  process  2x(30% 9s wait:13s)
0:02:28 INF - 	  write    1x(2% 0.6s wait:29s)
0:02:28 INF - 	natural_earth    27s cpu:30s avg:1.1
0:02:28 INF - 	  read     1x(62% 17s sys:3s done:10s)
0:02:28 INF - 	  process  2x(6% 2s wait:16s done:10s)
0:02:28 INF - 	  write    1x(0% 0s wait:17s done:10s)
0:02:28 INF - 	osm_pass1        4s cpu:8s avg:1.8
0:02:28 INF - 	  read     1x(1% 0.1s wait:4s)
0:02:28 INF - 	  parse    1x(65% 3s)
0:02:28 INF - 	  process  1x(39% 2s wait:2s)
0:02:28 INF - 	osm_pass2        40s cpu:1m19s avg:2
0:02:28 INF - 	  read     1x(0% 0s wait:22s done:18s)
0:02:28 INF - 	  process  2x(75% 30s)
0:02:28 INF - 	  write    1x(1% 0.5s wait:40s)
0:02:28 INF - 	boundaries       0s cpu:0.1s avg:1.7
0:02:28 INF - 	sort             3s cpu:3s avg:1.2
0:02:28 INF - 	  worker  1x(81% 2s)
0:02:28 INF - 	archive          39s cpu:1m16s gc:1s avg:2
0:02:28 INF - 	  read    1x(2% 0.9s wait:36s)
0:02:28 INF - 	  encode  2x(64% 25s)
0:02:28 INF - 	  write   1x(12% 5s wait:31s)
0:02:28 INF - ----------------------------------------
0:02:28 INF - 	archive	109MB
0:02:28 INF - 	features	283MB
-rw-r--r-- 1 runner docker 65M Mar 18 18:26 run.jar

https://github.com/onthegomap/planetiler/actions/runs/4456711247

ℹ️ Base Logs 9945ad4
0:00:00 DEB - argument: config=null (path to config file)
0:00:00 DEB - argument: area=rhode island (name of the extract to download if osm_url/osm_path not specified (i.e. 'monaco' 'rhode island' 'australia' or 'planet'))
0:00:00 INF - argument: stats=use in-memory stats
0:00:00 DEB - argument: madvise=true (default value for whether to use linux madvise(random) to improve memory-mapped read performance for temporary storage)
0:00:00 DEB - argument: storage=mmap (default storage type for temporary data, one of [ram, mmap, direct])
0:00:00 DEB - argument: threads=2 (num threads)
0:00:00 DEB - argument: write_threads=1 (number of threads to use when writing temp features)
0:00:00 DEB - argument: process_threads=2 (number of threads to use when processing input features)
0:00:00 DEB - argument: bounds=Env[-74.07 : -17.84, 21.34 : 43.55] (bounds)
0:00:00 DEB - argument: polygon=null (a .poly file that limits output to tiles intersecting the shape)
0:00:00 DEB - argument: minzoom=0 (minimum zoom level)
0:00:00 DEB - argument: maxzoom=14 (maximum zoom level up to 15)
0:00:00 DEB - argument: render_maxzoom=14 (maximum rendering zoom level up to 15)
0:00:00 DEB - argument: feature_read_threads=1 (number of threads to use when reading features at tile write time)
0:00:00 DEB - argument: loginterval=10 seconds (time between logs)
0:00:00 DEB - argument: skip_mbtiles_index_creation=false (skip adding index to mbtiles file)
0:00:00 DEB - argument: optimize_db=false (Vacuum analyze mbtiles after writing)
0:00:00 DEB - argument: force=false (overwriting output file and ignore disk/RAM warnings)
0:00:00 DEB - argument: gzip_temp=false (gzip temporary feature storage (uses more CPU, but less disk space))
0:00:00 DEB - argument: mmap_temp=true (use memory-mapped IO for temp feature files)
0:00:00 DEB - argument: sort_max_readers=6 (maximum number of concurrent read threads to use when sorting chunks)
0:00:00 DEB - argument: sort_max_writers=6 (maximum number of concurrent write threads to use when sorting chunks)
0:00:00 DEB - argument: nodemap_type=sparsearray (type of node location map, one of [noop, sortedtable, sparsearray, array])
0:00:00 DEB - argument: nodemap_storage=mmap (storage for node location map, one of [ram, mmap, direct])
0:00:00 DEB - argument: nodemap_madvise=true (use linux madvise(random) for node locations)
0:00:00 DEB - argument: multipolygon_geometry_storage=mmap (storage for multipolygon geometries, one of [ram, mmap, direct])
0:00:00 DEB - argument: multipolygon_geometry_madvise=true (use linux madvise(random) for temporary multipolygon geometry storage)
0:00:00 DEB - argument: http_user_agent=Planetiler downloader (https://github.com/onthegomap/planetiler) (User-Agent header to set when downloading files over HTTP)
0:00:00 DEB - argument: http_timeout=30 seconds (Timeout to use when downloading files over HTTP)
0:00:00 DEB - argument: http_retries=1 (Retries to use when downloading files over HTTP)
0:00:00 DEB - argument: download_chunk_size_mb=100 (Size of file chunks to download in parallel in megabytes)
0:00:00 DEB - argument: download_threads=1 (Number of parallel threads to use when downloading each file)
0:00:00 DEB - argument: download_max_bandwidth= (Maximum bandwidth to consume when downloading files in units mb/s, mbps, kbps, etc.)
0:00:00 DEB - argument: min_feature_size_at_max_zoom=0.0625 (Default value for the minimum size in tile pixels of features to emit at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: min_feature_size=1.0 (Default value for the minimum size in tile pixels of features to emit below the maximum zoom level)
0:00:00 DEB - argument: simplify_tolerance_at_max_zoom=0.0625 (Default value for the tile pixel tolerance to use when simplifying features at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: simplify_tolerance=0.1 (Default value for the tile pixel tolerance to use when simplifying features below the maximum zoom level)
0:00:00 DEB - argument: osm_lazy_reads=true (Read OSM blocks from disk in worker threads)
0:00:00 DEB - argument: compact_db=true (Reduce the DB size by separating and deduping the tile data)
0:00:00 DEB - argument: skip_filled_tiles=false (Skip writing tiles containing only polygon fills to the output)
0:00:00 DEB - argument: tile_warning_size_mb=1.0 (Maximum size in megabytes of a tile to emit a warning about)
0:00:00 DEB - argument: color=null (Color the terminal output)
0:00:00 DEB - argument: tmpdir=data/tmp (temp directory)
0:00:00 DEB - argument: only_download=false (download source data then exit)
0:00:00 DEB - argument: download=false (download sources)
0:00:00 DEB - argument: temp_nodes=data/tmp/node.db (temp node db location)
0:00:00 DEB - argument: temp_multipolygons=data/tmp/multipolygon.db (temp multipolygon db location)
0:00:00 DEB - argument: temp_features=data/tmp/feature.db (temp feature db location)
0:00:00 DEB - argument: osm_parse_node_bounds=false (parse bounds from OSM nodes instead of header)
0:00:00 DEB - argument: only_fetch_wikidata=false (fetch wikidata translations then quit)
0:00:00 DEB - argument: fetch_wikidata=false (fetch wikidata translations then continue)
0:00:00 DEB - argument: use_wikidata=true (use wikidata translations)
0:00:00 DEB - argument: wikidata_cache=data/sources/wikidata_names.json (wikidata cache file)
0:00:00 DEB - argument: lake_centerlines_path=data/sources/lake_centerline.shp.zip (lake_centerlines shapefile path)
0:00:00 DEB - argument: free_lake_centerlines_after_read=false (delete lake_centerlines input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: water_polygons_path=data/sources/water-polygons-split-3857.zip (water_polygons shapefile path)
0:00:00 DEB - argument: free_water_polygons_after_read=false (delete water_polygons input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: natural_earth_path=data/sources/natural_earth_vector.sqlite.zip (natural_earth sqlite db path)
0:00:00 DEB - argument: free_natural_earth_after_read=false (delete natural_earth input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: osm_path=data/sources/rhode_island.osm.pbf (osm OSM input file path)
0:00:00 DEB - argument: free_osm_after_read=false (delete osm input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: mbtiles=data/output.mbtiles (output tile archive)
0:00:00 DEB - argument: version=false (show version then exit)
0:00:00 INF - Planetiler build git hash: 9945ad406ed1d470839a6e0ac79540c9427d441a
0:00:00 INF - Planetiler build version: 0.6-SNAPSHOT
0:00:00 INF - Planetiler build timestamp: 2023-03-18T18:25:21.551Z
0:00:00 DEB - argument: transliterate=true (attempt to transliterate latin names)
0:00:00 DEB - argument: languages=am,ar,az,be,bg,br,bs,ca,co,cs,cy,da,de,el,en,eo,es,et,eu,fi,fr,fy,ga,gd,he,hi,hr,hu,hy,id,is,it,ja,ja_kana,ja_rm,ja-Latn,ja-Hira,ka,kk,kn,ko,ko-Latn,ku,la,lb,lt,lv,mk,mt,ml,nl,no,oc,pl,pt,rm,ro,ru,sk,sl,sq,sr,sr-Latn,sv,ta,te,th,tr,uk,zh (languages to use)
0:00:00 DEB - argument: only_layers= (Include only certain layers)
0:00:00 DEB - argument: exclude_layers= (Exclude certain layers)
0:00:00 DEB - argument: boundary_country_names=true (boundary layer: add left/right codes of neighboring countries)
0:00:00 DEB - argument: boundary_osm_only=false (boundary layer: only use OSM, even at low zoom levels)
0:00:00 DEB - argument: transportation_z13_paths=false (transportation(_name) layer: show all paths on z13)
0:00:00 DEB - argument: building_merge_z13=true (building layer: merge nearby buildings at z13)
0:00:00 DEB - argument: transportation_name_brunnel=false (transportation_name layer: set to false to omit brunnel and help merge long highways)
0:00:00 DEB - argument: transportation_name_size_for_shield=false (transportation_name layer: allow road names on shorter segments (ie. they will have a shield))
0:00:00 DEB - argument: transportation_name_limit_merge=false (transportation_name layer: limit merge so we don't combine different relations to help merge long highways)
0:00:00 DEB - argument: transportation_name_minor_refs=false (transportation_name layer: include name and refs from minor road networks if not present on a way)
0:00:00 DEB - argument: mbtiles_name=OpenMapTiles ('name' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org ('description' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_attribution=<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a> ('attribution' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_version=3.14.0 ('version' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_type=baselayer ('type' attribute for tileset metadata)
0:00:00 DEB - argument: help=false (show arguments then exit)
0:00:00 INF - Building OpenMapTilesProfile profile into data/output.mbtiles in these phases:
0:00:00 INF -   lake_centerlines: Process features in data/sources/lake_centerline.shp.zip
0:00:00 INF -   water_polygons: Process features in data/sources/water-polygons-split-3857.zip
0:00:00 INF -   natural_earth: Process features in data/sources/natural_earth_vector.sqlite.zip
0:00:00 INF -   osm_pass1: Pre-process OpenStreetMap input (store node locations then relation members)
0:00:00 INF -   osm_pass2: Process OpenStreetMap nodes, ways, then relations
0:00:00 INF -   sort: Sort rendered features by tile ID
0:00:00 INF -   archive: Encode each tile and write to data/output.mbtiles
0:00:00 INF - no wikidata translations found, run with --fetch-wikidata to download
0:00:00 DEB - ✓ 197M storage on / (/dev/root) requested for read phase disk, 29G available
0:00:00 DEB -  - 44M used for temporary node location cache
0:00:00 DEB -  - 6.7M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 146M used for temporary feature storage
0:00:00 DEB - ✓ 219M storage on / (/dev/root) requested for write phase disk, 29G available
0:00:00 DEB -  - 146M used for temporary feature storage
0:00:00 DEB -  - 73M used for archive output
0:00:00 DEB - ✓ 313M JVM heap requested for read phase, 4.2G available
0:00:00 DEB -  - 300M used for sparsearray node location in-memory index
0:00:00 DEB -  - 13M used for temporary profile storage
0:00:00 DEB - ✓ 51M storage on / (/dev/root) requested for read phase, 29G available
0:00:00 DEB -  - 44M used for sparsearray node location cache
0:00:00 DEB -  - 6.7M used for multipolygon way geometries
0:00:00 DEB - ✓ 51M temporary files and 2.9G of free memory for OS to cache them
0:00:01 INF - Using merge sort feature map, chunk size=1431mb max workers=2
0:00:01 INF [lake_centerlines] - 
0:00:01 INF [lake_centerlines] - Starting...
0:00:05 INF [lake_centerlines] -  read: [  59k 100%  25k/s ] write: [    0    0/s ] 0    
    cpus: 1.9 gc:  2% heap: 146M/4.2G direct: 237k postGC: 77M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:05 INF [lake_centerlines] - Finished in 4s cpu:8s avg:1.9
0:00:05 INF [lake_centerlines] -   read     1x(49% 2s done:2s)
0:00:05 INF [lake_centerlines] -   process  2x(8% 0.3s wait:2s done:2s)
0:00:05 INF [lake_centerlines] -   write    1x(0% 0s wait:2s done:2s)
0:00:05 INF [water_polygons] - 
0:00:05 INF [water_polygons] - Starting...
0:00:15 INF [water_polygons] -  read: [ 1.8k  12%  180/s ] write: [  22k 2.1k/s ] 1.4G 
    cpus: 2 gc: 11% heap: 857M/4.2G direct: 51M postGC: 881M
    ->     (0/3) -> read(55%) ->    (0/1k) -> process(39% 12%) -> (1.5k/53k) -> write( 0%)
0:00:25 INF [water_polygons] -  read: [ 3.8k  26%  200/s ] write: [ 214k  19k/s ] 1.4G 
    cpus: 1.9 gc: 10% heap: 3.1G/4.2G direct: 51M postGC: 1.5G
    ->     (0/3) -> read(55%) ->    (0/1k) -> process(24% 46%) ->  (1k/53k) -> write( 0%)
0:00:35 INF [water_polygons] -  read: [  10k  71%  646/s ] write: [ 3.9M 368k/s ] 1.4G 
    cpus: 1.5 gc:  7% heap: 3.2G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read(65%) ->   (1k/1k) -> process(23% 30%) -> (1.3k/53k) -> write( 5%)
0:00:35 INF [water_polygons] -  read: [  14k 100% 8.8k/s ] write: [ 4.3M 883k/s ] 193M 
    cpus: 1.1 gc:  1% heap: 1.9G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write(14%)
0:00:35 INF [water_polygons] - Finished in 31s cpu:54s gc:3s avg:1.8
0:00:35 INF [water_polygons] -   read     1x(57% 17s sys:1s wait:3s)
0:00:35 INF [water_polygons] -   process  2x(29% 9s wait:14s)
0:00:35 INF [water_polygons] -   write    1x(2% 0.7s wait:30s)
0:00:35 INF [natural_earth] - 
0:00:35 INF [natural_earth] - Starting...
0:00:35 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:42 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:52 INF [natural_earth] -  read: [  43k  12% 4.3k/s ] write: [    0    0/s ] 1.6G 
    cpus: 1.1 gc:  0% heap: 3G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read(98%) ->    (0/1k) -> process( 2%  2%) ->   (2/53k) -> write( 0%)
0:01:00 INF [natural_earth] -  read: [ 349k 100%  37k/s ] write: [  181   22/s ] 193M 
    cpus: 1.5 gc:  0% heap: 3.3G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:00 INF [natural_earth] - Finished in 25s cpu:31s avg:1.2
0:01:00 INF [natural_earth] -   read     1x(70% 17s sys:3s done:7s)
0:01:00 INF [natural_earth] -   process  2x(6% 1s wait:17s done:7s)
0:01:00 INF [natural_earth] -   write    1x(0% 0s wait:18s done:7s)
0:01:00 INF [osm_pass1] - 
0:01:00 INF [osm_pass1] - Starting...
0:01:03 INF [osm_pass1:process] - Finished nodes: 4,634,383 (1.7M/s) in 3s cpu:4s avg:1.7
0:01:04 INF [osm_pass1:process] - Finished ways: 340,074 (396k/s) in 0.9s cpu:2s avg:1.9
0:01:04 INF [osm_pass1:process] - Finished relations: 7,968 (65k/s) in 0.1s cpu:0.2s avg:2
0:01:04 INF [osm_pass1] -  nodes: [ 4.6M 1.2M/s ] 445M  ways: [ 340k  92k/s ] rels: [ 7.9k 2.1k/s ] blocks: [  624  169/s ]
    cpus: 1.8 gc:  1% heap: 1G/4.2G direct: 51M postGC: 892M hppc: 466k
    read( -%) ->     (0/4) -> parse( -%) ->     (0/4) -> process( -%)
0:01:04 DEB [osm_pass1] - Processed 624 blocks:
0:01:04 DEB [osm_pass1] -   nodes: 4,634,383 (1.7M/s) in 3s cpu:4s avg:1.7
0:01:04 DEB [osm_pass1] -   ways: 340,074 (396k/s) in 0.9s cpu:2s avg:1.9
0:01:04 DEB [osm_pass1] -   relations: 7,968 (65k/s) in 0.1s cpu:0.2s avg:2
0:01:04 INF [osm_pass1] - Finished in 4s cpu:7s avg:1.8
0:01:04 INF [osm_pass1] -   read     1x(1% 0s wait:3s)
0:01:04 INF [osm_pass1] -   parse    1x(70% 3s)
0:01:04 INF [osm_pass1] -   process  1x(42% 2s wait:2s)
0:01:04 INF [osm_pass2] - 
0:01:04 INF [osm_pass2] - Starting...
0:01:06 DEB [osm_pass2:process] - Sorting long long multimap...
0:01:06 INF [osm_pass2:process] - Finished nodes: 4,634,383 (1.8M/s) in 2s cpu:5s avg:2
0:01:06 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0.1s avg:2.2
0:01:06 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:01:14 INF [osm_pass2] -  nodes: [ 4.6M 100% 463k/s ] 445M  ways: [  93k  27% 9.3k/s ] rels: [    0   0%    0/s ] features: [ 4.7M  42k/s ] 1.6G  blocks: [  591  95%   59/s ]
    cpus: 2 gc:  0% heap: 2.8G/4.2G direct: 51M postGC: 908M relInfo: 427k mpGeoms: 524k 
    read( 0%) ->   (11/13) -> process(66% 64%) -> (1.4k/53k) -> write( 2%)
0:01:24 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 248k  73%  15k/s ] rels: [    0   0%    0/s ] features: [ 5.1M  39k/s ] 1.6G  blocks: [  610  98%    1/s ]
    cpus: 2 gc:  1% heap: 1.8G/4.2G direct: 51M postGC: 921M relInfo: 427k mpGeoms: 11M  
    read( 0%) ->   (11/13) -> process(73% 74%) -> (1.1k/53k) -> write( 1%)
0:01:30 INF [osm_pass2:process] - Finished ways: 340,074 (14k/s) in 24s cpu:47s avg:2
0:01:34 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 340k 100% 9.1k/s ] rels: [ 2.8k  36%  283/s ] features: [ 5.3M  25k/s ] 1.6G  blocks: [  623 100%    1/s ]
    cpus: 2 gc:  1% heap: 1.1G/4.2G direct: 51M postGC: 912M relInfo: 427k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(77% 82%) -> (1.6k/53k) -> write( 1%)
0:01:42 INF [osm_pass2:process] - Finished relations: 7,968 (671/s) in 12s cpu:23s avg:2
0:01:44 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 340k 100%    0/s ] rels: [ 7.3k  92%  450/s ] features: [ 5.4M 2.5k/s ] 1.6G  blocks: [  624 100%   <1/s ]
    cpus: 2 gc:  1% heap: 1.2G/4.2G direct: 51M postGC: 909M relInfo: 427k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(84% 80%) -> (290/53k) -> write( 0%)
0:01:45 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 340k 100%    0/s ] rels: [ 7.9k 100%  731/s ] features: [ 5.4M   4k/s ] 283M  blocks: [  624 100%    0/s ]
    cpus: 2 gc:  0% heap: 2.1G/4.2G direct: 51M postGC: 909M relInfo: 427k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:45 DEB [osm_pass2] - Processed 624 blocks:
0:01:45 DEB [osm_pass2] -   nodes: 4,634,383 (1.8M/s) in 2s cpu:5s avg:2
0:01:45 DEB [osm_pass2] -   ways: 340,074 (14k/s) in 24s cpu:47s avg:2
0:01:45 DEB [osm_pass2] -   relations: 7,968 (671/s) in 12s cpu:23s avg:2
0:01:45 INF [osm_pass2] - Finished in 41s cpu:1m21s avg:2
0:01:45 INF [osm_pass2] -   read     1x(0% 0s wait:22s done:19s)
0:01:45 INF [osm_pass2] -   process  2x(75% 31s)
0:01:45 INF [osm_pass2] -   write    1x(1% 0.4s wait:40s)
0:01:45 INF [boundaries] - 
0:01:45 INF [boundaries] - Starting...
0:01:45 INF [boundaries] - Creating polygons for 1 boundaries
0:01:45 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:01:45 INF [boundaries] - Finished creating 0 country polygons
0:01:45 INF [boundaries] - Finished in 0s cpu:0.1s avg:1.6
0:01:45 INF - Deleting node.db to make room for output file
0:01:45 INF [sort] - 
0:01:45 INF [sort] - Starting...
0:01:45 INF [sort] - Grouped 8 chunks into 1
0:01:47 INF [sort] -  chunks: [   1 /   1 100% ] 283M 
    cpus: 1.3 gc:  0% heap: 2.7G/4.2G direct: 51M postGC: 909M
    ->     (0/3) -> worker(86%)
0:01:47 INF [sort] - Finished in 3s cpu:4s avg:1.3
0:01:47 INF [sort] -   worker  1x(85% 2s)
0:01:47 INF - read:0s write:0s sort:1s
0:01:48 INF [archive] - 
0:01:48 INF [archive] - Starting...
0:01:48 DEB [archive:write] - Execute mbtiles: create table metadata (name text, value text);
0:01:48 DEB [archive:write] - Execute mbtiles: create unique index name on metadata (name);
0:01:48 DEB [archive:write] - Execute mbtiles: create table tiles_shallow (
  zoom_level integer,
  tile_column integer,
  tile_row integer,
  tile_data_id integer

  , primary key(zoom_level,tile_column,tile_row)

) without rowid

0:01:48 DEB [archive:write] - Execute mbtiles: create table tiles_data (
  tile_data_id integer primary key,
  tile_data blob
)

0:01:48 DEB [archive:write] - Execute mbtiles: create view tiles AS
select
  tiles_shallow.zoom_level as zoom_level,
  tiles_shallow.tile_column as tile_column,
  tiles_shallow.tile_row as tile_row,
  tiles_data.tile_data as tile_data
from tiles_shallow
join tiles_data on tiles_shallow.tile_data_id = tiles_data.tile_data_id

0:01:48 DEB [archive:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:48 DEB [archive:write] - Set mbtiles metadata: format=pbf
0:01:48 DEB [archive:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:48 DEB [archive:write] - Set mbtiles metadata: attribution=<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>
0:01:48 DEB [archive:write] - Set mbtiles metadata: version=3.14.0
0:01:48 DEB [archive:write] - Set mbtiles metadata: type=baselayer
0:01:48 DEB [archive:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:48 DEB [archive:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:48 DEB [archive:write] - Set mbtiles metadata: minzoom=0
0:01:48 DEB [archive:write] - Set mbtiles metadata: maxzoom=14
0:01:49 DEB [archive:write] - Set mbtiles metadata: json={"vector_layers":[{"id":"aerodrome_label","fields":{"name_int":"String","iata":"String","ele_ft":"Number","name_de":"String","name":"String","icao":"String","name:en":"String","class":"String","name_en":"String","name:latin":"String","ele":"Number"},"minzoom":10,"maxzoom":14},{"id":"aeroway","fields":{"ref":"String","class":"String"},"minzoom":10,"maxzoom":14},{"id":"boundary","fields":{"disputed":"Number","admin_level":"Number","maritime":"Number"},"minzoom":0,"maxzoom":14},{"id":"building","fields":{"colour":"String","render_height":"Number","render_min_height":"Number","hide_3d":"Boolean"},"minzoom":13,"maxzoom":14},{"id":"housenumber","fields":{"housenumber":"String"},"minzoom":14,"maxzoom":14},{"id":"landcover","fields":{"subclass":"String","class":"String","_numpoints":"Number"},"minzoom":7,"maxzoom":14},{"id":"landuse","fields":{"class":"String"},"minzoom":4,"maxzoom":14},{"id":"mountain_peak","fields":{"name_int":"String","customary_ft":"Number","ele_ft":"Number","name_de":"Str... 2302 more characters
0:01:49 DEB [archive:write] - Set mbtiles metadata: planetiler:version=0.6-SNAPSHOT
0:01:49 DEB [archive:write] - Set mbtiles metadata: planetiler:githash=9945ad406ed1d470839a6e0ac79540c9427d441a
0:01:49 DEB [archive:write] - Set mbtiles metadata: planetiler:buildtime=2023-03-18T18:25:21.551Z
0:01:49 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationtime=2023-03-17T21:20:59Z
0:01:49 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationseq=3642
0:01:49 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationurl=http://download.geofabrik.de/north-america/us/rhode-island-updates
0:01:51 INF [archive:write] - Starting z0
0:01:51 INF [archive:write] - Finished z0 in 0s cpu:0s avg:0, now starting z1
0:01:51 INF [archive:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:01:51 INF [archive:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:01:51 INF [archive:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:01:51 INF [archive:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:01:51 INF [archive:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:01:51 INF [archive:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:01:52 INF [archive:write] - Finished z7 in 1s cpu:2s avg:2, now starting z8
0:01:54 INF [archive:write] - Finished z8 in 2s cpu:5s avg:2, now starting z9
0:01:58 INF [archive:write] - Finished z9 in 4s cpu:7s avg:2, now starting z10
0:01:58 INF [archive] -  features: [ 120k   2%  12k/s ] 283M  tiles: [ 4.7k  478/s ] 1.3M 
    cpus: 2 gc:  4% heap: 2.6G/4.2G direct: 51M postGC: 512M
    read( 1%) -> (214/217) -> encode(61% 57%) -> (215/216) -> write( 1%)
    last tile: 10/308/382 (z10 4%) https://www.openstreetmap.org/#map=10/41.50858/-71.71875
0:02:00 INF [archive:write] - Finished z10 in 2s cpu:4s avg:2, now starting z11
0:02:04 INF [archive:write] - Finished z11 in 4s cpu:7s avg:2, now starting z12
0:02:08 INF [archive] -  features: [ 477k   9%  35k/s ] 283M  tiles: [ 153k  14k/s ] 10M  
    cpus: 2 gc:  1% heap: 769M/4.2G direct: 51M postGC: 307M
    read( 1%) -> (214/217) -> encode(62% 64%) -> (215/216) -> write( 3%)
    last tile: 12/1499/1734 (z12 46%) https://www.openstreetmap.org/#map=12/26.58853/-48.25195
0:02:09 INF [archive:write] - Finished z12 in 5s cpu:10s avg:2, now starting z13
0:02:18 INF [archive] -  features: [   1M  20%  60k/s ] 283M  tiles: [ 407k  25k/s ] 23M  
    cpus: 2 gc:  3% heap: 574M/4.2G direct: 51M postGC: 360M
    read( 0%) -> (214/217) -> encode(74% 73%) -> (215/216) -> write( 3%)
    last tile: 13/2665/3125 (z13 20%) https://www.openstreetmap.org/#map=13/39.19821/-62.88574
0:02:20 INF [archive:write] - Finished z13 in 11s cpu:23s avg:2, now starting z14
0:02:27 DEB [archive:write] - Shallow tiles written: 4,115,452
0:02:27 DEB [archive:write] - Tile data written: 18,586 (100% omitted)
0:02:27 DEB [archive:write] - Unique tile hashes: 8,666
0:02:27 INF [archive:write] - Finished z14 in 7s cpu:14s avg:1.9
0:02:27 INF [archive] -  features: [ 5.4M 100% 469k/s ] 283M  tiles: [ 4.1M 401k/s ] 109M 
    cpus: 2 gc:  2% heap: 270M/4.2G direct: 51M postGC: 334M
    read( -%) ->   (0/217) -> encode( -%  -%) ->   (0/216) -> write( -%)
    last tile: 14/7380/5985 (z14 100%) https://www.openstreetmap.org/#map=14/43.56447/-17.84180
0:02:27 DEB [archive] - Tile stats:
0:02:27 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:27 DEB [archive] - z1 avg:4k max:4k
0:02:27 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:27 DEB [archive] - z3 avg:4k max:6.4k
0:02:27 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:27 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:27 DEB [archive] - z6 avg:995 max:22k
0:02:27 DEB [archive] - z7 avg:778 max:59k
0:02:27 DEB [archive] - z8 avg:418 max:127k
0:02:27 DEB [archive] - z9 avg:281 max:298k
0:02:27 DEB [archive] - z10 avg:161 max:255k
0:02:27 DEB [archive] - z11 avg:106 max:136k
0:02:27 DEB [archive] - z12 avg:85 max:114k
0:02:27 DEB [archive] - z13 avg:72 max:127k
0:02:27 DEB [archive] - z14 avg:68 max:301k
0:02:27 DEB [archive] - all avg:70 max:301k
0:02:27 DEB [archive] -  # features: 5,427,738
0:02:27 DEB [archive] -     # tiles: 4,115,452
0:02:27 INF [archive] - Finished in 40s cpu:1m19s gc:1s avg:2
0:02:27 INF [archive] -   read    1x(2% 0.9s wait:38s)
0:02:27 INF [archive] -   encode  2x(64% 25s)
0:02:27 INF [archive] -   write   1x(13% 5s wait:32s)
0:02:27 INF - Finished in 2m28s cpu:4m25s gc:5s avg:1.8
0:02:27 INF - FINISHED!
0:02:27 INF - 
0:02:27 INF - ----------------------------------------
0:02:27 INF - 	overall          2m28s cpu:4m25s gc:5s avg:1.8
0:02:27 INF - 	lake_centerlines 4s cpu:8s avg:1.9
0:02:27 INF - 	  read     1x(49% 2s done:2s)
0:02:27 INF - 	  process  2x(8% 0.3s wait:2s done:2s)
0:02:27 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:27 INF - 	water_polygons   31s cpu:54s gc:3s avg:1.8
0:02:27 INF - 	  read     1x(57% 17s sys:1s wait:3s)
0:02:27 INF - 	  process  2x(29% 9s wait:14s)
0:02:27 INF - 	  write    1x(2% 0.7s wait:30s)
0:02:27 INF - 	natural_earth    25s cpu:31s avg:1.2
0:02:27 INF - 	  read     1x(70% 17s sys:3s done:7s)
0:02:27 INF - 	  process  2x(6% 1s wait:17s done:7s)
0:02:27 INF - 	  write    1x(0% 0s wait:18s done:7s)
0:02:27 INF - 	osm_pass1        4s cpu:7s avg:1.8
0:02:27 INF - 	  read     1x(1% 0s wait:3s)
0:02:27 INF - 	  parse    1x(70% 3s)
0:02:27 INF - 	  process  1x(42% 2s wait:2s)
0:02:27 INF - 	osm_pass2        41s cpu:1m21s avg:2
0:02:27 INF - 	  read     1x(0% 0s wait:22s done:19s)
0:02:27 INF - 	  process  2x(75% 31s)
0:02:27 INF - 	  write    1x(1% 0.4s wait:40s)
0:02:27 INF - 	boundaries       0s cpu:0.1s avg:1.6
0:02:27 INF - 	sort             3s cpu:4s avg:1.3
0:02:27 INF - 	  worker  1x(85% 2s)
0:02:27 INF - 	archive          40s cpu:1m19s gc:1s avg:2
0:02:27 INF - 	  read    1x(2% 0.9s wait:38s)
0:02:27 INF - 	  encode  2x(64% 25s)
0:02:27 INF - 	  write   1x(13% 5s wait:32s)
0:02:27 INF - ----------------------------------------
0:02:27 INF - 	archive	109MB
0:02:27 INF - 	features	283MB
-rw-r--r-- 1 runner docker 65M Mar 18 18:28 run.jar
ℹ️ This Branch Logs 171d090
0:00:00 DEB - argument: config=null (path to config file)
0:00:00 DEB - argument: area=rhode island (name of the extract to download if osm_url/osm_path not specified (i.e. 'monaco' 'rhode island' 'australia' or 'planet'))
0:00:00 INF - argument: stats=use in-memory stats
0:00:00 DEB - argument: madvise=true (default value for whether to use linux madvise(random) to improve memory-mapped read performance for temporary storage)
0:00:00 DEB - argument: storage=mmap (default storage type for temporary data, one of [ram, mmap, direct])
0:00:00 DEB - argument: threads=2 (num threads)
0:00:00 DEB - argument: write_threads=1 (number of threads to use when writing temp features)
0:00:00 DEB - argument: process_threads=2 (number of threads to use when processing input features)
0:00:00 DEB - argument: bounds=Env[-74.07 : -17.84, 21.34 : 43.55] (bounds)
0:00:00 DEB - argument: polygon=null (a .poly file that limits output to tiles intersecting the shape)
0:00:00 DEB - argument: minzoom=0 (minimum zoom level)
0:00:00 DEB - argument: maxzoom=14 (maximum zoom level up to 15)
0:00:00 DEB - argument: render_maxzoom=14 (maximum rendering zoom level up to 15)
0:00:00 DEB - argument: feature_read_threads=1 (number of threads to use when reading features at tile write time)
0:00:00 DEB - argument: loginterval=10 seconds (time between logs)
0:00:00 DEB - argument: force=false (overwriting output file and ignore disk/RAM warnings)
0:00:00 DEB - argument: gzip_temp=false (gzip temporary feature storage (uses more CPU, but less disk space))
0:00:00 DEB - argument: mmap_temp=true (use memory-mapped IO for temp feature files)
0:00:00 DEB - argument: sort_max_readers=6 (maximum number of concurrent read threads to use when sorting chunks)
0:00:00 DEB - argument: sort_max_writers=6 (maximum number of concurrent write threads to use when sorting chunks)
0:00:00 DEB - argument: nodemap_type=sparsearray (type of node location map, one of [noop, sortedtable, sparsearray, array])
0:00:00 DEB - argument: nodemap_storage=mmap (storage for node location map, one of [ram, mmap, direct])
0:00:00 DEB - argument: nodemap_madvise=true (use linux madvise(random) for node locations)
0:00:00 DEB - argument: multipolygon_geometry_storage=mmap (storage for multipolygon geometries, one of [ram, mmap, direct])
0:00:00 DEB - argument: multipolygon_geometry_madvise=true (use linux madvise(random) for temporary multipolygon geometry storage)
0:00:00 DEB - argument: http_user_agent=Planetiler downloader (https://github.com/onthegomap/planetiler) (User-Agent header to set when downloading files over HTTP)
0:00:00 DEB - argument: http_timeout=30 seconds (Timeout to use when downloading files over HTTP)
0:00:00 DEB - argument: http_retries=1 (Retries to use when downloading files over HTTP)
0:00:00 DEB - argument: download_chunk_size_mb=100 (Size of file chunks to download in parallel in megabytes)
0:00:00 DEB - argument: download_threads=1 (Number of parallel threads to use when downloading each file)
0:00:00 DEB - argument: download_max_bandwidth= (Maximum bandwidth to consume when downloading files in units mb/s, mbps, kbps, etc.)
0:00:00 DEB - argument: min_feature_size_at_max_zoom=0.0625 (Default value for the minimum size in tile pixels of features to emit at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: min_feature_size=1.0 (Default value for the minimum size in tile pixels of features to emit below the maximum zoom level)
0:00:00 DEB - argument: simplify_tolerance_at_max_zoom=0.0625 (Default value for the tile pixel tolerance to use when simplifying features at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: simplify_tolerance=0.1 (Default value for the tile pixel tolerance to use when simplifying features below the maximum zoom level)
0:00:00 DEB - argument: osm_lazy_reads=true (Read OSM blocks from disk in worker threads)
0:00:00 DEB - argument: skip_filled_tiles=false (Skip writing tiles containing only polygon fills to the output)
0:00:00 DEB - argument: tile_warning_size_mb=1.0 (Maximum size in megabytes of a tile to emit a warning about)
0:00:00 DEB - argument: color=null (Color the terminal output)
0:00:00 DEB - argument: tmpdir=data/tmp (temp directory)
0:00:00 DEB - argument: only_download=false (download source data then exit)
0:00:00 DEB - argument: download=false (download sources)
0:00:00 DEB - argument: temp_nodes=data/tmp/node.db (temp node db location)
0:00:00 DEB - argument: temp_multipolygons=data/tmp/multipolygon.db (temp multipolygon db location)
0:00:00 DEB - argument: temp_features=data/tmp/feature.db (temp feature db location)
0:00:00 DEB - argument: osm_parse_node_bounds=false (parse bounds from OSM nodes instead of header)
0:00:00 DEB - argument: only_fetch_wikidata=false (fetch wikidata translations then quit)
0:00:00 DEB - argument: fetch_wikidata=false (fetch wikidata translations then continue)
0:00:00 DEB - argument: use_wikidata=true (use wikidata translations)
0:00:00 DEB - argument: wikidata_cache=data/sources/wikidata_names.json (wikidata cache file)
0:00:00 DEB - argument: lake_centerlines_path=data/sources/lake_centerline.shp.zip (lake_centerlines shapefile path)
0:00:00 DEB - argument: free_lake_centerlines_after_read=false (delete lake_centerlines input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: water_polygons_path=data/sources/water-polygons-split-3857.zip (water_polygons shapefile path)
0:00:00 DEB - argument: free_water_polygons_after_read=false (delete water_polygons input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: natural_earth_path=data/sources/natural_earth_vector.sqlite.zip (natural_earth sqlite db path)
0:00:00 DEB - argument: free_natural_earth_after_read=false (delete natural_earth input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: osm_path=data/sources/rhode_island.osm.pbf (osm OSM input file path)
0:00:00 DEB - argument: free_osm_after_read=false (delete osm input file after reading to make space for output (reduces peak disk usage))
0:00:00 DEB - argument: output=data/out.mbtiles (output tile archive path)
0:00:00 DEB - argument: version=false (show version then exit)
0:00:00 INF - Planetiler build git hash: 171d0902eb6e0e9bc9aff5aac3d84e891b6ebd7e
0:00:00 INF - Planetiler build version: 0.6-SNAPSHOT
0:00:00 INF - Planetiler build timestamp: 2023-03-18T18:24:36.860Z
0:00:00 DEB - argument: transliterate=true (attempt to transliterate latin names)
0:00:00 DEB - argument: languages=am,ar,az,be,bg,br,bs,ca,co,cs,cy,da,de,el,en,eo,es,et,eu,fi,fr,fy,ga,gd,he,hi,hr,hu,hy,id,is,it,ja,ja_kana,ja_rm,ja-Latn,ja-Hira,ka,kk,kn,ko,ko-Latn,ku,la,lb,lt,lv,mk,mt,ml,nl,no,oc,pl,pt,rm,ro,ru,sk,sl,sq,sr,sr-Latn,sv,ta,te,th,tr,uk,zh (languages to use)
0:00:00 DEB - argument: only_layers= (Include only certain layers)
0:00:00 DEB - argument: exclude_layers= (Exclude certain layers)
0:00:00 DEB - argument: boundary_country_names=true (boundary layer: add left/right codes of neighboring countries)
0:00:00 DEB - argument: boundary_osm_only=false (boundary layer: only use OSM, even at low zoom levels)
0:00:00 DEB - argument: transportation_z13_paths=false (transportation(_name) layer: show all paths on z13)
0:00:00 DEB - argument: building_merge_z13=true (building layer: merge nearby buildings at z13)
0:00:00 DEB - argument: transportation_name_brunnel=false (transportation_name layer: set to false to omit brunnel and help merge long highways)
0:00:00 DEB - argument: transportation_name_size_for_shield=false (transportation_name layer: allow road names on shorter segments (ie. they will have a shield))
0:00:00 DEB - argument: transportation_name_limit_merge=false (transportation_name layer: limit merge so we don't combine different relations to help merge long highways)
0:00:00 DEB - argument: transportation_name_minor_refs=false (transportation_name layer: include name and refs from minor road networks if not present on a way)
0:00:00 DEB - argument: help=false (show arguments then exit)
0:00:00 INF - Building OpenMapTilesProfile profile into file:///home/runner/work/planetiler/planetiler/data/out.mbtiles in these phases:
0:00:00 INF -   lake_centerlines: Process features in data/sources/lake_centerline.shp.zip
0:00:00 INF -   water_polygons: Process features in data/sources/water-polygons-split-3857.zip
0:00:00 INF -   natural_earth: Process features in data/sources/natural_earth_vector.sqlite.zip
0:00:00 INF -   osm_pass1: Pre-process OpenStreetMap input (store node locations then relation members)
0:00:00 INF -   osm_pass2: Process OpenStreetMap nodes, ways, then relations
0:00:00 INF -   sort: Sort rendered features by tile ID
0:00:00 INF -   archive: Encode each tile and write to TileArchiveConfig[format=MBTILES, scheme=FILE, uri=file:///home/runner/work/planetiler/planetiler/data/out.mbtiles, options={}]
0:00:00 INF - no wikidata translations found, run with --fetch-wikidata to download
0:00:00 DEB - ✓ 197M storage on / (/dev/root) requested for read phase disk, 29G available
0:00:00 DEB -  - 44M used for temporary node location cache
0:00:00 DEB -  - 6.7M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 146M used for temporary feature storage
0:00:00 DEB - ✓ 219M storage on / (/dev/root) requested for write phase disk, 29G available
0:00:00 DEB -  - 146M used for temporary feature storage
0:00:00 DEB -  - 73M used for archive output
0:00:00 DEB - ✓ 313M JVM heap requested for read phase, 4.2G available
0:00:00 DEB -  - 300M used for sparsearray node location in-memory index
0:00:00 DEB -  - 13M used for temporary profile storage
0:00:00 DEB - ✓ 51M storage on / (/dev/root) requested for read phase, 29G available
0:00:00 DEB -  - 44M used for sparsearray node location cache
0:00:00 DEB -  - 6.7M used for multipolygon way geometries
0:00:00 DEB - ✓ 51M temporary files and 2.9G of free memory for OS to cache them
0:00:00 DEB - argument: archive_name=OpenMapTiles ('name' attribute for tileset metadata)
0:00:00 DEB - argument: archive_description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org ('description' attribute for tileset metadata)
0:00:00 DEB - argument: archive_attribution=<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a> ('attribution' attribute for tileset metadata)
0:00:00 DEB - argument: archive_version=3.14.0 ('version' attribute for tileset metadata)
0:00:00 DEB - argument: archive_type=baselayer ('type' attribute for tileset metadata)
0:00:00 DEB - argument: archive_format=pbf ('format' attribute for tileset metadata)
0:00:01 DEB - argument: compact=true (mbtiles: reduce the DB size by separating and deduping the tile data)
0:00:01 DEB - argument: no_index=false (mbtiles: skip adding index to sqlite DB)
0:00:01 DEB - argument: vacuum_analyze=false (mbtiles: vacuum analyze sqlite DB after writing)
0:00:01 INF - Using merge sort feature map, chunk size=1431mb max workers=2
0:00:01 INF [lake_centerlines] - 
0:00:01 INF [lake_centerlines] - Starting...
0:00:05 INF [lake_centerlines] -  read: [  59k 100%  25k/s ] write: [    0    0/s ] 0    
    cpus: 1.8 gc:  3% heap: 169M/4.2G direct: 237k postGC: 79M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:05 INF [lake_centerlines] - Finished in 5s cpu:8s avg:1.7
0:00:05 INF [lake_centerlines] -   read     1x(40% 2s done:2s)
0:00:05 INF [lake_centerlines] -   process  2x(5% 0.3s wait:2s done:2s)
0:00:05 INF [lake_centerlines] -   write    1x(0% 0s wait:2s done:2s)
0:00:05 INF [water_polygons] - 
0:00:05 INF [water_polygons] - Starting...
0:00:15 INF [water_polygons] -  read: [ 1.8k  12%  179/s ] write: [  22k 2.1k/s ] 1.4G 
    cpus: 1.9 gc: 13% heap: 1G/4.2G direct: 51M postGC: 1G
    ->     (0/3) -> read(53%) ->    (0/1k) -> process(42% 12%) -> (1.5k/53k) -> write( 0%)
0:00:26 INF [water_polygons] -  read: [ 3.8k  27%  206/s ] write: [ 215k  19k/s ] 1.4G 
    cpus: 1.9 gc:  6% heap: 1.3G/4.2G direct: 51M postGC: 1.4G
    ->     (0/3) -> read(57%) ->    (0/1k) -> process(38% 31%) ->  (26/53k) -> write( 0%)
0:00:35 INF [water_polygons] -  read: [  14k 100% 1.1k/s ] write: [ 4.3M 435k/s ] 193M 
    cpus: 1.5 gc:  5% heap: 1.7G/4.2G direct: 51M postGC: 1.6G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:35 INF [water_polygons] - Finished in 30s cpu:52s gc:2s avg:1.8
0:00:35 INF [water_polygons] -   read     1x(58% 17s wait:3s)
0:00:35 INF [water_polygons] -   process  2x(30% 9s wait:13s)
0:00:35 INF [water_polygons] -   write    1x(2% 0.6s wait:29s)
0:00:35 INF [natural_earth] - 
0:00:35 INF [natural_earth] - Starting...
0:00:35 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:45 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:55 INF [natural_earth] -  read: [  51k  15% 5.1k/s ] write: [    0    0/s ] 1.6G 
    cpus: 1.2 gc:  0% heap: 3G/4.2G direct: 51M postGC: 1.6G
    ->     (0/3) -> read(99%) ->   (58/1k) -> process( 3%  3%) ->   (2/53k) -> write( 0%)
0:01:02 INF [natural_earth] -  read: [ 349k 100%  41k/s ] write: [  181   25/s ] 193M 
    cpus: 1.6 gc:  1% heap: 2.9G/4.2G direct: 51M postGC: 1.6G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:02 INF [natural_earth] - Finished in 27s cpu:30s avg:1.1
0:01:02 INF [natural_earth] -   read     1x(62% 17s sys:3s done:10s)
0:01:02 INF [natural_earth] -   process  2x(6% 2s wait:16s done:10s)
0:01:02 INF [natural_earth] -   write    1x(0% 0s wait:17s done:10s)
0:01:02 INF [osm_pass1] - 
0:01:02 INF [osm_pass1] - Starting...
0:01:05 INF [osm_pass1:process] - Finished nodes: 4,634,383 (1.5M/s) in 3s cpu:6s avg:1.8
0:01:06 INF [osm_pass1:process] - Finished ways: 340,074 (363k/s) in 0.9s cpu:2s avg:2
0:01:06 INF [osm_pass1:process] - Finished relations: 7,968 (51k/s) in 0.2s cpu:0.3s avg:2
0:01:06 INF [osm_pass1] -  nodes: [ 4.6M   1M/s ] 445M  ways: [ 340k  79k/s ] rels: [ 7.9k 1.8k/s ] blocks: [  624  146/s ]
    cpus: 1.8 gc:  3% heap: 989M/4.2G direct: 51M postGC: 916M hppc: 466k
    read( -%) ->     (0/4) -> parse( -%) ->     (0/4) -> process( -%)
0:01:06 DEB [osm_pass1] - Processed 624 blocks:
0:01:06 DEB [osm_pass1] -   nodes: 4,634,383 (1.5M/s) in 3s cpu:6s avg:1.8
0:01:06 DEB [osm_pass1] -   ways: 340,074 (363k/s) in 0.9s cpu:2s avg:2
0:01:06 DEB [osm_pass1] -   relations: 7,968 (51k/s) in 0.2s cpu:0.3s avg:2
0:01:06 INF [osm_pass1] - Finished in 4s cpu:8s avg:1.8
0:01:06 INF [osm_pass1] -   read     1x(1% 0.1s wait:4s)
0:01:06 INF [osm_pass1] -   parse    1x(65% 3s)
0:01:06 INF [osm_pass1] -   process  1x(39% 2s wait:2s)
0:01:06 INF [osm_pass2] - 
0:01:06 INF [osm_pass2] - Starting...
0:01:09 DEB [osm_pass2:process] - Sorting long long multimap...
0:01:09 INF [osm_pass2:process] - Finished nodes: 4,634,383 (1.6M/s) in 3s cpu:6s avg:2
0:01:09 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0.1s avg:2.2
0:01:09 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:01:16 INF [osm_pass2] -  nodes: [ 4.6M 100% 462k/s ] 445M  ways: [  87k  26% 8.7k/s ] rels: [    0   0%    0/s ] features: [ 4.7M  40k/s ] 1.6G  blocks: [  590  95%   58/s ]
    cpus: 2 gc:  0% heap: 2.5G/4.2G direct: 51M postGC: 924M relInfo: 427k mpGeoms: 474k 
    read( 0%) ->   (11/13) -> process(64% 64%) -> (972/53k) -> write( 2%)
0:01:26 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 247k  73%  15k/s ] rels: [    0   0%    0/s ] features: [ 5.1M  40k/s ] 1.6G  blocks: [  610  98%    1/s ]
    cpus: 2 gc:  1% heap: 1.4G/4.2G direct: 51M postGC: 939M relInfo: 427k mpGeoms: 10M  
    read( 0%) ->   (11/13) -> process(73% 73%) -> (1.8k/53k) -> write( 1%)
0:01:32 INF [osm_pass2:process] - Finished ways: 340,074 (14k/s) in 23s cpu:46s avg:2
0:01:36 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 340k 100% 9.2k/s ] rels: [ 2.8k  35%  282/s ] features: [ 5.3M  25k/s ] 1.6G  blocks: [  623 100%    1/s ]
    cpus: 2 gc:  1% heap: 1.1G/4.2G direct: 51M postGC: 929M relInfo: 427k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(79% 78%) -> (1.5k/53k) -> write( 1%)
0:01:43 INF [osm_pass2:process] - Finished relations: 7,968 (725/s) in 11s cpu:22s avg:2
0:01:46 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 340k 100%    0/s ] rels: [ 7.9k 100%  513/s ] features: [ 5.4M 2.7k/s ] 1.6G  blocks: [  624 100%   <1/s ]
    cpus: 2 gc:  1% heap: 1.8G/4.2G direct: 51M postGC: 922M relInfo: 427k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(84%  -%) -> (1.4k/53k) -> write( 0%)
0:01:46 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 445M  ways: [ 340k 100%    0/s ] rels: [ 7.9k 100%   34/s ] features: [ 5.4M  51k/s ] 283M  blocks: [  624 100%    0/s ]
    cpus: 1 gc:  0% heap: 1.8G/4.2G direct: 51M postGC: 922M relInfo: 427k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:46 DEB [osm_pass2] - Processed 624 blocks:
0:01:46 DEB [osm_pass2] -   nodes: 4,634,383 (1.6M/s) in 3s cpu:6s avg:2
0:01:46 DEB [osm_pass2] -   ways: 340,074 (14k/s) in 23s cpu:46s avg:2
0:01:46 DEB [osm_pass2] -   relations: 7,968 (725/s) in 11s cpu:22s avg:2
0:01:46 INF [osm_pass2] - Finished in 40s cpu:1m19s avg:2
0:01:46 INF [osm_pass2] -   read     1x(0% 0s wait:22s done:18s)
0:01:46 INF [osm_pass2] -   process  2x(75% 30s)
0:01:46 INF [osm_pass2] -   write    1x(1% 0.5s wait:40s)
0:01:46 INF [boundaries] - 
0:01:46 INF [boundaries] - Starting...
0:01:46 INF [boundaries] - Creating polygons for 1 boundaries
0:01:46 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:01:46 INF [boundaries] - Finished creating 0 country polygons
0:01:46 INF [boundaries] - Finished in 0s cpu:0.1s avg:1.7
0:01:46 INF - Deleting node.db to make room for output file
0:01:46 INF [sort] - 
0:01:46 INF [sort] - Starting...
0:01:46 INF [sort] - Grouped 8 chunks into 1
0:01:49 INF [sort] -  chunks: [   1 /   1 100% ] 283M 
    cpus: 1.2 gc:  0% heap: 2.4G/4.2G direct: 51M postGC: 922M
    ->     (0/3) -> worker( -%)
0:01:49 INF [sort] - Finished in 3s cpu:3s avg:1.2
0:01:49 INF [sort] -   worker  1x(81% 2s)
0:01:49 INF - read:0s write:0s sort:1s
0:01:49 INF [archive] - 
0:01:49 INF [archive] - Starting...
0:01:50 DEB [archive:write] - Execute mbtiles: create table metadata (name text, value text);
0:01:50 DEB [archive:write] - Execute mbtiles: create unique index name on metadata (name);
0:01:50 DEB [archive:write] - Execute mbtiles: create table tiles_shallow (
  zoom_level integer,
  tile_column integer,
  tile_row integer,
  tile_data_id integer

  , primary key(zoom_level,tile_column,tile_row)

) without rowid

0:01:50 DEB [archive:write] - Execute mbtiles: create table tiles_data (
  tile_data_id integer primary key,
  tile_data blob
)

0:01:50 DEB [archive:write] - Execute mbtiles: create view tiles AS
select
  tiles_shallow.zoom_level as zoom_level,
  tiles_shallow.tile_column as tile_column,
  tiles_shallow.tile_row as tile_row,
  tiles_data.tile_data as tile_data
from tiles_shallow
join tiles_data on tiles_shallow.tile_data_id = tiles_data.tile_data_id

0:01:50 DEB [archive:write] - Set mbtiles metadata: format=pbf
0:01:50 DEB [archive:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:50 DEB [archive:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:50 DEB [archive:write] - Set mbtiles metadata: json={"vector_layers":[{"id":"aerodrome_label","fields":{"name_int":"String","iata":"String","ele_ft":"Number","name_de":"String","name":"String","icao":"String","name:en":"String","class":"String","name_en":"String","name:latin":"String","ele":"Number"},"minzoom":10,"maxzoom":14},{"id":"aeroway","fields":{"ref":"String","class":"String"},"minzoom":10,"maxzoom":14},{"id":"boundary","fields":{"disputed":"Number","admin_level":"Number","maritime":"Number"},"minzoom":0,"maxzoom":14},{"id":"building","fields":{"colour":"String","render_height":"Number","render_min_height":"Number","hide_3d":"Boolean"},"minzoom":13,"maxzoom":14},{"id":"housenumber","fields":{"housenumber":"String"},"minzoom":14,"maxzoom":14},{"id":"landcover","fields":{"subclass":"String","class":"String","_numpoints":"Number"},"minzoom":7,"maxzoom":14},{"id":"landuse","fields":{"class":"String"},"minzoom":4,"maxzoom":14},{"id":"mountain_peak","fields":{"name_int":"String","customary_ft":"Number","ele_ft":"Number","name_de":"Str... 2302 more characters
0:01:50 DEB [archive:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:50 DEB [archive:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:50 DEB [archive:write] - Set mbtiles metadata: attribution=<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>
0:01:50 DEB [archive:write] - Set mbtiles metadata: version=3.14.0
0:01:50 DEB [archive:write] - Set mbtiles metadata: type=baselayer
0:01:50 DEB [archive:write] - Set mbtiles metadata: minzoom=0
0:01:50 DEB [archive:write] - Set mbtiles metadata: maxzoom=14
0:01:50 DEB [archive:write] - Set mbtiles metadata: planetiler:version=0.6-SNAPSHOT
0:01:50 DEB [archive:write] - Set mbtiles metadata: planetiler:githash=171d0902eb6e0e9bc9aff5aac3d84e891b6ebd7e
0:01:50 DEB [archive:write] - Set mbtiles metadata: planetiler:buildtime=2023-03-18T18:24:36.860Z
0:01:50 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationtime=2023-03-17T21:20:59Z
0:01:50 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationseq=3642
0:01:50 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationurl=http://download.geofabrik.de/north-america/us/rhode-island-updates
0:01:52 INF [archive:write] - Starting z0
0:01:52 INF [archive:write] - Finished z0 in 0s cpu:0s avg:10.4, now starting z1
0:01:52 INF [archive:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:01:52 INF [archive:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:01:52 INF [archive:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:01:52 INF [archive:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:01:52 INF [archive:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:01:52 INF [archive:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:01:53 INF [archive:write] - Finished z7 in 0.9s cpu:2s avg:2, now starting z8
0:01:56 INF [archive:write] - Finished z8 in 2s cpu:5s avg:2, now starting z9
0:01:59 INF [archive:write] - Finished z9 in 4s cpu:7s avg:2, now starting z10
0:02:00 INF [archive] -  features: [ 124k   2%  12k/s ] 283M  tiles: [ 4.7k  478/s ] 1.3M 
    cpus: 2 gc:  4% heap: 1.4G/4.2G direct: 51M postGC: 1.4G
    read( 1%) -> (214/217) -> encode(62% 58%) -> (215/216) -> write( 1%)
    last tile: 10/308/381 (z10 4%) https://www.openstreetmap.org/#map=10/41.77131/-71.71875
0:02:01 INF [archive:write] - Finished z10 in 2s cpu:3s avg:2, now starting z11
0:02:04 INF [archive:write] - Finished z11 in 3s cpu:7s avg:2, now starting z12
0:02:10 INF [archive:write] - Finished z12 in 5s cpu:10s avg:2, now starting z13
0:02:10 INF [archive] -  features: [ 608k  11%  48k/s ] 283M  tiles: [ 270k  26k/s ] 13M  
    cpus: 2 gc:  1% heap: 1.7G/4.2G direct: 51M postGC: 1.5G
    read( 1%) -> (214/217) -> encode(66% 62%) -> (215/216) -> write( 4%)
    last tile: 13/2431/3126 (z13 2%) https://www.openstreetmap.org/#map=13/39.16414/-73.16895
0:02:20 INF [archive] -  features: [ 1.3M  26%  77k/s ] 283M  tiles: [ 692k  42k/s ] 28M  
    cpus: 2 gc:  3% heap: 2.9G/4.2G direct: 51M postGC: 1.5G
    read( 1%) -> (215/217) -> encode(74% 74%) -> (214/216) -> write( 5%)
    last tile: 13/3133/3201 (z13 56%) https://www.openstreetmap.org/#map=13/36.56260/-42.31934
0:02:21 INF [archive:write] - Finished z13 in 11s cpu:23s avg:2, now starting z14
0:02:28 DEB [archive:write] - Shallow tiles written: 4,115,452
0:02:28 DEB [archive:write] - Tile data written: 18,452 (100% omitted)
0:02:28 DEB [archive:write] - Unique tile hashes: 8,532
0:02:28 INF [archive:write] - Finished z14 in 7s cpu:13s avg:1.9
0:02:28 INF [archive] -  features: [ 5.4M 100% 502k/s ] 283M  tiles: [ 4.1M 425k/s ] 109M 
    cpus: 1.9 gc:  2% heap: 2.7G/4.2G direct: 51M postGC: 1.5G
    read( -%) ->   (0/217) -> encode( -%  -%) ->   (0/216) -> write( -%)
    last tile: 14/7380/5985 (z14 100%) https://www.openstreetmap.org/#map=14/43.56447/-17.84180
0:02:28 DEB [archive] - Tile stats:
0:02:28 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:28 DEB [archive] - z1 avg:4k max:4k
0:02:28 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:28 DEB [archive] - z3 avg:4k max:6.4k
0:02:28 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:28 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:28 DEB [archive] - z6 avg:995 max:22k
0:02:28 DEB [archive] - z7 avg:778 max:59k
0:02:28 DEB [archive] - z8 avg:418 max:127k
0:02:28 DEB [archive] - z9 avg:281 max:298k
0:02:28 DEB [archive] - z10 avg:161 max:255k
0:02:28 DEB [archive] - z11 avg:106 max:136k
0:02:28 DEB [archive] - z12 avg:85 max:114k
0:02:28 DEB [archive] - z13 avg:72 max:127k
0:02:28 DEB [archive] - z14 avg:68 max:301k
0:02:28 DEB [archive] - all avg:70 max:301k
0:02:28 DEB [archive] -  # features: 5,427,738
0:02:28 DEB [archive] -     # tiles: 4,115,452
0:02:28 INF [archive] - Finished in 39s cpu:1m16s gc:1s avg:2
0:02:28 INF [archive] -   read    1x(2% 0.9s wait:36s)
0:02:28 INF [archive] -   encode  2x(64% 25s)
0:02:28 INF [archive] -   write   1x(12% 5s wait:31s)
0:02:28 INF - Finished in 2m28s cpu:4m19s gc:4s avg:1.8
0:02:28 INF - FINISHED!
0:02:28 INF - 
0:02:28 INF - ----------------------------------------
0:02:28 INF - 	overall          2m28s cpu:4m19s gc:4s avg:1.8
0:02:28 INF - 	lake_centerlines 5s cpu:8s avg:1.7
0:02:28 INF - 	  read     1x(40% 2s done:2s)
0:02:28 INF - 	  process  2x(5% 0.3s wait:2s done:2s)
0:02:28 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:28 INF - 	water_polygons   30s cpu:52s gc:2s avg:1.8
0:02:28 INF - 	  read     1x(58% 17s wait:3s)
0:02:28 INF - 	  process  2x(30% 9s wait:13s)
0:02:28 INF - 	  write    1x(2% 0.6s wait:29s)
0:02:28 INF - 	natural_earth    27s cpu:30s avg:1.1
0:02:28 INF - 	  read     1x(62% 17s sys:3s done:10s)
0:02:28 INF - 	  process  2x(6% 2s wait:16s done:10s)
0:02:28 INF - 	  write    1x(0% 0s wait:17s done:10s)
0:02:28 INF - 	osm_pass1        4s cpu:8s avg:1.8
0:02:28 INF - 	  read     1x(1% 0.1s wait:4s)
0:02:28 INF - 	  parse    1x(65% 3s)
0:02:28 INF - 	  process  1x(39% 2s wait:2s)
0:02:28 INF - 	osm_pass2        40s cpu:1m19s avg:2
0:02:28 INF - 	  read     1x(0% 0s wait:22s done:18s)
0:02:28 INF - 	  process  2x(75% 30s)
0:02:28 INF - 	  write    1x(1% 0.5s wait:40s)
0:02:28 INF - 	boundaries       0s cpu:0.1s avg:1.7
0:02:28 INF - 	sort             3s cpu:3s avg:1.2
0:02:28 INF - 	  worker  1x(81% 2s)
0:02:28 INF - 	archive          39s cpu:1m16s gc:1s avg:2
0:02:28 INF - 	  read    1x(2% 0.9s wait:36s)
0:02:28 INF - 	  encode  2x(64% 25s)
0:02:28 INF - 	  write   1x(12% 5s wait:31s)
0:02:28 INF - ----------------------------------------
0:02:28 INF - 	archive	109MB
0:02:28 INF - 	features	283MB
-rw-r--r-- 1 runner docker 65M Mar 18 18:26 run.jar

assert lastTile == null || lastTile.compareTo(tileCoord) < 0 : "Tiles out of order %s before %s"
.formatted(lastTile, tileCoord);
assert lastTile == null ||
order.encode(tileCoord) > order.encode(lastTile) : "Tiles out of order %s before %s"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically the PMTiles writer can take out-of-order writes and has some logic to set clustered=false and re-sort the entries. If we are enforcing this via assertion then we could take that logic out.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The assertion only runs when -ea jvm flag is set (including during tests). All of the code within planetiler is designed to output tiles in order so I like having the assertion in here, but if someone uses this utility outside of planetiler then they might not write in order....

@@ -0,0 +1,75 @@
package com.onthegomap.planetiler.archive;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if TileArchives utilities for working with tile archives makes the most sense, or collapse TileArchives and TileArchiveMetadata into one record TileArchive that also has static factory methods?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems useful to be able to manipulate metadata not in the context of an entire archive?

Copy link
Contributor Author

@msbarry msbarry Mar 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops sorry I meant collapse TileArchives and TileArchiveConfig into just TileArchive, for example: 17bdd19

@msbarry msbarry marked this pull request as ready for review March 18, 2023 15:00
@bdon
Copy link
Contributor

bdon commented Mar 18, 2023

LGTM! We should also update the README/other doc files about the new output format but that can go in a follow-up

@sonarcloud
Copy link

sonarcloud bot commented Mar 18, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 2 Code Smells

85.1% 85.1% Coverage
0.0% 0.0% Duplication

@msbarry msbarry merged commit 74db638 into main Mar 18, 2023
@msbarry msbarry deleted the use-pmtiles branch March 18, 2023 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants