planetiler icon indicating copy to clipboard operation
planetiler copied to clipboard

initial s3 support (draft)

Open bbilger opened this issue 5 months ago • 7 comments

early draft => needs tests and some other adjustments but wanted to share early in case you have any concerns

bbilger avatar Jan 07 '24 20:01 bbilger

Quality Gate Failed Quality Gate failed

Failed conditions

30.6% Coverage on New Code (required ≥ 50%)
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarCloud

idea Catch issues before they fail your Quality Gate with our IDE extension SonarLint SonarLint

sonarcloud[bot] avatar Jan 07 '24 20:01 sonarcloud[bot]

Base c480b35f1cf42c42a1a55e6973d7ea59d9e75f53 This Branch e7f9f1b697b23dade8621fc2585cce22d12c73fd
0:01:01 DEB [archive] - Tile stats:
0:01:01 DEB [archive] - Biggest tiles (gzipped)
1. 14/4942/6092 (150k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:73k)
2. 9/154/190 (148k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k)
3. 10/308/380 (137k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k)
4. 10/308/381 (136k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:72k)
5. 14/4941/6092 (108k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:53k)
6. 14/4941/6093 (106k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k)
7. 11/616/762 (99k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k)
8. 14/4940/6092 (96k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k)
9. 11/616/761 (96k) https://onthegomap.github.io/planetiler-demo/#11.5/41.83679/-71.63086 (landcover:72k)
10. 14/4942/6091 (95k) https://onthegomap.github.io/planetiler-demo/#14.5/41.84501/-71.40015 (building:79k)
0:01:01 DEB [archive] - Max tile sizes
                      z0    z1    z2    z3    z4    z5    z6    z7    z8    z9   z10   z11   z12   z13   z14   all
           boundary  154   374   443   583   935   336   430   545   545  1.6k  2.1k  7.2k  6.4k  5.8k  4.5k  7.2k
              water 7.7k  3.7k  8.6k  5.5k  2.6k  5.1k   15k   18k   16k   25k   15k   13k   17k   15k   12k   25k
              place    0     0   441   441   441   650   739    1k  1.7k  3.4k  5.8k  3.2k  1.7k   797   947  5.8k
            landuse    0     0     0     0   548   619  1.3k  5.9k   17k   44k   59k   50k   38k   19k   12k   59k
     transportation    0     0     0     0   464   915  1.2k    6k    8k   24k   17k   19k   64k   47k   33k   64k
           waterway    0     0     0     0   111   118     0     0     0  3.2k  2.1k  2.1k  2.1k  4.9k  2.4k  4.9k
               park    0     0     0     0     0     0    1k  3.8k  9.7k   18k   13k  8.1k  4.3k  3.4k  4.4k   18k
transportation_name    0     0     0     0     0     0   359   454  1.2k  1.7k  5.4k  4.6k  3.8k  3.4k   18k   18k
          landcover    0     0     0     0     0     0     0  9.5k   29k   85k   72k   81k   53k   30k   24k   85k
      mountain_peak    0     0     0     0     0     0     0  1.1k  1.8k  3.4k  4.3k  2.8k  1.4k  1.4k   869  4.3k
         water_name    0     0     0     0     0     0     0     0     0   486   461   433   452  1.2k  1.5k  1.5k
    aerodrome_label    0     0     0     0     0     0     0     0     0     0   674   327   273   220   220   674
            aeroway    0     0     0     0     0     0     0     0     0     0  1.6k  2.1k    3k  3.4k  2.7k  3.4k
                poi    0     0     0     0     0     0     0     0     0     0     0     0   501   498   73k   73k
           building    0     0     0     0     0     0     0     0     0     0     0     0     0   59k   92k   92k
        housenumber    0     0     0     0     0     0     0     0     0     0     0     0     0     0   35k   35k
          full tile 7.9k    4k  9.5k  6.5k  3.8k  6.1k   20k   41k   84k  203k  184k  135k  113k  127k  233k  233k
            gzipped 6.2k  3.6k  7.1k  5.2k  3.2k  4.8k   13k   29k   60k  148k  137k   99k   83k   92k  150k  150k
0:01:01 DEB [archive] -    Max tile: 233k (gzipped: 150k)
0:01:01 DEB [archive] -    Avg tile: 5.4k (gzipped: 4k) using weighted average based on OSM traffic
0:01:01 DEB [archive] -     # tiles: 4,115,013
0:01:01 DEB [archive] -  # features: 5,462,375
0:01:01 INF [archive] - Finished in 18s cpu:1m6s avg:3.6
0:01:01 INF [archive] -   read    1x(3% 0.5s wait:17s)
0:01:01 INF [archive] -   encode  4x(55% 10s wait:2s)
0:01:01 INF [archive] -   write   1x(21% 4s wait:12s)
0:01:01 INF - Finished in 1m2s cpu:3m12s avg:3.1
0:01:01 INF - FINISHED!
0:01:01 INF - 
0:01:01 INF - ----------------------------------------
0:01:01 INF - data errors:
0:01:01 INF - 	render_snap_fix_input	16,642
0:01:01 INF - 	osm_multipolygon_missing_way	74
0:01:01 INF - 	osm_boundary_missing_way	70
0:01:01 INF - 	merge_snap_fix_input	14
0:01:01 INF - 	feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix	2
0:01:01 INF - 	feature_polygon_osm_invalid_multipolygon_empty_after_fix	2
0:01:01 INF - 	omt_park_area_osm_invalid_multipolygon_empty_after_fix	1
0:01:01 INF - ----------------------------------------
0:01:01 INF - 	overall          1m2s cpu:3m12s avg:3.1
0:01:01 INF - 	lake_centerlines 2s cpu:5s avg:2.3
0:01:01 INF - 	  read     1x(21% 0.5s done:2s)
0:01:01 INF - 	  process  3x(0% 0s done:2s)
0:01:01 INF - 	  write    1x(0% 0s done:2s)
0:01:01 INF - 	water_polygons   14s cpu:38s avg:2.7
0:01:01 INF - 	  read     1x(41% 6s done:7s)
0:01:01 INF - 	  process  3x(36% 5s wait:3s done:5s)
0:01:01 INF - 	  write    1x(4% 0.5s wait:9s done:5s)
0:01:01 INF - 	natural_earth    6s cpu:12s avg:1.9
0:01:01 INF - 	  read     1x(96% 6s)
0:01:01 INF - 	  process  3x(17% 1s wait:6s)
0:01:01 INF - 	  write    1x(0% 0s wait:6s)
0:01:01 INF - 	osm_pass1        2s cpu:5s avg:3.1
0:01:01 INF - 	  read     1x(2% 0s wait:2s)
0:01:01 INF - 	  parse    2x(63% 1s)
0:01:01 INF - 	  process  1x(62% 1s)
0:01:01 INF - 	osm_pass2        18s cpu:1m1s avg:3.5
0:01:01 INF - 	  read     1x(0% 0s wait:10s done:8s)
0:01:01 INF - 	  process  3x(89% 16s)
0:01:01 INF - 	  write    1x(2% 0.4s wait:17s)
0:01:01 INF - 	boundaries       0s cpu:0s avg:1.2
0:01:01 INF - 	agg_stop         0s cpu:0s avg:0
0:01:01 INF - 	sort             1s cpu:3s avg:2.6
0:01:01 INF - 	  worker  1x(53% 0.7s)
0:01:01 INF - 	archive          18s cpu:1m6s avg:3.6
0:01:01 INF - 	  read    1x(3% 0.5s wait:17s)
0:01:01 INF - 	  encode  4x(55% 10s wait:2s)
0:01:01 INF - 	  write   1x(21% 4s wait:12s)
0:01:01 INF - ----------------------------------------
0:01:01 INF - 	archive	107MB
0:01:01 INF - 	features	278MB
-rw-r--r-- 1 runner docker 66M Jan  7 20:21 run.jar
0:01:05 DEB [archive] - Tile stats:
0:01:05 DEB [archive] - Biggest tiles (gzipped)
1. 14/4942/6092 (150k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:73k)
2. 9/154/190 (148k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k)
3. 10/308/380 (137k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k)
4. 10/308/381 (136k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:72k)
5. 14/4941/6092 (108k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:53k)
6. 14/4941/6093 (106k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k)
7. 11/616/762 (99k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k)
8. 14/4940/6092 (96k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k)
9. 11/616/761 (96k) https://onthegomap.github.io/planetiler-demo/#11.5/41.83679/-71.63086 (landcover:72k)
10. 14/4942/6091 (95k) https://onthegomap.github.io/planetiler-demo/#14.5/41.84501/-71.40015 (building:79k)
0:01:05 DEB [archive] - Max tile sizes
                      z0    z1    z2    z3    z4    z5    z6    z7    z8    z9   z10   z11   z12   z13   z14   all
           boundary  154   374   443   583   935   336   430   545   545  1.6k  2.1k  7.2k  6.4k  5.8k  4.5k  7.2k
              water 7.7k  3.7k  8.6k  5.5k  2.6k  5.1k   15k   18k   16k   25k   15k   13k   17k   15k   12k   25k
              place    0     0   441   441   441   650   739    1k  1.7k  3.4k  5.8k  3.2k  1.7k   797   947  5.8k
            landuse    0     0     0     0   548   619  1.3k  5.9k   17k   44k   59k   50k   38k   19k   12k   59k
     transportation    0     0     0     0   464   915  1.2k    6k    8k   24k   17k   19k   64k   47k   33k   64k
           waterway    0     0     0     0   111   118     0     0     0  3.2k  2.1k  2.1k  2.1k  4.9k  2.4k  4.9k
               park    0     0     0     0     0     0    1k  3.8k  9.7k   18k   13k  8.1k  4.3k  3.4k  4.4k   18k
transportation_name    0     0     0     0     0     0   359   454  1.2k  1.7k  5.4k  4.6k  3.8k  3.4k   18k   18k
          landcover    0     0     0     0     0     0     0  9.5k   29k   85k   72k   81k   53k   30k   24k   85k
      mountain_peak    0     0     0     0     0     0     0  1.1k  1.8k  3.4k  4.3k  2.8k  1.4k  1.4k   869  4.3k
         water_name    0     0     0     0     0     0     0     0     0   486   461   433   452  1.2k  1.5k  1.5k
    aerodrome_label    0     0     0     0     0     0     0     0     0     0   674   327   273   220   220   674
            aeroway    0     0     0     0     0     0     0     0     0     0  1.6k  2.1k    3k  3.4k  2.7k  3.4k
                poi    0     0     0     0     0     0     0     0     0     0     0     0   501   498   73k   73k
           building    0     0     0     0     0     0     0     0     0     0     0     0     0   59k   92k   92k
        housenumber    0     0     0     0     0     0     0     0     0     0     0     0     0     0   35k   35k
          full tile 7.9k    4k  9.5k  6.5k  3.8k  6.1k   20k   41k   84k  203k  184k  135k  113k  127k  233k  233k
            gzipped 6.2k  3.6k  7.1k  5.2k  3.2k  4.8k   13k   29k   60k  148k  137k   99k   83k   92k  150k  150k
0:01:05 DEB [archive] -    Max tile: 233k (gzipped: 150k)
0:01:05 DEB [archive] -    Avg tile: 5.4k (gzipped: 4k) using weighted average based on OSM traffic
0:01:05 DEB [archive] -     # tiles: 4,115,013
0:01:05 DEB [archive] -  # features: 5,462,375
0:01:05 INF [archive] - Finished in 18s cpu:1m4s avg:3.6
0:01:05 INF [archive] -   read    1x(3% 0.5s wait:16s done:1s)
0:01:05 INF [archive] -   encode  4x(55% 10s wait:2s done:1s)
0:01:05 INF [archive] -   write   1x(22% 4s wait:12s done:1s)
0:01:05 INF - Finished in 1m5s cpu:3m15s gc:1s avg:3
0:01:05 INF - FINISHED!
0:01:05 INF - 
0:01:05 INF - ----------------------------------------
0:01:05 INF - data errors:
0:01:05 INF - 	render_snap_fix_input	16,642
0:01:05 INF - 	osm_multipolygon_missing_way	74
0:01:05 INF - 	osm_boundary_missing_way	70
0:01:05 INF - 	merge_snap_fix_input	14
0:01:05 INF - 	feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix	2
0:01:05 INF - 	feature_polygon_osm_invalid_multipolygon_empty_after_fix	2
0:01:05 INF - 	omt_park_area_osm_invalid_multipolygon_empty_after_fix	1
0:01:05 INF - ----------------------------------------
0:01:05 INF - 	overall          1m5s cpu:3m15s gc:1s avg:3
0:01:05 INF - 	lake_centerlines 3s cpu:6s avg:2.1
0:01:05 INF - 	  read     1x(17% 0.5s done:2s)
0:01:05 INF - 	  process  3x(0% 0s done:2s)
0:01:05 INF - 	  write    1x(0% 0s done:2s)
0:01:05 INF - 	water_polygons   14s cpu:37s avg:2.7
0:01:05 INF - 	  read     1x(43% 6s done:7s)
0:01:05 INF - 	  process  3x(36% 5s wait:3s done:5s)
0:01:05 INF - 	  write    1x(4% 0.5s wait:8s done:5s)
0:01:05 INF - 	natural_earth    10s cpu:16s avg:1.6
0:01:05 INF - 	  read     1x(59% 6s done:4s)
0:01:05 INF - 	  process  3x(10% 1s wait:6s done:4s)
0:01:05 INF - 	  write    1x(0% 0s wait:6s done:4s)
0:01:05 INF - 	osm_pass1        2s cpu:6s avg:3.1
0:01:05 INF - 	  read     1x(2% 0s wait:2s)
0:01:05 INF - 	  parse    2x(61% 1s)
0:01:05 INF - 	  process  1x(65% 1s)
0:01:05 INF - 	osm_pass2        17s cpu:1m1s avg:3.5
0:01:05 INF - 	  read     1x(0% 0s wait:9s done:8s)
0:01:05 INF - 	  process  3x(89% 16s)
0:01:05 INF - 	  write    1x(2% 0.4s wait:17s)
0:01:05 INF - 	boundaries       0s cpu:0s avg:2.5
0:01:05 INF - 	agg_stop         0s cpu:0s avg:0
0:01:05 INF - 	sort             1s cpu:3s avg:2.7
0:01:05 INF - 	  worker  1x(54% 0.7s)
0:01:05 INF - 	archive          18s cpu:1m4s avg:3.6
0:01:05 INF - 	  read    1x(3% 0.5s wait:16s done:1s)
0:01:05 INF - 	  encode  4x(55% 10s wait:2s done:1s)
0:01:05 INF - 	  write   1x(22% 4s wait:12s done:1s)
0:01:05 INF - ----------------------------------------
0:01:05 INF - 	archive	107MB
0:01:05 INF - 	features	278MB
-rw-r--r-- 1 runner docker 78M Jan  7 20:20 run.jar

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

ℹ️ Base Logs c480b35f1cf42c42a1a55e6973d7ea59d9e75f53
0:00:00 DEB - argument: config=null (path to config file)
0:00:00 DEB - argument: download_dir=data/sources (download directory)
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=4 (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=3 (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: tmpdir=data/tmp (temp directory)
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: tile_write_threads=1 (number of threads used to write tiles - only supported by [files, csv, tsv, proto, pbf, json])
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: append=false (append to the output file - only supported by [files, csv, tsv, proto, pbf, json])
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: keep_unzipped=true (keep unzipped sources by default after reading)
0:00:00 DEB - argument: tile_compression=gzip (the tile compression, one of [none, gzip])
0:00:00 DEB - argument: output_layerstats=false (output a tsv.gz file for each tile/layer size)
0:00:00 DEB - argument: debug_url=https://onthegomap.github.io/planetiler-demo/#{z}/{lat}/{lon} (debug url to use for displaying tiles with {z} {lat} {lon} placeholders)
0:00:00 DEB - argument: tile_weights=data/tile_weights.tsv.gz (tsv.gz file with columns z,x,y,loads to generate weighted average tile size stat)
0:00:00 DEB - argument: max_point_buffer=Infinity (Max tile pixels to include points outside tile bounds. Set to a lower value to reduce tile size for clients that handle label collisions across tiles (most web and native clients). NOTE: Do not reduce if you need to support raster tile rendering)
0:00:00 DEB - argument: log_jts_exceptions=false (Emit verbose details to debug JTS geometry errors)
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: download_osm_tile_weights=false (download OSM tile weights file)
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: natural_earth_keep_unzipped=true (keep unzipped natural_earth after reading)
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: c480b35f1cf42c42a1a55e6973d7ea59d9e75f53
0:00:00 INF - Planetiler build version: 0.7-SNAPSHOT
0:00:00 INF - Planetiler build timestamp: 2024-01-07T20:19:04.655Z
0:00:00 DEB - argument: transliterate=true (attempt to transliterate latin names)
0:00:00 DEB - argument: languages=am,ar,az,be,bg,bn,br,bs,ca,co,cs,cy,da,de,el,en,eo,es,et,eu,fa,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,pa,pnb,pl,pt,rm,ro,ru,sk,sl,sq,sr,sr-Latn,sv,ta,te,th,tr,uk,ur,vi,zh,zh-Hant,zh-Hans (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 DEB - argument: layer_stats=/home/runner/work/planetiler/planetiler/data/out.mbtiles.layerstats.tsv.gz (layer stats output path)
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 - ✓ 200M storage on / (/dev/root) requested for read phase disk, 24G available
0:00:00 DEB -  - 45M used for temporary node location cache
0:00:00 DEB -  - 6.8M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 148M used for temporary feature storage
0:00:00 DEB - ✓ 223M storage on / (/dev/root) requested for write phase disk, 24G available
0:00:00 DEB -  - 148M used for temporary feature storage
0:00:00 DEB -  - 74M 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 - ✓ 52M storage on / (/dev/root) requested for read phase, 24G available
0:00:00 DEB -  - 45M used for sparsearray node location cache
0:00:00 DEB -  - 6.8M used for multipolygon way geometries
0:00:00 DEB - ✓ 52M temporary files and 12G 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:00 DEB - argument: compact=true (mbtiles: reduce the DB size by separating and deduping the tile data)
0:00:00 DEB - argument: no_index=false (mbtiles: skip adding index to sqlite DB)
0:00:00 DEB - argument: vacuum_analyze=false (mbtiles: vacuum analyze sqlite DB after writing)
0:00:00 INF - Using merge sort feature map, chunk size=1431mb max workers=4
0:00:00 INF [lake_centerlines] - 
0:00:00 INF [lake_centerlines] - Starting...
0:00:02 INF [lake_centerlines] -  read: [  200 100%  331/s ] write: [    0    0/s ] 0    
    cpus: 1.2 gc:  0% heap: 46M/4.2G direct: 262k postGC: 80M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:02 INF [lake_centerlines] - Finished in 2s cpu:5s avg:2.3
0:00:02 INF [lake_centerlines] -   read     1x(21% 0.5s done:2s)
0:00:02 INF [lake_centerlines] -   process  3x(0% 0s done:2s)
0:00:02 INF [lake_centerlines] -   write    1x(0% 0s done:2s)
0:00:02 INF [water_polygons] - 
0:00:02 INF [water_polygons] - Starting...
0:00:16 INF [water_polygons] -  read: [  244 100%   26/s ] write: [ 4.3M 463k/s ] 186M 
    cpus: 3.5 gc:  1% heap: 1.5G/4.2G direct: 54M postGC: 280M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:16 INF [water_polygons] - Finished in 14s cpu:38s avg:2.7
0:00:16 INF [water_polygons] -   read     1x(41% 6s done:7s)
0:00:16 INF [water_polygons] -   process  3x(36% 5s wait:3s done:5s)
0:00:16 INF [water_polygons] -   write    1x(4% 0.5s wait:9s done:5s)
0:00:16 INF [natural_earth] - 
0:00:16 INF [natural_earth] - Starting...
0:00:23 INF [natural_earth] -  read: [ 349k 100%  56k/s ] write: [  181   29/s ] 186M 
    cpus: 1.9 gc:  0% heap: 2.1G/4.2G direct: 54M postGC: 256M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:23 INF [natural_earth] - Finished in 6s cpu:12s avg:1.9
0:00:23 INF [natural_earth] -   read     1x(96% 6s)
0:00:23 INF [natural_earth] -   process  3x(17% 1s wait:6s)
0:00:23 INF [natural_earth] -   write    1x(0% 0s wait:6s)
0:00:23 INF [osm_pass1] - 
0:00:23 INF [osm_pass1] - Starting...
0:00:24 INF [osm_pass1:process] - Finished nodes: 4,762,655 (4.1M/s) in 1s cpu:3s avg:2.9
0:00:24 INF [osm_pass1:process] - Finished ways: 358,272 (857k/s) in 0.4s cpu:2s avg:3.6
0:00:24 INF [osm_pass1:process] - Finished relations: 6,089 (68k/s) in 0.1s cpu:0.3s avg:3.6
0:00:24 INF [osm_pass1] -  nodes: [ 4.7M 2.7M/s ] 491M  ways: [ 358k 206k/s ] rels: [   6k 3.5k/s ] blocks: [  642  370/s ]
    cpus: 3.1 gc:  0% heap: 2.9G/4.2G direct: 54M postGC: 794M hppc: 467k
    read( -%) ->     (0/7) -> parse( -%  -%) ->     (0/6) -> process( -%)
0:00:24 DEB [osm_pass1] - Processed 642 blocks:
0:00:24 DEB [osm_pass1] -   nodes: 4,762,655 (4.1M/s) in 1s cpu:3s avg:2.9
0:00:24 DEB [osm_pass1] -   ways: 358,272 (857k/s) in 0.4s cpu:2s avg:3.6
0:00:24 DEB [osm_pass1] -   relations: 6,089 (68k/s) in 0.1s cpu:0.3s avg:3.6
0:00:24 INF [osm_pass1] - Finished in 2s cpu:5s avg:3.1
0:00:24 INF [osm_pass1] -   read     1x(2% 0s wait:2s)
0:00:24 INF [osm_pass1] -   parse    2x(63% 1s)
0:00:24 INF [osm_pass1] -   process  1x(62% 1s)
0:00:24 INF [osm_pass2] - 
0:00:24 INF [osm_pass2] - Starting...
0:00:26 DEB [osm_pass2:process] - Sorting long long multimap...
0:00:26 INF [osm_pass2:process] - Finished nodes: 4,762,655 (4.2M/s) in 1s cpu:4s avg:3.9
0:00:26 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0.1s avg:3.9
0:00:26 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:00:34 INF [osm_pass2] -  nodes: [ 4.7M 100% 476k/s ] 491M  ways: [ 301k  84%  30k/s ] rels: [    0   0%    0/s ] features: [ 5.2M  97k/s ] 1.6G  blocks: [  632  98%   63/s ]
    cpus: 3.5 gc:  1% heap: 1G/4.2G direct: 54M postGC: 1G relInfo: 441k mpGeoms: 18M  
    read( -%) ->    (7/14) -> process(87% 87% 86%) -> (2.8k/54k) -> write( 3%)
0:00:35 INF [osm_pass2:process] - Finished ways: 358,272 (37k/s) in 10s cpu:33s avg:3.5
0:00:40 INF [osm_pass2:process] - Finished relations: 6,089 (1.1k/s) in 5s cpu:19s avg:3.6
0:00:42 INF [osm_pass2] -  nodes: [ 4.7M 100%    0/s ] 491M  ways: [ 358k 100% 7.5k/s ] rels: [   6k 100%  812/s ] features: [ 5.4M  21k/s ] 278M  blocks: [  642 100%    1/s ]
    cpus: 3.4 gc:  1% heap: 1.6G/4.2G direct: 54M postGC: 1G relInfo: 441k mpGeoms: 18M  
    read( -%) ->    (0/14) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:42 DEB [osm_pass2] - Processed 642 blocks:
0:00:42 DEB [osm_pass2] -   nodes: 4,762,655 (4.2M/s) in 1s cpu:4s avg:3.9
0:00:42 DEB [osm_pass2] -   ways: 358,272 (37k/s) in 10s cpu:33s avg:3.5
0:00:42 DEB [osm_pass2] -   relations: 6,089 (1.1k/s) in 5s cpu:19s avg:3.6
0:00:42 INF [osm_pass2] - Finished in 18s cpu:1m1s avg:3.5
0:00:42 INF [osm_pass2] -   read     1x(0% 0s wait:10s done:8s)
0:00:42 INF [osm_pass2] -   process  3x(89% 16s)
0:00:42 INF [osm_pass2] -   write    1x(2% 0.4s wait:17s)
0:00:42 INF [boundaries] - 
0:00:42 INF [boundaries] - Starting...
0:00:42 INF [boundaries] - Creating polygons for 1 boundaries
0:00:42 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:00:42 INF [boundaries] - Finished creating 0 country polygons
0:00:42 INF [boundaries] - Finished in 0s cpu:0s avg:1.2
0:00:42 INF [agg_stop] - 
0:00:42 INF [agg_stop] - Starting...
0:00:42 INF [agg_stop] - Processing 0 agg_stop sets
0:00:42 INF [agg_stop] - Finished in 0s cpu:0s avg:0
0:00:42 INF - Deleting node.db to make room for output file
0:00:42 INF [sort] - 
0:00:42 INF [sort] - Starting...
0:00:42 INF [sort] - Grouped 8 chunks into 1
0:00:43 INF [sort] -  chunks: [   1 /   1 100% ] 278M 
    cpus: 2.6 gc:  0% heap: 2.1G/4.2G direct: 54M postGC: 1G
    ->     (0/3) -> worker( -%)
0:00:43 INF [sort] - Finished in 1s cpu:3s avg:2.6
0:00:43 INF [sort] -   worker  1x(53% 0.7s)
0:00:43 INF - read:0s write:0s sort:0s
0:00:43 INF [archive] - 
0:00:43 INF [archive] - Starting...
0:00:44 DEB [archive] - Execute mbtiles: create table metadata (name text, value text);
0:00:44 DEB [archive] - Execute mbtiles: create unique index name on metadata (name);
0:00:44 DEB [archive] - 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:00:44 DEB [archive] - Execute mbtiles: create table tiles_data (
  tile_data_id integer primary key,
  tile_data blob
)

0:00:44 DEB [archive] - 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:00:46 INF [archive:write] - Starting z0
0:00:46 INF [archive:write] - Finished z0 in 0s cpu:0s avg:0, now starting z1
0:00:46 INF [archive:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:00:46 INF [archive:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:00:46 INF [archive:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:00:46 INF [archive:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:00:46 INF [archive:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:00:46 INF [archive:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:00:46 INF [archive:write] - Finished z7 in 0.3s cpu:1s avg:3.9, now starting z8
0:00:47 INF [archive:write] - Finished z8 in 1s cpu:4s avg:4, now starting z9
0:00:49 INF [archive:write] - Finished z9 in 1s cpu:5s avg:4, now starting z10
0:00:49 INF [archive:write] - Finished z10 in 0.1s cpu:0.3s avg:4, now starting z11
0:00:50 INF [archive:write] - Finished z11 in 1s cpu:6s avg:4, now starting z12
0:00:52 INF [archive:write] - Finished z12 in 2s cpu:9s avg:4, now starting z13
0:00:54 INF [archive] -  features: [ 780k  14%  78k/s ] 278M  tiles: [ 290k  29k/s ] 13M  
    cpus: 4 gc:  5% heap: 1.3G/4.2G direct: 54M postGC: 562M
    read( 2%) -> (212/219) -> encode(58% 60% 59% 58%) -> (215/216) -> write( 4%)
    last tile: 13/2469/3048 (z13 5%) https://onthegomap.github.io/planetiler-demo/#13.5/41.75492/-71.47705
0:00:58 INF [archive:write] - Finished z13 in 5s cpu:20s avg:3.9, now starting z14
0:01:01 DEB [archive:write] - Shallow tiles written: 4,115,013
0:01:01 DEB [archive:write] - Tile data written: 17,244 (100% omitted)
0:01:01 DEB [archive:write] - Unique tile hashes: 8,394
0:01:01 INF [archive:write] - Finished z14 in 4s cpu:10s avg:2.9
0:01:01 DEB [archive:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:01 DEB [archive:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:01 DEB [archive:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:01 DEB [archive:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:01 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:01 DEB [archive:write] - Set mbtiles metadata: version=3.14.0
0:01:01 DEB [archive:write] - Set mbtiles metadata: type=baselayer
0:01:01 DEB [archive:write] - Set mbtiles metadata: format=pbf
0:01:01 DEB [archive:write] - Set mbtiles metadata: minzoom=0
0:01:01 DEB [archive:write] - Set mbtiles metadata: maxzoom=14
0:01:01 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"},"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":"String","name":"String","... 2465 more characters
0:01:01 DEB [archive:write] - Set mbtiles metadata: compression=gzip
0:01:01 DEB [archive:write] - Set mbtiles metadata: planetiler:version=0.7-SNAPSHOT
0:01:01 DEB [archive:write] - Set mbtiles metadata: planetiler:githash=c480b35f1cf42c42a1a55e6973d7ea59d9e75f53
0:01:01 DEB [archive:write] - Set mbtiles metadata: planetiler:buildtime=2024-01-07T20:19:04.655Z
0:01:01 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationtime=2024-01-06T21:20:55Z
0:01:01 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationseq=3934
0:01:01 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationurl=http://download.geofabrik.de/north-america/us/rhode-island-updates
0:01:01 INF [archive] -  features: [ 5.4M 100% 642k/s ] 278M  tiles: [ 4.1M 525k/s ] 107M 
    cpus: 3.4 gc:  2% heap: 1.5G/4.2G direct: 54M postGC: 544M
    read( -%) ->   (0/219) -> encode( -%  -%  -%  -%) ->   (0/216) -> write( -%)
    last tile: 14/7380/5985 (z14 100%) https://onthegomap.github.io/planetiler-demo/#14.5/43.55651/-17.83081
0:01:01 DEB [archive] - Tile stats:
0:01:01 DEB [archive] - Biggest tiles (gzipped)
1. 14/4942/6092 (150k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:73k)
2. 9/154/190 (148k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k)
3. 10/308/380 (137k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k)
4. 10/308/381 (136k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:72k)
5. 14/4941/6092 (108k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:53k)
6. 14/4941/6093 (106k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k)
7. 11/616/762 (99k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k)
8. 14/4940/6092 (96k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k)
9. 11/616/761 (96k) https://onthegomap.github.io/planetiler-demo/#11.5/41.83679/-71.63086 (landcover:72k)
10. 14/4942/6091 (95k) https://onthegomap.github.io/planetiler-demo/#14.5/41.84501/-71.40015 (building:79k)
0:01:01 DEB [archive] - Max tile sizes
                      z0    z1    z2    z3    z4    z5    z6    z7    z8    z9   z10   z11   z12   z13   z14   all
           boundary  154   374   443   583   935   336   430   545   545  1.6k  2.1k  7.2k  6.4k  5.8k  4.5k  7.2k
              water 7.7k  3.7k  8.6k  5.5k  2.6k  5.1k   15k   18k   16k   25k   15k   13k   17k   15k   12k   25k
              place    0     0   441   441   441   650   739    1k  1.7k  3.4k  5.8k  3.2k  1.7k   797   947  5.8k
            landuse    0     0     0     0   548   619  1.3k  5.9k   17k   44k   59k   50k   38k   19k   12k   59k
     transportation    0     0     0     0   464   915  1.2k    6k    8k   24k   17k   19k   64k   47k   33k   64k
           waterway    0     0     0     0   111   118     0     0     0  3.2k  2.1k  2.1k  2.1k  4.9k  2.4k  4.9k
               park    0     0     0     0     0     0    1k  3.8k  9.7k   18k   13k  8.1k  4.3k  3.4k  4.4k   18k
transportation_name    0     0     0     0     0     0   359   454  1.2k  1.7k  5.4k  4.6k  3.8k  3.4k   18k   18k
          landcover    0     0     0     0     0     0     0  9.5k   29k   85k   72k   81k   53k   30k   24k   85k
      mountain_peak    0     0     0     0     0     0     0  1.1k  1.8k  3.4k  4.3k  2.8k  1.4k  1.4k   869  4.3k
         water_name    0     0     0     0     0     0     0     0     0   486   461   433   452  1.2k  1.5k  1.5k
    aerodrome_label    0     0     0     0     0     0     0     0     0     0   674   327   273   220   220   674
            aeroway    0     0     0     0     0     0     0     0     0     0  1.6k  2.1k    3k  3.4k  2.7k  3.4k
                poi    0     0     0     0     0     0     0     0     0     0     0     0   501   498   73k   73k
           building    0     0     0     0     0     0     0     0     0     0     0     0     0   59k   92k   92k
        housenumber    0     0     0     0     0     0     0     0     0     0     0     0     0     0   35k   35k
          full tile 7.9k    4k  9.5k  6.5k  3.8k  6.1k   20k   41k   84k  203k  184k  135k  113k  127k  233k  233k
            gzipped 6.2k  3.6k  7.1k  5.2k  3.2k  4.8k   13k   29k   60k  148k  137k   99k   83k   92k  150k  150k
0:01:01 DEB [archive] -    Max tile: 233k (gzipped: 150k)
0:01:01 DEB [archive] -    Avg tile: 5.4k (gzipped: 4k) using weighted average based on OSM traffic
0:01:01 DEB [archive] -     # tiles: 4,115,013
0:01:01 DEB [archive] -  # features: 5,462,375
0:01:01 INF [archive] - Finished in 18s cpu:1m6s avg:3.6
0:01:01 INF [archive] -   read    1x(3% 0.5s wait:17s)
0:01:01 INF [archive] -   encode  4x(55% 10s wait:2s)
0:01:01 INF [archive] -   write   1x(21% 4s wait:12s)
0:01:01 INF - Finished in 1m2s cpu:3m12s avg:3.1
0:01:01 INF - FINISHED!
0:01:01 INF - 
0:01:01 INF - ----------------------------------------
0:01:01 INF - data errors:
0:01:01 INF - 	render_snap_fix_input	16,642
0:01:01 INF - 	osm_multipolygon_missing_way	74
0:01:01 INF - 	osm_boundary_missing_way	70
0:01:01 INF - 	merge_snap_fix_input	14
0:01:01 INF - 	feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix	2
0:01:01 INF - 	feature_polygon_osm_invalid_multipolygon_empty_after_fix	2
0:01:01 INF - 	omt_park_area_osm_invalid_multipolygon_empty_after_fix	1
0:01:01 INF - ----------------------------------------
0:01:01 INF - 	overall          1m2s cpu:3m12s avg:3.1
0:01:01 INF - 	lake_centerlines 2s cpu:5s avg:2.3
0:01:01 INF - 	  read     1x(21% 0.5s done:2s)
0:01:01 INF - 	  process  3x(0% 0s done:2s)
0:01:01 INF - 	  write    1x(0% 0s done:2s)
0:01:01 INF - 	water_polygons   14s cpu:38s avg:2.7
0:01:01 INF - 	  read     1x(41% 6s done:7s)
0:01:01 INF - 	  process  3x(36% 5s wait:3s done:5s)
0:01:01 INF - 	  write    1x(4% 0.5s wait:9s done:5s)
0:01:01 INF - 	natural_earth    6s cpu:12s avg:1.9
0:01:01 INF - 	  read     1x(96% 6s)
0:01:01 INF - 	  process  3x(17% 1s wait:6s)
0:01:01 INF - 	  write    1x(0% 0s wait:6s)
0:01:01 INF - 	osm_pass1        2s cpu:5s avg:3.1
0:01:01 INF - 	  read     1x(2% 0s wait:2s)
0:01:01 INF - 	  parse    2x(63% 1s)
0:01:01 INF - 	  process  1x(62% 1s)
0:01:01 INF - 	osm_pass2        18s cpu:1m1s avg:3.5
0:01:01 INF - 	  read     1x(0% 0s wait:10s done:8s)
0:01:01 INF - 	  process  3x(89% 16s)
0:01:01 INF - 	  write    1x(2% 0.4s wait:17s)
0:01:01 INF - 	boundaries       0s cpu:0s avg:1.2
0:01:01 INF - 	agg_stop         0s cpu:0s avg:0
0:01:01 INF - 	sort             1s cpu:3s avg:2.6
0:01:01 INF - 	  worker  1x(53% 0.7s)
0:01:01 INF - 	archive          18s cpu:1m6s avg:3.6
0:01:01 INF - 	  read    1x(3% 0.5s wait:17s)
0:01:01 INF - 	  encode  4x(55% 10s wait:2s)
0:01:01 INF - 	  write   1x(21% 4s wait:12s)
0:01:01 INF - ----------------------------------------
0:01:01 INF - 	archive	107MB
0:01:01 INF - 	features	278MB
-rw-r--r-- 1 runner docker 66M Jan  7 20:21 run.jar
ℹ️ This Branch Logs e7f9f1b697b23dade8621fc2585cce22d12c73fd
0:00:00 DEB - argument: config=null (path to config file)
0:00:00 DEB - argument: download_dir=data/sources (download directory)
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=4 (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=3 (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: tmpdir=data/tmp (temp directory)
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: tile_write_threads=1 (number of threads used to write tiles - only supported by [files, csv, tsv, proto, pbf, json, s3])
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: append=false (append to the output file - only supported by [files, csv, tsv, proto, pbf, json, s3])
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: keep_unzipped=true (keep unzipped sources by default after reading)
0:00:00 DEB - argument: tile_compression=gzip (the tile compression, one of [gzip, none])
0:00:00 DEB - argument: output_layerstats=false (output a tsv.gz file for each tile/layer size)
0:00:00 DEB - argument: debug_url=https://onthegomap.github.io/planetiler-demo/#{z}/{lat}/{lon} (debug url to use for displaying tiles with {z} {lat} {lon} placeholders)
0:00:00 DEB - argument: tile_weights=data/tile_weights.tsv.gz (tsv.gz file with columns z,x,y,loads to generate weighted average tile size stat)
0:00:00 DEB - argument: max_point_buffer=Infinity (Max tile pixels to include points outside tile bounds. Set to a lower value to reduce tile size for clients that handle label collisions across tiles (most web and native clients). NOTE: Do not reduce if you need to support raster tile rendering)
0:00:00 DEB - argument: log_jts_exceptions=false (Emit verbose details to debug JTS geometry errors)
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: download_osm_tile_weights=false (download OSM tile weights file)
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: natural_earth_keep_unzipped=true (keep unzipped natural_earth after reading)
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: e7f9f1b697b23dade8621fc2585cce22d12c73fd
0:00:00 INF - Planetiler build version: 0.7-SNAPSHOT
0:00:00 INF - Planetiler build timestamp: 2024-01-07T20:18:29.843Z
0:00:00 DEB - argument: transliterate=true (attempt to transliterate latin names)
0:00:00 DEB - argument: languages=am,ar,az,be,bg,bn,br,bs,ca,co,cs,cy,da,de,el,en,eo,es,et,eu,fa,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,pa,pnb,pl,pt,rm,ro,ru,sk,sl,sq,sr,sr-Latn,sv,ta,te,th,tr,uk,ur,vi,zh,zh-Hant,zh-Hans (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 DEB - argument: layer_stats=/home/runner/work/planetiler/planetiler/data/out.mbtiles.layerstats.tsv.gz (layer stats output path)
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 - ✓ 200M storage on / (/dev/root) requested for read phase disk, 24G available
0:00:00 DEB -  - 45M used for temporary node location cache
0:00:00 DEB -  - 6.8M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 148M used for temporary feature storage
0:00:00 DEB - ✓ 223M storage on / (/dev/root) requested for write phase disk, 24G available
0:00:00 DEB -  - 148M used for temporary feature storage
0:00:00 DEB -  - 74M 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 - ✓ 52M storage on / (/dev/root) requested for read phase, 24G available
0:00:00 DEB -  - 45M used for sparsearray node location cache
0:00:00 DEB -  - 6.8M used for multipolygon way geometries
0:00:00 DEB - ✓ 52M temporary files and 12G 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:00 DEB - argument: compact=true (mbtiles: reduce the DB size by separating and deduping the tile data)
0:00:00 DEB - argument: no_index=false (mbtiles: skip adding index to sqlite DB)
0:00:00 DEB - argument: vacuum_analyze=false (mbtiles: vacuum analyze sqlite DB after writing)
0:00:00 INF - Using merge sort feature map, chunk size=1431mb max workers=4
0:00:00 INF [lake_centerlines] - 
0:00:00 INF [lake_centerlines] - Starting...
0:00:03 INF [lake_centerlines] -  read: [  200 100%  328/s ] write: [    0    0/s ] 0    
    cpus: 1.2 gc:  0% heap: 46M/4.2G direct: 262k postGC: 81M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:03 INF [lake_centerlines] - Finished in 3s cpu:6s avg:2.1
0:00:03 INF [lake_centerlines] -   read     1x(17% 0.5s done:2s)
0:00:03 INF [lake_centerlines] -   process  3x(0% 0s done:2s)
0:00:03 INF [lake_centerlines] -   write    1x(0% 0s done:2s)
0:00:03 INF [water_polygons] - 
0:00:03 INF [water_polygons] - Starting...
0:00:17 INF [water_polygons] -  read: [  244 100%   27/s ] write: [ 4.3M 483k/s ] 186M 
    cpus: 3.6 gc:  1% heap: 2.1G/4.2G direct: 54M postGC: 294M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:17 INF [water_polygons] - Finished in 14s cpu:37s avg:2.7
0:00:17 INF [water_polygons] -   read     1x(43% 6s done:7s)
0:00:17 INF [water_polygons] -   process  3x(36% 5s wait:3s done:5s)
0:00:17 INF [water_polygons] -   write    1x(4% 0.5s wait:8s done:5s)
0:00:17 INF [natural_earth] - 
0:00:17 INF [natural_earth] - Starting...
0:00:17 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/sources/natural_earth_vector.sqlite.zip-unzipped/%2Fnatural_earth_vector.sqlite%2Fpackages%2Fnatural_earth_vector.sqlite
0:00:27 INF [natural_earth] -  read: [ 349k 100%  57k/s ] write: [  181   29/s ] 186M 
    cpus: 1.9 gc:  0% heap: 2.7G/4.2G direct: 54M postGC: 272M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:27 INF [natural_earth] - Finished in 10s cpu:16s avg:1.6
0:00:27 INF [natural_earth] -   read     1x(59% 6s done:4s)
0:00:27 INF [natural_earth] -   process  3x(10% 1s wait:6s done:4s)
0:00:27 INF [natural_earth] -   write    1x(0% 0s wait:6s done:4s)
0:00:27 INF [osm_pass1] - 
0:00:27 INF [osm_pass1] - Starting...
0:00:28 INF [osm_pass1:process] - Finished nodes: 4,762,655 (3.7M/s) in 1s cpu:4s avg:2.9
0:00:28 INF [osm_pass1:process] - Finished ways: 358,272 (846k/s) in 0.4s cpu:2s avg:3.6
0:00:29 INF [osm_pass1:process] - Finished relations: 6,089 (64k/s) in 0.1s cpu:0.3s avg:3.4
0:00:29 INF [osm_pass1] -  nodes: [ 4.7M 2.5M/s ] 491M  ways: [ 358k 195k/s ] rels: [   6k 3.3k/s ] blocks: [  642  349/s ]
    cpus: 3.1 gc:  1% heap: 3.6G/4.2G direct: 54M postGC: 293M hppc: 467k
    read( -%) ->     (0/7) -> parse( -%  -%) ->     (0/6) -> process( -%)
0:00:29 DEB [osm_pass1] - Processed 642 blocks:
0:00:29 DEB [osm_pass1] -   nodes: 4,762,655 (3.7M/s) in 1s cpu:4s avg:2.9
0:00:29 DEB [osm_pass1] -   ways: 358,272 (846k/s) in 0.4s cpu:2s avg:3.6
0:00:29 DEB [osm_pass1] -   relations: 6,089 (64k/s) in 0.1s cpu:0.3s avg:3.4
0:00:29 INF [osm_pass1] - Finished in 2s cpu:6s avg:3.1
0:00:29 INF [osm_pass1] -   read     1x(2% 0s wait:2s)
0:00:29 INF [osm_pass1] -   parse    2x(61% 1s)
0:00:29 INF [osm_pass1] -   process  1x(65% 1s)
0:00:29 INF [osm_pass2] - 
0:00:29 INF [osm_pass2] - Starting...
0:00:30 DEB [osm_pass2:process] - Sorting long long multimap...
0:00:30 INF [osm_pass2:process] - Finished nodes: 4,762,655 (3.6M/s) in 1s cpu:5s avg:3.8
0:00:30 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0.1s avg:3.8
0:00:30 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:00:39 INF [osm_pass2] -  nodes: [ 4.7M 100% 476k/s ] 491M  ways: [ 294k  82%  29k/s ] rels: [    0   0%    0/s ] features: [ 5.2M  96k/s ] 1.6G  blocks: [  632  98%   63/s ]
    cpus: 3.5 gc:  2% heap: 1.5G/4.2G direct: 54M postGC: 1.1G relInfo: 441k mpGeoms: 17M  
    read( -%) ->    (7/14) -> process(85% 86% 85%) -> (2.3k/54k) -> write( 3%)
0:00:40 INF [osm_pass2:process] - Finished ways: 358,272 (37k/s) in 10s cpu:34s avg:3.5
0:00:45 INF [osm_pass2:process] - Finished relations: 6,089 (1.1k/s) in 5s cpu:18s avg:3.5
0:00:46 INF [osm_pass2] -  nodes: [ 4.7M 100%    0/s ] 491M  ways: [ 358k 100% 8.6k/s ] rels: [   6k 100%  818/s ] features: [ 5.4M  24k/s ] 278M  blocks: [  642 100%    1/s ]
    cpus: 3.4 gc:  1% heap: 2.5G/4.2G direct: 54M postGC: 1G relInfo: 441k mpGeoms: 18M  
    read( -%) ->    (0/14) -> process( -%  -%  -%) ->   (0/54k) -> write( -%)
0:00:46 DEB [osm_pass2] - Processed 642 blocks:
0:00:46 DEB [osm_pass2] -   nodes: 4,762,655 (3.6M/s) in 1s cpu:5s avg:3.8
0:00:46 DEB [osm_pass2] -   ways: 358,272 (37k/s) in 10s cpu:34s avg:3.5
0:00:46 DEB [osm_pass2] -   relations: 6,089 (1.1k/s) in 5s cpu:18s avg:3.5
0:00:46 INF [osm_pass2] - Finished in 17s cpu:1m1s avg:3.5
0:00:46 INF [osm_pass2] -   read     1x(0% 0s wait:9s done:8s)
0:00:46 INF [osm_pass2] -   process  3x(89% 16s)
0:00:46 INF [osm_pass2] -   write    1x(2% 0.4s wait:17s)
0:00:46 INF [boundaries] - 
0:00:46 INF [boundaries] - Starting...
0:00:46 INF [boundaries] - Creating polygons for 1 boundaries
0:00:46 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:00:46 INF [boundaries] - Finished creating 0 country polygons
0:00:46 INF [boundaries] - Finished in 0s cpu:0s avg:2.5
0:00:46 INF [agg_stop] - 
0:00:46 INF [agg_stop] - Starting...
0:00:46 INF [agg_stop] - Processing 0 agg_stop sets
0:00:46 INF [agg_stop] - Finished in 0s cpu:0s avg:0
0:00:46 INF - Deleting node.db to make room for output file
0:00:46 INF [sort] - 
0:00:46 INF [sort] - Starting...
0:00:46 INF [sort] - Grouped 8 chunks into 1
0:00:47 INF [sort] -  chunks: [   1 /   1 100% ] 278M 
    cpus: 2.7 gc:  0% heap: 3G/4.2G direct: 54M postGC: 1G
    ->     (0/3) -> worker( -%)
0:00:47 INF [sort] - Finished in 1s cpu:3s avg:2.7
0:00:47 INF [sort] -   worker  1x(54% 0.7s)
0:00:47 INF - read:0s write:0s sort:0s
0:00:47 INF [archive] - 
0:00:47 INF [archive] - Starting...
0:00:48 DEB [archive] - Execute mbtiles: create table metadata (name text, value text);
0:00:48 DEB [archive] - Execute mbtiles: create unique index name on metadata (name);
0:00:48 DEB [archive] - 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:00:48 DEB [archive] - Execute mbtiles: create table tiles_data (
  tile_data_id integer primary key,
  tile_data blob
)

0:00:48 DEB [archive] - 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:00:50 INF [archive:write] - Starting z0
0:00:50 INF [archive:write] - Finished z0 in 0s cpu:0s avg:10.6, now starting z1
0:00:50 INF [archive:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:00:50 INF [archive:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:00:50 INF [archive:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:00:50 INF [archive:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:00:50 INF [archive:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:00:50 INF [archive:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:00:50 INF [archive:write] - Finished z7 in 0.2s cpu:0.8s avg:4, now starting z8
0:00:51 INF [archive:write] - Finished z8 in 1s cpu:4s avg:4, now starting z9
0:00:53 INF [archive:write] - Finished z9 in 2s cpu:6s avg:4, now starting z10
0:00:53 INF [archive:write] - Finished z10 in 0.1s cpu:0.2s avg:3.9, now starting z11
0:00:54 INF [archive:write] - Finished z11 in 2s cpu:6s avg:4, now starting z12
0:00:57 INF [archive:write] - Finished z12 in 2s cpu:9s avg:4, now starting z13
0:00:58 INF [archive] -  features: [ 857k  16%  85k/s ] 278M  tiles: [ 291k  29k/s ] 16M  
    cpus: 4 gc:  4% heap: 1.5G/4.2G direct: 54M postGC: 400M
    read( 2%) -> (212/219) -> encode(65% 59% 60% 58%) -> (215/216) -> write( 4%)
    last tile: 13/2470/3048 (z13 5%) https://onthegomap.github.io/planetiler-demo/#13.5/41.75492/-71.43311
0:01:01 INF [archive:write] - Finished z13 in 5s cpu:19s avg:3.9, now starting z14
0:01:05 DEB [archive:write] - Shallow tiles written: 4,115,013
0:01:05 DEB [archive:write] - Tile data written: 17,596 (100% omitted)
0:01:05 DEB [archive:write] - Unique tile hashes: 8,746
0:01:05 INF [archive:write] - Finished z14 in 4s cpu:10s avg:2.8
0:01:05 DEB [archive:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:05 DEB [archive:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:05 DEB [archive:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:05 DEB [archive:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:05 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:05 DEB [archive:write] - Set mbtiles metadata: version=3.14.0
0:01:05 DEB [archive:write] - Set mbtiles metadata: type=baselayer
0:01:05 DEB [archive:write] - Set mbtiles metadata: format=pbf
0:01:05 DEB [archive:write] - Set mbtiles metadata: minzoom=0
0:01:05 DEB [archive:write] - Set mbtiles metadata: maxzoom=14
0:01:05 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"},"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":"String","name":"String","... 2465 more characters
0:01:05 DEB [archive:write] - Set mbtiles metadata: compression=gzip
0:01:05 DEB [archive:write] - Set mbtiles metadata: planetiler:version=0.7-SNAPSHOT
0:01:05 DEB [archive:write] - Set mbtiles metadata: planetiler:githash=e7f9f1b697b23dade8621fc2585cce22d12c73fd
0:01:05 DEB [archive:write] - Set mbtiles metadata: planetiler:buildtime=2024-01-07T20:18:29.843Z
0:01:05 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationtime=2024-01-06T21:20:55Z
0:01:05 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationseq=3934
0:01:05 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationurl=http://download.geofabrik.de/north-america/us/rhode-island-updates
0:01:05 INF [archive] -  features: [ 5.4M 100% 698k/s ] 278M  tiles: [ 4.1M 580k/s ] 107M 
    cpus: 3.3 gc:  3% heap: 838M/4.2G direct: 54M postGC: 386M
    read( -%) ->   (0/219) -> encode( -%  -%  -%  -%) ->   (0/216) -> write( -%)
    last tile: 14/7380/5985 (z14 100%) https://onthegomap.github.io/planetiler-demo/#14.5/43.55651/-17.83081
0:01:05 DEB [archive] - Tile stats:
0:01:05 DEB [archive] - Biggest tiles (gzipped)
1. 14/4942/6092 (150k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.40015 (poi:73k)
2. 9/154/190 (148k) https://onthegomap.github.io/planetiler-demo/#9.5/41.77078/-71.36719 (landcover:85k)
3. 10/308/380 (137k) https://onthegomap.github.io/planetiler-demo/#10.5/41.90214/-71.54297 (landcover:66k)
4. 10/308/381 (136k) https://onthegomap.github.io/planetiler-demo/#10.5/41.63994/-71.54297 (landcover:72k)
5. 14/4941/6092 (108k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.42212 (poi:53k)
6. 14/4941/6093 (106k) https://onthegomap.github.io/planetiler-demo/#14.5/41.81227/-71.42212 (building:62k)
7. 11/616/762 (99k) https://onthegomap.github.io/planetiler-demo/#11.5/41.7057/-71.63086 (landcover:71k)
8. 14/4940/6092 (96k) https://onthegomap.github.io/planetiler-demo/#14.5/41.82864/-71.44409 (building:92k)
9. 11/616/761 (96k) https://onthegomap.github.io/planetiler-demo/#11.5/41.83679/-71.63086 (landcover:72k)
10. 14/4942/6091 (95k) https://onthegomap.github.io/planetiler-demo/#14.5/41.84501/-71.40015 (building:79k)
0:01:05 DEB [archive] - Max tile sizes
                      z0    z1    z2    z3    z4    z5    z6    z7    z8    z9   z10   z11   z12   z13   z14   all
           boundary  154   374   443   583   935   336   430   545   545  1.6k  2.1k  7.2k  6.4k  5.8k  4.5k  7.2k
              water 7.7k  3.7k  8.6k  5.5k  2.6k  5.1k   15k   18k   16k   25k   15k   13k   17k   15k   12k   25k
              place    0     0   441   441   441   650   739    1k  1.7k  3.4k  5.8k  3.2k  1.7k   797   947  5.8k
            landuse    0     0     0     0   548   619  1.3k  5.9k   17k   44k   59k   50k   38k   19k   12k   59k
     transportation    0     0     0     0   464   915  1.2k    6k    8k   24k   17k   19k   64k   47k   33k   64k
           waterway    0     0     0     0   111   118     0     0     0  3.2k  2.1k  2.1k  2.1k  4.9k  2.4k  4.9k
               park    0     0     0     0     0     0    1k  3.8k  9.7k   18k   13k  8.1k  4.3k  3.4k  4.4k   18k
transportation_name    0     0     0     0     0     0   359   454  1.2k  1.7k  5.4k  4.6k  3.8k  3.4k   18k   18k
          landcover    0     0     0     0     0     0     0  9.5k   29k   85k   72k   81k   53k   30k   24k   85k
      mountain_peak    0     0     0     0     0     0     0  1.1k  1.8k  3.4k  4.3k  2.8k  1.4k  1.4k   869  4.3k
         water_name    0     0     0     0     0     0     0     0     0   486   461   433   452  1.2k  1.5k  1.5k
    aerodrome_label    0     0     0     0     0     0     0     0     0     0   674   327   273   220   220   674
            aeroway    0     0     0     0     0     0     0     0     0     0  1.6k  2.1k    3k  3.4k  2.7k  3.4k
                poi    0     0     0     0     0     0     0     0     0     0     0     0   501   498   73k   73k
           building    0     0     0     0     0     0     0     0     0     0     0     0     0   59k   92k   92k
        housenumber    0     0     0     0     0     0     0     0     0     0     0     0     0     0   35k   35k
          full tile 7.9k    4k  9.5k  6.5k  3.8k  6.1k   20k   41k   84k  203k  184k  135k  113k  127k  233k  233k
            gzipped 6.2k  3.6k  7.1k  5.2k  3.2k  4.8k   13k   29k   60k  148k  137k   99k   83k   92k  150k  150k
0:01:05 DEB [archive] -    Max tile: 233k (gzipped: 150k)
0:01:05 DEB [archive] -    Avg tile: 5.4k (gzipped: 4k) using weighted average based on OSM traffic
0:01:05 DEB [archive] -     # tiles: 4,115,013
0:01:05 DEB [archive] -  # features: 5,462,375
0:01:05 INF [archive] - Finished in 18s cpu:1m4s avg:3.6
0:01:05 INF [archive] -   read    1x(3% 0.5s wait:16s done:1s)
0:01:05 INF [archive] -   encode  4x(55% 10s wait:2s done:1s)
0:01:05 INF [archive] -   write   1x(22% 4s wait:12s done:1s)
0:01:05 INF - Finished in 1m5s cpu:3m15s gc:1s avg:3
0:01:05 INF - FINISHED!
0:01:05 INF - 
0:01:05 INF - ----------------------------------------
0:01:05 INF - data errors:
0:01:05 INF - 	render_snap_fix_input	16,642
0:01:05 INF - 	osm_multipolygon_missing_way	74
0:01:05 INF - 	osm_boundary_missing_way	70
0:01:05 INF - 	merge_snap_fix_input	14
0:01:05 INF - 	feature_centroid_if_convex_osm_invalid_multipolygon_empty_after_fix	2
0:01:05 INF - 	feature_polygon_osm_invalid_multipolygon_empty_after_fix	2
0:01:05 INF - 	omt_park_area_osm_invalid_multipolygon_empty_after_fix	1
0:01:05 INF - ----------------------------------------
0:01:05 INF - 	overall          1m5s cpu:3m15s gc:1s avg:3
0:01:05 INF - 	lake_centerlines 3s cpu:6s avg:2.1
0:01:05 INF - 	  read     1x(17% 0.5s done:2s)
0:01:05 INF - 	  process  3x(0% 0s done:2s)
0:01:05 INF - 	  write    1x(0% 0s done:2s)
0:01:05 INF - 	water_polygons   14s cpu:37s avg:2.7
0:01:05 INF - 	  read     1x(43% 6s done:7s)
0:01:05 INF - 	  process  3x(36% 5s wait:3s done:5s)
0:01:05 INF - 	  write    1x(4% 0.5s wait:8s done:5s)
0:01:05 INF - 	natural_earth    10s cpu:16s avg:1.6
0:01:05 INF - 	  read     1x(59% 6s done:4s)
0:01:05 INF - 	  process  3x(10% 1s wait:6s done:4s)
0:01:05 INF - 	  write    1x(0% 0s wait:6s done:4s)
0:01:05 INF - 	osm_pass1        2s cpu:6s avg:3.1
0:01:05 INF - 	  read     1x(2% 0s wait:2s)
0:01:05 INF - 	  parse    2x(61% 1s)
0:01:05 INF - 	  process  1x(65% 1s)
0:01:05 INF - 	osm_pass2        17s cpu:1m1s avg:3.5
0:01:05 INF - 	  read     1x(0% 0s wait:9s done:8s)
0:01:05 INF - 	  process  3x(89% 16s)
0:01:05 INF - 	  write    1x(2% 0.4s wait:17s)
0:01:05 INF - 	boundaries       0s cpu:0s avg:2.5
0:01:05 INF - 	agg_stop         0s cpu:0s avg:0
0:01:05 INF - 	sort             1s cpu:3s avg:2.7
0:01:05 INF - 	  worker  1x(54% 0.7s)
0:01:05 INF - 	archive          18s cpu:1m4s avg:3.6
0:01:05 INF - 	  read    1x(3% 0.5s wait:16s done:1s)
0:01:05 INF - 	  encode  4x(55% 10s wait:2s done:1s)
0:01:05 INF - 	  write   1x(22% 4s wait:12s done:1s)
0:01:05 INF - ----------------------------------------
0:01:05 INF - 	archive	107MB
0:01:05 INF - 	features	278MB
-rw-r--r-- 1 runner docker 78M Jan  7 20:20 run.jar

github-actions[bot] avatar Jan 07 '24 20:01 github-actions[bot]

Nice! I wonder if S3 should be a destination that we vary independently from the archive format...? For example an archive in mbtiles, pmtiles or individual files format can all end up in S3, as a file on disk, or some other destination. A naive pipeline using that approach would write to disk first then upload to s3 second, but a specialized s3-files implementation can skip writing to disk, and pmtiles could upload chunks as its writing them so maybe they might need specialized implementations anyway.

msbarry avatar Jan 07 '24 23:01 msbarry

Also I see the amazon s3 dependency adds ~20% to the bundle size. My understanding is it introduces its own threading model as well. Is there any lower level dependency we can use instead that can just help constructing the upload API requests then we make them from a worker pipeline or virtual threads?

msbarry avatar Jan 07 '24 23:01 msbarry

I think there are multiple things to clarify

supported formats

I think the only format that is required to be supported is "files" (uploading maps/{z}/{x}/{y}.pbf).

Neither mbtiles nor pmtiles(1) can be "stream uploaded" since you cannot seek while uploading to s3. And adding support to upload after it was written to disk - at least to me - does not make much sense. There are better tools to do that (aws-cli).

Support for CSV, JSON, proto would be nice but I would say not really required.

(1) the pmtiles header can only be written after everything else was written, but you cannot seek (position=0) while uploading to s3. There may be some hack/workaround by doing a multi-part upload and leave the first part out for the header. That, however, would required to bloat the header to at least 5MB.

approaches

2 jars

The s3-sdk is quite heavy, I agree. I am wondering, however, if it would make sense here to build 2 jars - one with s3 support and one without.

s3-nio-spi

Another approach would be to use an s3-nio-spi which adds support for s3://.... paths. And things could be handled relatively transparently.

https://github.com/awslabs/aws-java-nio-spi-for-s3

The big advantage here is also that we would get read support for all (except mmbtiles) - not super efficient but still.

Users would need to provide that jar and then run planetiler like this:

AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... java -cp planetiler-dist/target/planetiler-dist-0.7-SNAPSHOT-with-deps.jar:$HOME/Downloads/nio-spi-for-s3-1.2.4-all.jar org.openmaptiles.OpenMapTilesMain --output=s3://BUCKET/map/{z}/{x}/{y}.pbf --force --tile_write_threads=10

The changes are minimal, and I have it implemented here: https://github.com/bbilger/planetiler/tree/s3-nio-spi

Note: it's current implementation writes to disk before uploading but for "files" it's not a big issue (have some experimental branch to bypass that). Note: have a PR open for an issue with alternative s3 providers https://github.com/awslabs/aws-java-nio-spi-for-s3/pull/354

planetiler-addons - FIFO

There's already some pretty powerful mechanism to do "whatever" by using CSV/JSON/proto. Maybe it would make sense to spinoff some planetiler-addon repo that does the s3-upload, and communicates over a FIFO-file with it. A FIFO in a ramdisk should perform pretty well.

planetiler-addons - SPI

We could also introduce some SPI-mechanism to planetiler for file formats. And provide a SPI for s3 (either in that or a separate repo).

native no SDK

Implementing an s3 upload w/o the SDK directly in planetiler is an option as well, but it's quite some work (request-signing, ...). Or we use some alternative client.

  • https://github.com/davidmoten/aws-lightweight-client-java
  • https://github.com/linktosriram/s3-lite

bbilger avatar Jan 23 '24 19:01 bbilger

not sure why I forgot/overlooked that but https://github.com/minio/minio-java would probably the best compromise, to replace the aws sdk with - if we want to go such a route

bbilger avatar Feb 03 '24 12:02 bbilger

@bbilger thanks or the research here! Sorry for the delay, I've been sidetracked on some other projects but hope to get back to this PR and #772 in the near future!

msbarry avatar Feb 03 '24 14:02 msbarry