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

feat: added maxzoomForRendering and minzoomForRendering #272

Merged
merged 5 commits into from
Jun 20, 2022

Conversation

farfromrefug
Copy link
Contributor

This will allow rendering with —maxzoom=6 while having zoom 6 rendered the same way as if —maxzoom=14.

maxzoomForRendering will be used for simplifly algorithms. The default is MAX_ZOOM(14) so by default whatever maxzoom is used you will get the same render as if maxzoom=14

This will allow rendering with `—maxzoom=6` while having zoom 6 rendered the same way as if `—maxzoom=14`
`maxzoomForRendering` will be used for simplifly algorithms
# Conflicts:
#	planetiler-core/src/main/java/com/onthegomap/planetiler/FeatureCollector.java
@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Base c9682d5 This Branch f20b99b
0:01:35 DEB [mbtiles] - Tile stats:
0:01:35 DEB [mbtiles] - z0 avg:7.9k max:7.9k
0:01:35 DEB [mbtiles] - z1 avg:4k max:4k
0:01:35 DEB [mbtiles] - z2 avg:9.4k max:9.4k
0:01:35 DEB [mbtiles] - z3 avg:3.9k max:6.4k
0:01:35 DEB [mbtiles] - z4 avg:1.6k max:4.6k
0:01:35 DEB [mbtiles] - z5 avg:1.4k max:8.1k
0:01:35 DEB [mbtiles] - z6 avg:972 max:22k
0:01:35 DEB [mbtiles] - z7 avg:751 max:55k
0:01:35 DEB [mbtiles] - z8 avg:394 max:112k
0:01:35 DEB [mbtiles] - z9 avg:270 max:278k
0:01:35 DEB [mbtiles] - z10 avg:154 max:233k
0:01:35 DEB [mbtiles] - z11 avg:102 max:132k
0:01:35 DEB [mbtiles] - z12 avg:83 max:119k
0:01:35 DEB [mbtiles] - z13 avg:71 max:109k
0:01:35 DEB [mbtiles] - z14 avg:67 max:257k
0:01:35 DEB [mbtiles] - all avg:69 max:0
0:01:35 DEB [mbtiles] -  # features: 5,291,624
0:01:35 DEB [mbtiles] -     # tiles: 4,115,450
0:01:35 INF [mbtiles] - Finished in 24s cpu:46s avg:1.9
0:01:35 INF [mbtiles] -   read    1x(3% 0.7s wait:23s)
0:01:35 INF [mbtiles] -   encode  2x(54% 13s wait:3s)
0:01:35 INF [mbtiles] -   write   1x(27% 6s wait:16s)
0:01:35 INF - Finished in 1m35s cpu:2m50s gc:3s avg:1.8
0:01:35 INF - FINISHED!
0:01:35 INF - 
0:01:35 INF - ----------------------------------------
0:01:35 INF - 	overall          1m35s cpu:2m50s gc:3s avg:1.8
0:01:35 INF - 	lake_centerlines 2s cpu:3s avg:1.8
0:01:35 INF - 	  read     1x(80% 2s)
0:01:35 INF - 	  process  2x(12% 0.2s wait:2s)
0:01:35 INF - 	  write    1x(0% 0s wait:2s)
0:01:35 INF - 	water_polygons   23s cpu:40s gc:2s avg:1.7
0:01:35 INF - 	  read     1x(61% 14s wait:2s)
0:01:35 INF - 	  process  2x(26% 6s wait:11s)
0:01:35 INF - 	  write    1x(2% 0.5s wait:22s)
0:01:35 INF - 	natural_earth    8s cpu:13s avg:1.6
0:01:35 INF - 	  read     1x(87% 7s sys:1s)
0:01:35 INF - 	  process  2x(19% 2s wait:7s)
0:01:35 INF - 	  write    1x(0% 0s wait:8s)
0:01:35 INF - 	osm_pass1        3s cpu:5s avg:1.8
0:01:35 INF - 	  read     1x(3% 0.1s wait:3s)
0:01:35 INF - 	  parse    1x(73% 2s)
0:01:35 INF - 	  process  1x(36% 1s wait:2s)
0:01:35 INF - 	osm_pass2        26s cpu:51s avg:2
0:01:35 INF - 	  read     1x(0% 0s wait:13s done:13s)
0:01:35 INF - 	  process  2x(76% 19s)
0:01:35 INF - 	  write    1x(1% 0.3s wait:25s)
0:01:35 INF - 	boundaries       0s cpu:0.1s avg:1.8
0:01:35 INF - 	sort             2s cpu:3s avg:1.3
0:01:35 INF - 	  worker  1x(76% 2s)
0:01:35 INF - 	mbtiles          24s cpu:46s avg:1.9
0:01:35 INF - 	  read    1x(3% 0.7s wait:23s)
0:01:35 INF - 	  encode  2x(54% 13s wait:3s)
0:01:35 INF - 	  write   1x(27% 6s wait:16s)
0:01:35 INF - ----------------------------------------
0:01:35 INF - 	features	270MB
0:01:35 INF - 	mbtiles	108MB
-rw-r--r-- 1 runner docker 55M Jun 20 10:17 run.jar
0:01:36 DEB [mbtiles] - Tile stats:
0:01:36 DEB [mbtiles] - z0 avg:7.9k max:7.9k
0:01:36 DEB [mbtiles] - z1 avg:4k max:4k
0:01:36 DEB [mbtiles] - z2 avg:9.4k max:9.4k
0:01:36 DEB [mbtiles] - z3 avg:3.9k max:6.4k
0:01:36 DEB [mbtiles] - z4 avg:1.6k max:4.6k
0:01:36 DEB [mbtiles] - z5 avg:1.4k max:8.1k
0:01:36 DEB [mbtiles] - z6 avg:972 max:22k
0:01:36 DEB [mbtiles] - z7 avg:751 max:55k
0:01:36 DEB [mbtiles] - z8 avg:394 max:112k
0:01:36 DEB [mbtiles] - z9 avg:270 max:278k
0:01:36 DEB [mbtiles] - z10 avg:154 max:233k
0:01:36 DEB [mbtiles] - z11 avg:102 max:132k
0:01:36 DEB [mbtiles] - z12 avg:83 max:119k
0:01:36 DEB [mbtiles] - z13 avg:71 max:109k
0:01:36 DEB [mbtiles] - z14 avg:67 max:257k
0:01:36 DEB [mbtiles] - all avg:69 max:0
0:01:36 DEB [mbtiles] -  # features: 5,291,624
0:01:36 DEB [mbtiles] -     # tiles: 4,115,450
0:01:36 INF [mbtiles] - Finished in 26s cpu:47s avg:1.8
0:01:36 INF [mbtiles] -   read    1x(3% 0.7s wait:25s)
0:01:36 INF [mbtiles] -   encode  2x(50% 13s wait:5s)
0:01:36 INF [mbtiles] -   write   1x(34% 9s wait:15s)
0:01:36 INF - Finished in 1m37s cpu:2m47s gc:3s avg:1.7
0:01:36 INF - FINISHED!
0:01:36 INF - 
0:01:36 INF - ----------------------------------------
0:01:36 INF - 	overall          1m37s cpu:2m47s gc:3s avg:1.7
0:01:36 INF - 	lake_centerlines 2s cpu:3s avg:1.8
0:01:36 INF - 	  read     1x(75% 1s)
0:01:36 INF - 	  process  2x(11% 0.2s wait:2s)
0:01:36 INF - 	  write    1x(0% 0s wait:2s)
0:01:36 INF - 	water_polygons   22s cpu:38s gc:2s avg:1.8
0:01:36 INF - 	  read     1x(63% 14s wait:2s)
0:01:36 INF - 	  process  2x(27% 6s wait:11s)
0:01:36 INF - 	  write    1x(2% 0.5s wait:21s)
0:01:36 INF - 	natural_earth    8s cpu:13s avg:1.6
0:01:36 INF - 	  read     1x(87% 7s sys:1s)
0:01:36 INF - 	  process  2x(19% 2s wait:7s)
0:01:36 INF - 	  write    1x(0% 0s wait:8s)
0:01:36 INF - 	osm_pass1        3s cpu:6s avg:1.8
0:01:36 INF - 	  read     1x(3% 0.1s wait:3s)
0:01:36 INF - 	  parse    1x(58% 2s)
0:01:36 INF - 	  process  1x(49% 2s wait:1s)
0:01:36 INF - 	osm_pass2        24s cpu:47s avg:2
0:01:36 INF - 	  read     1x(0% 0s wait:12s done:12s)
0:01:36 INF - 	  process  2x(77% 18s)
0:01:36 INF - 	  write    1x(1% 0.3s wait:24s)
0:01:36 INF - 	boundaries       0s cpu:0.1s avg:1.4
0:01:36 INF - 	sort             2s cpu:4s avg:1.7
0:01:36 INF - 	  worker  1x(72% 2s)
0:01:36 INF - 	mbtiles          26s cpu:47s avg:1.8
0:01:36 INF - 	  read    1x(3% 0.7s wait:25s)
0:01:36 INF - 	  encode  2x(50% 13s wait:5s)
0:01:36 INF - 	  write   1x(34% 9s wait:15s)
0:01:36 INF - ----------------------------------------
0:01:36 INF - 	features	270MB
0:01:36 INF - 	mbtiles	108MB
-rw-r--r-- 1 runner docker 55M Jun 20 10:15 run.jar

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

ℹ️ Base Logs c9682d5
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 - Using in-memory stats
0:00:00 INF [overall] - 
0:00:00 INF [overall] - Starting...
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: 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: minzoom=0 (minimum zoom level)
0:00:00 DEB - argument: maxzoom=14 (maximum zoom level (limit 14))
0:00:00 DEB - argument: skip_mbtiles_index_creation=false (skip adding index to mbtiles file)
0:00:00 DEB - argument: optimize_db=false (optimize mbtiles after writing)
0:00:00 DEB - argument: emit_tiles_in_order=true (emit tiles in index order)
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: 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=false (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: 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/out.mbtiles (mbtiles output file)
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: 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 mbtiles metadata)
0:00:00 DEB - argument: mbtiles_description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org ('description' attribute for mbtiles 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 mbtiles metadata)
0:00:00 DEB - argument: mbtiles_version=3.13.1 ('version' attribute for mbtiles metadata)
0:00:00 DEB - argument: mbtiles_type=baselayer ('type' attribute for mbtiles metadata)
0:00:00 DEB - argument: help=false (show arguments then exit)
0:00:00 INF - Building BasemapProfile profile into 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 -   mbtiles: Encode each tile and write to data/out.mbtiles
0:00:00 INF - no wikidata translations found, run with --fetch-wikidata to download
0:00:00 DEB - ✓ 194M storage on / (/dev/root) requested for read phase disk, 30G available
0:00:00 DEB -  - 43M used for temporary node location cache
0:00:00 DEB -  - 6.6M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 144M used for temporary feature storage
0:00:00 DEB - ✓ 216M storage on / (/dev/root) requested for write phase disk, 30G available
0:00:00 DEB -  - 144M used for temporary feature storage
0:00:00 DEB -  - 72M used for mbtiles output
0:00:00 DEB - ✓ 312M 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 -  - 12M used for temporary profile storage
0:00:00 DEB - ✓ 50M storage on / (/dev/root) requested for read phase, 30G available
0:00:00 DEB -  - 43M used for sparsearray node location cache
0:00:00 DEB -  - 6.6M used for multipolygon way geometries
0:00:00 DEB - ✓ 50M temporary files and 2.9G of free memory for OS to cache them
0:00:00 INF - Using merge sort feature map, chunk size=1431mb max workers=2
0:00:01 INF - dataFileCache open start
0:00:01 INF [lake_centerlines] - 
0:00:01 INF [lake_centerlines] - Starting...
0:00:03 INF [lake_centerlines] -  read: [  59k 100%  32k/s ] write: [    0    0/s ] 0    
    cpus: 1.8 gc:  4% heap: 154M/4.2G direct: 237k postGC: 73M
    read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:03 INF [lake_centerlines] - Finished in 2s cpu:3s avg:1.8
0:00:03 INF [lake_centerlines] -   read     1x(80% 2s)
0:00:03 INF [lake_centerlines] -   process  2x(12% 0.2s wait:2s)
0:00:03 INF [lake_centerlines] -   write    1x(0% 0s wait:2s)
0:00:03 INF [water_polygons] - 
0:00:03 INF [water_polygons] - Starting...
0:00:13 INF [water_polygons] -  read: [ 2.2k  15%  223/s ] write: [  59k 5.8k/s ] 1.4G 
    cpus: 1.9 gc: 11% heap: 1.6G/4.2G direct: 52M postGC: 1.1G
    read(60%) ->  (134/1k) -> process(34% 20%) ->  (1k/53k) -> write( 0%)
0:00:23 INF [water_polygons] -  read: [ 6.2k  43%  401/s ] write: [ 337k  27k/s ] 1.4G 
    cpus: 1.6 gc:  7% heap: 3.1G/4.2G direct: 52M postGC: 1.6G
    read(74%) ->    (0/1k) -> process(16% 23%) ->  (1k/53k) -> write( 0%)
0:00:26 INF [water_polygons] -  read: [  14k 100% 2.7k/s ] write: [ 4.3M 1.3M/s ] 186M 
    cpus: 1.7 gc:  9% heap: 3G/4.2G direct: 52M postGC: 1.7G
    read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:26 INF [water_polygons] - Finished in 23s cpu:40s gc:2s avg:1.7
0:00:26 INF [water_polygons] -   read     1x(61% 14s wait:2s)
0:00:26 INF [water_polygons] -   process  2x(26% 6s wait:11s)
0:00:26 INF [water_polygons] -   write    1x(2% 0.5s wait:22s)
0:00:26 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:31 INF [natural_earth] - 
0:00:31 INF [natural_earth] - Starting...
0:00:39 INF [natural_earth] -  read: [ 349k 100%  44k/s ] write: [  181   23/s ] 186M 
    cpus: 1.6 gc:  0% heap: 1.3G/4.2G direct: 52M postGC: 154M
    read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:40 INF [natural_earth] - Finished in 8s cpu:13s avg:1.6
0:00:40 INF [natural_earth] -   read     1x(87% 7s sys:1s)
0:00:40 INF [natural_earth] -   process  2x(19% 2s wait:7s)
0:00:40 INF [natural_earth] -   write    1x(0% 0s wait:8s)
0:00:40 INF [osm_pass1] - 
0:00:40 INF [osm_pass1] - Starting...
0:00:42 INF [osm_pass1:process] - Finished nodes: 4,593,916 (2.4M/s) in 2s cpu:3s avg:1.7
0:00:42 INF [osm_pass1:process] - Finished ways: 330,833 (427k/s) in 0.8s cpu:2s avg:2
0:00:42 INF [osm_pass1:process] - Finished relations: 7,718 (129k/s) in 0.1s cpu:0.1s avg:1.8
0:00:42 INF [osm_pass1] -  nodes: [ 4.5M 1.6M/s ] 416M  ways: [ 330k 116k/s ] rels: [ 7.7k 2.7k/s ] blocks: [  618  218/s ]
    cpus: 1.8 gc:  0% heap: 1.6G/4.2G direct: 52M postGC: 707M hppc: 879k
    read( -%) ->     (0/4) -> parse( -%) ->     (0/4) -> process( -%)
0:00:42 DEB [osm_pass1] - Processed 618 blocks:
0:00:42 DEB [osm_pass1] -   nodes: 4,593,916 (2.4M/s) in 2s cpu:3s avg:1.7
0:00:42 DEB [osm_pass1] -   ways: 330,833 (427k/s) in 0.8s cpu:2s avg:2
0:00:42 DEB [osm_pass1] -   relations: 7,718 (129k/s) in 0.1s cpu:0.1s avg:1.8
0:00:42 INF [osm_pass1] - Finished in 3s cpu:5s avg:1.8
0:00:42 INF [osm_pass1] -   read     1x(3% 0.1s wait:3s)
0:00:42 INF [osm_pass1] -   parse    1x(73% 2s)
0:00:42 INF [osm_pass1] -   process  1x(36% 1s wait:2s)
0:00:42 INF [osm_pass2] - 
0:00:42 INF [osm_pass2] - Starting...
0:00:45 DEB [osm_pass2:process] - Sorting long long multimap...
0:00:45 INF [osm_pass2:process] - Finished nodes: 4,593,916 (2.2M/s) in 2s cpu:4s avg:2
0:00:45 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0s avg:2.1
0:00:45 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:00:52 INF [osm_pass2] -  nodes: [ 4.5M 100% 459k/s ] 416M  ways: [ 204k  62%  20k/s ] rels: [    0   0%    0/s ] features: [   5M  68k/s ] 1.6G  blocks: [  600  97%   59/s ]
    cpus: 2 gc:  1% heap: 1.2G/4.2G direct: 53M postGC: 850M relInfo: 826k mpGeoms: 699k 
    read( 0%) ->   (11/13) -> process(64% 66%) -> (932/53k) -> write( 2%)
0:00:59 INF [osm_pass2:process] - Finished ways: 330,833 (22k/s) in 15s cpu:29s avg:2
0:01:03 INF [osm_pass2] -  nodes: [ 4.5M 100%    0/s ] 416M  ways: [ 330k 100%  12k/s ] rels: [ 3.3k  43%  330/s ] features: [ 5.2M  26k/s ] 1.6G  blocks: [  617 100%    1/s ]
    cpus: 2 gc:  1% heap: 1.1G/4.2G direct: 52M postGC: 841M relInfo: 826k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(80% 81%) -> (915/53k) -> write( 1%)
0:01:06 INF [osm_pass2:process] - Finished relations: 7,718 (1k/s) in 7s cpu:14s avg:2
0:01:08 INF [osm_pass2] -  nodes: [ 4.5M 100%    0/s ] 416M  ways: [ 330k 100%    0/s ] rels: [ 7.7k 100%  788/s ] features: [ 5.2M 3.9k/s ] 270M  blocks: [  618 100%   <1/s ]
    cpus: 2 gc:  0% heap: 1.3G/4.2G direct: 52M postGC: 833M relInfo: 826k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:08 DEB [osm_pass2] - Processed 618 blocks:
0:01:08 DEB [osm_pass2] -   nodes: 4,593,916 (2.2M/s) in 2s cpu:4s avg:2
0:01:08 DEB [osm_pass2] -   ways: 330,833 (22k/s) in 15s cpu:29s avg:2
0:01:08 DEB [osm_pass2] -   relations: 7,718 (1k/s) in 7s cpu:14s avg:2
0:01:08 INF [osm_pass2] - Finished in 26s cpu:51s avg:2
0:01:08 INF [osm_pass2] -   read     1x(0% 0s wait:13s done:13s)
0:01:08 INF [osm_pass2] -   process  2x(76% 19s)
0:01:08 INF [osm_pass2] -   write    1x(1% 0.3s wait:25s)
0:01:08 INF [boundaries] - 
0:01:08 INF [boundaries] - Starting...
0:01:08 INF [boundaries] - Creating polygons for 1 boundaries
0:01:08 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:01:08 INF [boundaries] - Finished creating 0 country polygons
0:01:08 INF [boundaries] - Finished in 0s cpu:0.1s avg:1.8
0:01:08 INF - Deleting node.db to make room for output file
0:01:08 INF [sort] - 
0:01:08 INF [sort] - Starting...
0:01:08 INF [sort] - Grouped 8 chunks into 1
0:01:10 INF [sort] -  chunks: [   1 /   1 100% ] 270M 
    cpus: 1.3 gc:  0% heap: 1.8G/4.2G direct: 52M postGC: 833M
    ->     (0/3) -> worker( -%)
0:01:10 INF [sort] - Finished in 2s cpu:3s avg:1.3
0:01:10 INF [sort] -   worker  1x(76% 2s)
0:01:10 INF - read:0s write:0s sort:0s
0:01:10 INF [mbtiles] - 
0:01:10 INF [mbtiles] - Starting...
0:01:11 DEB [mbtiles:write] - Execute mbtiles: create table metadata (name text, value text);
0:01:11 DEB [mbtiles:write] - Execute mbtiles: create unique index name on metadata (name);
0:01:11 DEB [mbtiles: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:11 DEB [mbtiles:write] - Execute mbtiles: create table tiles_data (
  tile_data_id integer primary key,
  tile_data blob
)

0:01:11 DEB [mbtiles: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:11 DEB [mbtiles:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: format=pbf
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:11 DEB [mbtiles: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:11 DEB [mbtiles:write] - Set mbtiles metadata: version=3.13.1
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: type=baselayer
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: minzoom=0
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: maxzoom=14
0:01:11 DEB [mbtiles: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"},"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":"String","name":"String","rank":"Number","class":"String","name_en":"String","name:latin":"String","ele":"Number"},"minzoom":7,"maxzoom":14},{"id":"park","fields":{"name_int":"String","name_de":"String","name":"String","name:en":"String","class":"String","name_en":"String","name:latin":"String"},"minzoom":6,"maxzoom":14},{"id":"place","fields":{"name:fy":"String","name_int":"String","capital":"Number","name:uk":"String","name:pl":"String","name:nl":"String","name:be":"String","name:ru":"String","name:ko":"String","name_de":"String","name":"String","rank":"Number","name:en":"String","name:eo":"String","class":"String","name:hu":"String","name:ta":"String","name:zh":"String","name_en":"String","name:latin":"String"},"minzoom":2,"maxzoom":14},{"id":"poi","fields":{"name_int":"String","level":"Number","name_de":"String","name":"String","subclass":"String","indoor":"Number","name:en":"String","class":"String","layer":"Number","name:zh":"String","name_en":"String","name:latin":"String"},"minzoom":12,"maxzoom":14},{"id":"transportation","fields":{"access":"String","brunnel":"String","expressway":"Number","surface":"String","bicycle":"String","level":"Number","ramp":"Number","mtb_scale":"String","toll":"Number","oneway":"Number","layer":"Number","network":"String","horse":"String","service":"String","subclass":"String","class":"String","foot":"String"},"minzoom":4,"maxzoom":14},{"id":"transportation_name","fields":{"name_int":"String","route_4":"String","route_3":"String","route_2":"String","route_1":"String","layer":"Number","network":"String","ref":"String","name_de":"String","name":"String","subclass":"String","ref_length":"Number","class":"String","name_en":"String","name:latin":"String"},"minzoom":6,"maxzoom":14},{"id":"water","fields":{"intermittent":"Number","id":"Number","class":"String"},"minzoom":0,"maxzoom":14},{"id":"water_name","fields":{"name_int":"String","name_de":"String","name":"String","intermittent":"Number","class":"String","name_en":"String","name:latin":"String"},"minzoom":9,"maxzoom":14},{"id":"waterway","fields":{"name_int":"String","brunnel":"String","name_de":"String","_relid":"Number","intermittent":"Number","name":"String","class":"String","name:latin":"String","name_en":"String"},"minzoom":4,"maxzoom":14}]}
0:01:12 INF [mbtiles:write] - Starting z0
0:01:12 INF [mbtiles:write] - Finished z0 in 0s cpu:0s avg:0, now starting z1
0:01:12 INF [mbtiles:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:01:12 INF [mbtiles:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:01:12 INF [mbtiles:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:01:12 INF [mbtiles:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:01:12 INF [mbtiles:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:01:12 INF [mbtiles:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:01:13 INF [mbtiles:write] - Finished z7 in 0.5s cpu:1s avg:2, now starting z8
0:01:14 INF [mbtiles:write] - Finished z8 in 1s cpu:2s avg:2, now starting z9
0:01:15 INF [mbtiles:write] - Finished z9 in 0.7s cpu:1s avg:2, now starting z10
0:01:15 INF [mbtiles:write] - Finished z10 in 0.6s cpu:1s avg:2, now starting z11
0:01:16 INF [mbtiles:write] - Finished z11 in 1s cpu:2s avg:2, now starting z12
0:01:18 INF [mbtiles:write] - Finished z12 in 2s cpu:4s avg:2, now starting z13
0:01:21 INF [mbtiles] -  features: [ 635k  12%  62k/s ] 270M  tiles: [ 290k  29k/s ] 13M  
    cpus: 2 gc:  3% heap: 1.2G/4.2G direct: 52M postGC: 838M
    read( 1%) -> (212/217) -> encode(59% 58%) -> (215/216) -> write( 5%)
    last tile: 13/2468/3042 (z13 4%) https://www.openstreetmap.org/#map=13/41.96766/-71.54297
0:01:28 INF [mbtiles:write] - Finished z13 in 10s cpu:20s avg:2, now starting z14
0:01:31 INF [mbtiles] -  features: [   3M  57% 238k/s ] 270M  tiles: [ 1.7M 140k/s ] 66M  
    cpus: 2 gc:  2% heap: 1.2G/4.2G direct: 52M postGC: 824M
    read( 2%) ->   (1/217) -> encode(64% 63%) -> (215/216) -> write(22%)
    last tile: 14/5391/7159 (z14 22%) https://www.openstreetmap.org/#map=14/22.12635/-61.54541
0:01:35 DEB [mbtiles:write] - Shallow tiles written: 4,115,450
0:01:35 DEB [mbtiles:write] - Tile data written: 21,430 (99% omitted)
0:01:35 DEB [mbtiles:write] - Unique tile hashes: 11,272
0:01:35 INF [mbtiles:write] - Finished z14 in 6s cpu:11s avg:1.7
0:01:35 INF [mbtiles] -  features: [ 5.2M 100% 586k/s ] 270M  tiles: [ 4.1M 623k/s ] 108M 
    cpus: 1.6 gc:  1% heap: 1G/4.2G direct: 52M postGC: 825M
    read( -%) ->   (0/217) -> encode( -%  -%) ->   (0/216) -> write(97%)
    last tile: 14/7380/5985 (z14 100%) https://www.openstreetmap.org/#map=14/43.56447/-17.84180
0:01:35 DEB [mbtiles] - Tile stats:
0:01:35 DEB [mbtiles] - z0 avg:7.9k max:7.9k
0:01:35 DEB [mbtiles] - z1 avg:4k max:4k
0:01:35 DEB [mbtiles] - z2 avg:9.4k max:9.4k
0:01:35 DEB [mbtiles] - z3 avg:3.9k max:6.4k
0:01:35 DEB [mbtiles] - z4 avg:1.6k max:4.6k
0:01:35 DEB [mbtiles] - z5 avg:1.4k max:8.1k
0:01:35 DEB [mbtiles] - z6 avg:972 max:22k
0:01:35 DEB [mbtiles] - z7 avg:751 max:55k
0:01:35 DEB [mbtiles] - z8 avg:394 max:112k
0:01:35 DEB [mbtiles] - z9 avg:270 max:278k
0:01:35 DEB [mbtiles] - z10 avg:154 max:233k
0:01:35 DEB [mbtiles] - z11 avg:102 max:132k
0:01:35 DEB [mbtiles] - z12 avg:83 max:119k
0:01:35 DEB [mbtiles] - z13 avg:71 max:109k
0:01:35 DEB [mbtiles] - z14 avg:67 max:257k
0:01:35 DEB [mbtiles] - all avg:69 max:0
0:01:35 DEB [mbtiles] -  # features: 5,291,624
0:01:35 DEB [mbtiles] -     # tiles: 4,115,450
0:01:35 INF [mbtiles] - Finished in 24s cpu:46s avg:1.9
0:01:35 INF [mbtiles] -   read    1x(3% 0.7s wait:23s)
0:01:35 INF [mbtiles] -   encode  2x(54% 13s wait:3s)
0:01:35 INF [mbtiles] -   write   1x(27% 6s wait:16s)
0:01:35 INF - Finished in 1m35s cpu:2m50s gc:3s avg:1.8
0:01:35 INF - FINISHED!
0:01:35 INF - 
0:01:35 INF - ----------------------------------------
0:01:35 INF - 	overall          1m35s cpu:2m50s gc:3s avg:1.8
0:01:35 INF - 	lake_centerlines 2s cpu:3s avg:1.8
0:01:35 INF - 	  read     1x(80% 2s)
0:01:35 INF - 	  process  2x(12% 0.2s wait:2s)
0:01:35 INF - 	  write    1x(0% 0s wait:2s)
0:01:35 INF - 	water_polygons   23s cpu:40s gc:2s avg:1.7
0:01:35 INF - 	  read     1x(61% 14s wait:2s)
0:01:35 INF - 	  process  2x(26% 6s wait:11s)
0:01:35 INF - 	  write    1x(2% 0.5s wait:22s)
0:01:35 INF - 	natural_earth    8s cpu:13s avg:1.6
0:01:35 INF - 	  read     1x(87% 7s sys:1s)
0:01:35 INF - 	  process  2x(19% 2s wait:7s)
0:01:35 INF - 	  write    1x(0% 0s wait:8s)
0:01:35 INF - 	osm_pass1        3s cpu:5s avg:1.8
0:01:35 INF - 	  read     1x(3% 0.1s wait:3s)
0:01:35 INF - 	  parse    1x(73% 2s)
0:01:35 INF - 	  process  1x(36% 1s wait:2s)
0:01:35 INF - 	osm_pass2        26s cpu:51s avg:2
0:01:35 INF - 	  read     1x(0% 0s wait:13s done:13s)
0:01:35 INF - 	  process  2x(76% 19s)
0:01:35 INF - 	  write    1x(1% 0.3s wait:25s)
0:01:35 INF - 	boundaries       0s cpu:0.1s avg:1.8
0:01:35 INF - 	sort             2s cpu:3s avg:1.3
0:01:35 INF - 	  worker  1x(76% 2s)
0:01:35 INF - 	mbtiles          24s cpu:46s avg:1.9
0:01:35 INF - 	  read    1x(3% 0.7s wait:23s)
0:01:35 INF - 	  encode  2x(54% 13s wait:3s)
0:01:35 INF - 	  write   1x(27% 6s wait:16s)
0:01:35 INF - ----------------------------------------
0:01:35 INF - 	features	270MB
0:01:35 INF - 	mbtiles	108MB
-rw-r--r-- 1 runner docker 55M Jun 20 10:17 run.jar
ℹ️ This Branch Logs f20b99b
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 - Using in-memory stats
0:00:00 INF [overall] - 
0:00:00 INF [overall] - Starting...
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: 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: minzoom=0 (minimum zoom level)
0:00:00 DEB - argument: maxzoom=14 (maximum zoom level (limit 14))
0:00:00 DEB - argument: render_maxzoom=14 (maximum rendering zoom level (limit 14))
0:00:00 DEB - argument: skip_mbtiles_index_creation=false (skip adding index to mbtiles file)
0:00:00 DEB - argument: optimize_db=false (optimize mbtiles after writing)
0:00:00 DEB - argument: emit_tiles_in_order=true (emit tiles in index order)
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: 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=false (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: 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/out.mbtiles (mbtiles output file)
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: 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 mbtiles metadata)
0:00:00 DEB - argument: mbtiles_description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org ('description' attribute for mbtiles 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 mbtiles metadata)
0:00:00 DEB - argument: mbtiles_version=3.13.1 ('version' attribute for mbtiles metadata)
0:00:00 DEB - argument: mbtiles_type=baselayer ('type' attribute for mbtiles metadata)
0:00:00 DEB - argument: help=false (show arguments then exit)
0:00:00 INF - Building BasemapProfile profile into 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 -   mbtiles: Encode each tile and write to data/out.mbtiles
0:00:00 INF - no wikidata translations found, run with --fetch-wikidata to download
0:00:00 DEB - ✓ 194M storage on / (/dev/root) requested for read phase disk, 30G available
0:00:00 DEB -  - 43M used for temporary node location cache
0:00:00 DEB -  - 6.6M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 144M used for temporary feature storage
0:00:00 DEB - ✓ 216M storage on / (/dev/root) requested for write phase disk, 30G available
0:00:00 DEB -  - 144M used for temporary feature storage
0:00:00 DEB -  - 72M used for mbtiles output
0:00:00 DEB - ✓ 312M 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 -  - 12M used for temporary profile storage
0:00:00 DEB - ✓ 50M storage on / (/dev/root) requested for read phase, 30G available
0:00:00 DEB -  - 43M used for sparsearray node location cache
0:00:00 DEB -  - 6.6M used for multipolygon way geometries
0:00:00 DEB - ✓ 50M temporary files and 2.9G of free memory for OS to cache them
0:00:00 INF - Using merge sort feature map, chunk size=1431mb max workers=2
0:00:02 INF - dataFileCache open start
0:00:02 INF [lake_centerlines] - 
0:00:02 INF [lake_centerlines] - Starting...
0:00:04 INF [lake_centerlines] -  read: [  59k 100%  32k/s ] write: [    0    0/s ] 0    
    cpus: 1.7 gc:  4% heap: 162M/4.2G direct: 237k postGC: 74M
    read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:04 INF [lake_centerlines] - Finished in 2s cpu:3s avg:1.8
0:00:04 INF [lake_centerlines] -   read     1x(75% 1s)
0:00:04 INF [lake_centerlines] -   process  2x(11% 0.2s wait:2s)
0:00:04 INF [lake_centerlines] -   write    1x(0% 0s wait:2s)
0:00:04 INF [water_polygons] - 
0:00:04 INF [water_polygons] - Starting...
0:00:14 INF [water_polygons] -  read: [ 2.2k  15%  223/s ] write: [  60k 5.9k/s ] 1.4G 
    cpus: 1.9 gc: 12% heap: 1.4G/4.2G direct: 52M postGC: 1.3G
    read(59%) ->  (378/1k) -> process(17% 42%) -> (724/53k) -> write( 0%)
0:00:24 INF [water_polygons] -  read: [ 9.3k  65%  712/s ] write: [ 1.1M 106k/s ] 1.4G 
    cpus: 1.5 gc:  7% heap: 2.4G/4.2G direct: 52M postGC: 1.7G
    read(77%) ->   (1k/1k) -> process(17% 19%) -> (956/53k) -> write( 1%)
0:00:25 INF [water_polygons] -  read: [  14k 100% 3.2k/s ] write: [ 4.3M   2M/s ] 186M 
    cpus: 1.8 gc:  5% heap: 1.8G/4.2G direct: 52M postGC: 1.7G
    read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:25 INF [water_polygons] - Finished in 22s cpu:38s gc:2s avg:1.8
0:00:25 INF [water_polygons] -   read     1x(63% 14s wait:2s)
0:00:25 INF [water_polygons] -   process  2x(27% 6s wait:11s)
0:00:25 INF [water_polygons] -   write    1x(2% 0.5s wait:21s)
0:00:25 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:33 INF [natural_earth] - 
0:00:33 INF [natural_earth] - Starting...
0:00:41 INF [natural_earth] -  read: [ 349k 100%  45k/s ] write: [  181   23/s ] 186M 
    cpus: 1.6 gc:  1% heap: 3.1G/4.2G direct: 52M postGC: 1.7G
    read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:41 INF [natural_earth] - Finished in 8s cpu:13s avg:1.6
0:00:41 INF [natural_earth] -   read     1x(87% 7s sys:1s)
0:00:41 INF [natural_earth] -   process  2x(19% 2s wait:7s)
0:00:41 INF [natural_earth] -   write    1x(0% 0s wait:8s)
0:00:41 INF [osm_pass1] - 
0:00:41 INF [osm_pass1] - Starting...
0:00:44 INF [osm_pass1:process] - Finished nodes: 4,593,916 (1.8M/s) in 2s cpu:4s avg:1.8
0:00:44 INF [osm_pass1:process] - Finished ways: 330,833 (479k/s) in 0.7s cpu:1s avg:2
0:00:44 INF [osm_pass1:process] - Finished relations: 7,718 (145k/s) in 0.1s cpu:0.1s avg:2.1
0:00:44 INF [osm_pass1] -  nodes: [ 4.5M 1.3M/s ] 416M  ways: [ 330k  99k/s ] rels: [ 7.7k 2.3k/s ] blocks: [  618  185/s ]
    cpus: 1.8 gc:  3% heap: 890M/4.2G direct: 52M postGC: 849M hppc: 879k
    read( -%) ->     (0/4) -> parse( -%) ->     (0/4) -> process( -%)
0:00:44 DEB [osm_pass1] - Processed 618 blocks:
0:00:44 DEB [osm_pass1] -   nodes: 4,593,916 (1.8M/s) in 2s cpu:4s avg:1.8
0:00:44 DEB [osm_pass1] -   ways: 330,833 (479k/s) in 0.7s cpu:1s avg:2
0:00:44 DEB [osm_pass1] -   relations: 7,718 (145k/s) in 0.1s cpu:0.1s avg:2.1
0:00:44 INF [osm_pass1] - Finished in 3s cpu:6s avg:1.8
0:00:44 INF [osm_pass1] -   read     1x(3% 0.1s wait:3s)
0:00:44 INF [osm_pass1] -   parse    1x(58% 2s)
0:00:44 INF [osm_pass1] -   process  1x(49% 2s wait:1s)
0:00:44 INF [osm_pass2] - 
0:00:44 INF [osm_pass2] - Starting...
0:00:47 INF [osm_pass2:process] - Finished nodes: 4,593,916 (2M/s) in 2s cpu:4s avg:2
0:00:47 DEB [osm_pass2:process] - Sorting long long multimap...
0:00:47 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0s avg:2.1
0:00:47 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:00:54 INF [osm_pass2] -  nodes: [ 4.5M 100% 459k/s ] 416M  ways: [ 224k  68%  22k/s ] rels: [    0   0%    0/s ] features: [   5M  71k/s ] 1.6G  blocks: [  602  97%   60/s ]
    cpus: 2 gc:  1% heap: 1.2G/4.2G direct: 53M postGC: 870M relInfo: 826k mpGeoms: 4.7M 
    read( 0%) ->   (11/13) -> process(65% 67%) -> (325/53k) -> write( 2%)
0:01:00 INF [osm_pass2:process] - Finished ways: 330,833 (25k/s) in 13s cpu:26s avg:2
0:01:04 INF [osm_pass2] -  nodes: [ 4.5M 100%    0/s ] 416M  ways: [ 330k 100%  10k/s ] rels: [ 4.3k  57%  435/s ] features: [ 5.2M  23k/s ] 1.6G  blocks: [  617 100%    1/s ]
    cpus: 2 gc:  1% heap: 1.8G/4.2G direct: 52M postGC: 849M relInfo: 826k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(86% 82%) -> (1.6k/53k) -> write( 1%)
0:01:06 INF [osm_pass2:process] - Finished relations: 7,718 (1.1k/s) in 7s cpu:13s avg:2
0:01:08 INF [osm_pass2] -  nodes: [ 4.5M 100%    0/s ] 416M  ways: [ 330k 100%    0/s ] rels: [ 7.7k 100%  851/s ] features: [ 5.2M 4.4k/s ] 270M  blocks: [  618 100%   <1/s ]
    cpus: 1.9 gc:  0% heap: 3G/4.2G direct: 52M postGC: 848M relInfo: 826k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:08 DEB [osm_pass2] - Processed 618 blocks:
0:01:08 DEB [osm_pass2] -   nodes: 4,593,916 (2M/s) in 2s cpu:4s avg:2
0:01:08 DEB [osm_pass2] -   ways: 330,833 (25k/s) in 13s cpu:26s avg:2
0:01:08 DEB [osm_pass2] -   relations: 7,718 (1.1k/s) in 7s cpu:13s avg:2
0:01:08 INF [osm_pass2] - Finished in 24s cpu:47s avg:2
0:01:08 INF [osm_pass2] -   read     1x(0% 0s wait:12s done:12s)
0:01:08 INF [osm_pass2] -   process  2x(77% 18s)
0:01:08 INF [osm_pass2] -   write    1x(1% 0.3s wait:24s)
0:01:08 INF [boundaries] - 
0:01:08 INF [boundaries] - Starting...
0:01:08 INF [boundaries] - Creating polygons for 1 boundaries
0:01:08 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:01:08 INF [boundaries] - Finished creating 0 country polygons
0:01:08 INF [boundaries] - Finished in 0s cpu:0.1s avg:1.4
0:01:08 INF - Deleting node.db to make room for output file
0:01:08 INF [sort] - 
0:01:08 INF [sort] - Starting...
0:01:08 INF [sort] - Grouped 8 chunks into 1
0:01:10 INF [sort] -  chunks: [   1 /   1 100% ] 270M 
    cpus: 1.7 gc: 23% heap: 601M/4.2G direct: 52M postGC: 666M
    ->     (0/3) -> worker( -%)
0:01:10 INF [sort] - Finished in 2s cpu:4s avg:1.7
0:01:10 INF [sort] -   worker  1x(72% 2s)
0:01:10 INF - read:0s write:0s sort:0s
0:01:10 INF [mbtiles] - 
0:01:10 INF [mbtiles] - Starting...
0:01:11 DEB [mbtiles:write] - Execute mbtiles: create table metadata (name text, value text);
0:01:11 DEB [mbtiles:write] - Execute mbtiles: create unique index name on metadata (name);
0:01:11 DEB [mbtiles: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:11 DEB [mbtiles:write] - Execute mbtiles: create table tiles_data (
  tile_data_id integer primary key,
  tile_data blob
)

0:01:11 DEB [mbtiles: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:11 DEB [mbtiles:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: format=pbf
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:11 DEB [mbtiles: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:11 DEB [mbtiles:write] - Set mbtiles metadata: version=3.13.1
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: type=baselayer
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: minzoom=0
0:01:11 DEB [mbtiles:write] - Set mbtiles metadata: maxzoom=14
0:01:11 DEB [mbtiles: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","ele":"Number","name_en":"String","name:latin":"String"},"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"},"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":"String","name":"String","rank":"Number","class":"String","name_en":"String","name:latin":"String","ele":"Number"},"minzoom":7,"maxzoom":14},{"id":"park","fields":{"name_int":"String","name_de":"String","name":"String","name:en":"String","class":"String","name_en":"String","name:latin":"String"},"minzoom":6,"maxzoom":14},{"id":"place","fields":{"name:fy":"String","name_int":"String","capital":"Number","name:uk":"String","name:pl":"String","name:nl":"String","name:be":"String","name:ru":"String","name:ko":"String","name_de":"String","name":"String","rank":"Number","name:en":"String","name:eo":"String","class":"String","name:hu":"String","name:ta":"String","name:zh":"String","name_en":"String","name:latin":"String"},"minzoom":2,"maxzoom":14},{"id":"poi","fields":{"name_int":"String","level":"Number","name_de":"String","name":"String","subclass":"String","indoor":"Number","name:en":"String","class":"String","layer":"Number","name:zh":"String","name_en":"String","name:latin":"String"},"minzoom":12,"maxzoom":14},{"id":"transportation","fields":{"brunnel":"String","access":"String","expressway":"Number","bicycle":"String","surface":"String","level":"Number","ramp":"Number","mtb_scale":"String","toll":"Number","layer":"Number","oneway":"Number","network":"String","horse":"String","service":"String","subclass":"String","class":"String","foot":"String"},"minzoom":4,"maxzoom":14},{"id":"transportation_name","fields":{"name_int":"String","route_4":"String","route_3":"String","route_2":"String","route_1":"String","layer":"Number","network":"String","ref":"String","name_de":"String","name":"String","subclass":"String","ref_length":"Number","class":"String","name_en":"String","name:latin":"String"},"minzoom":6,"maxzoom":14},{"id":"water","fields":{"intermittent":"Number","id":"Number","class":"String"},"minzoom":0,"maxzoom":14},{"id":"water_name","fields":{"name_int":"String","name_de":"String","name":"String","intermittent":"Number","class":"String","name_en":"String","name:latin":"String"},"minzoom":9,"maxzoom":14},{"id":"waterway","fields":{"name_int":"String","brunnel":"String","name_de":"String","_relid":"Number","intermittent":"Number","name":"String","class":"String","name:latin":"String","name_en":"String"},"minzoom":4,"maxzoom":14}]}
0:01:12 INF [mbtiles:write] - Starting z0
0:01:12 INF [mbtiles:write] - Finished z0 in 0s cpu:0s avg:0, now starting z1
0:01:12 INF [mbtiles:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:01:12 INF [mbtiles:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:01:12 INF [mbtiles:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:01:12 INF [mbtiles:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:01:12 INF [mbtiles:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:01:12 INF [mbtiles:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:01:12 INF [mbtiles:write] - Finished z7 in 0.5s cpu:1s avg:2, now starting z8
0:01:13 INF [mbtiles:write] - Finished z8 in 0.9s cpu:2s avg:2, now starting z9
0:01:14 INF [mbtiles:write] - Finished z9 in 1s cpu:2s avg:2, now starting z10
0:01:15 INF [mbtiles:write] - Finished z10 in 0.4s cpu:0.9s avg:2, now starting z11
0:01:16 INF [mbtiles:write] - Finished z11 in 1s cpu:2s avg:2, now starting z12
0:01:18 INF [mbtiles:write] - Finished z12 in 2s cpu:4s avg:1.9, now starting z13
0:01:21 INF [mbtiles] -  features: [ 651k  12%  64k/s ] 270M  tiles: [ 290k  29k/s ] 13M  
    cpus: 2 gc:  2% heap: 2.9G/4.2G direct: 52M postGC: 844M
    read( 1%) -> (214/217) -> encode(59% 58%) -> (215/216) -> write( 7%)
    last tile: 13/2469/3048 (z13 4%) https://www.openstreetmap.org/#map=13/41.77131/-71.49902
0:01:28 INF [mbtiles:write] - Finished z13 in 10s cpu:19s avg:1.9, now starting z14
0:01:31 INF [mbtiles] -  features: [ 3.4M  65% 277k/s ] 270M  tiles: [   2M 180k/s ] 73M  
    cpus: 1.9 gc:  3% heap: 871M/4.2G direct: 52M postGC: 830M
    read( 2%) ->   (0/217) -> encode(61% 59%) -> (215/216) -> write(26%)
    last tile: 14/5717/6597 (z14 35%) https://www.openstreetmap.org/#map=14/33.04551/-54.38232
0:01:36 DEB [mbtiles:write] - Shallow tiles written: 4,115,450
0:01:36 DEB [mbtiles:write] - Tile data written: 21,436 (99% omitted)
0:01:36 DEB [mbtiles:write] - Unique tile hashes: 11,278
0:01:36 INF [mbtiles:write] - Finished z14 in 9s cpu:13s avg:1.6
0:01:36 INF [mbtiles] -  features: [ 5.2M 100% 323k/s ] 270M  tiles: [ 4.1M 350k/s ] 108M 
    cpus: 1.4 gc:  0% heap: 2.7G/4.2G direct: 52M postGC: 830M
    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:01:36 DEB [mbtiles] - Tile stats:
0:01:36 DEB [mbtiles] - z0 avg:7.9k max:7.9k
0:01:36 DEB [mbtiles] - z1 avg:4k max:4k
0:01:36 DEB [mbtiles] - z2 avg:9.4k max:9.4k
0:01:36 DEB [mbtiles] - z3 avg:3.9k max:6.4k
0:01:36 DEB [mbtiles] - z4 avg:1.6k max:4.6k
0:01:36 DEB [mbtiles] - z5 avg:1.4k max:8.1k
0:01:36 DEB [mbtiles] - z6 avg:972 max:22k
0:01:36 DEB [mbtiles] - z7 avg:751 max:55k
0:01:36 DEB [mbtiles] - z8 avg:394 max:112k
0:01:36 DEB [mbtiles] - z9 avg:270 max:278k
0:01:36 DEB [mbtiles] - z10 avg:154 max:233k
0:01:36 DEB [mbtiles] - z11 avg:102 max:132k
0:01:36 DEB [mbtiles] - z12 avg:83 max:119k
0:01:36 DEB [mbtiles] - z13 avg:71 max:109k
0:01:36 DEB [mbtiles] - z14 avg:67 max:257k
0:01:36 DEB [mbtiles] - all avg:69 max:0
0:01:36 DEB [mbtiles] -  # features: 5,291,624
0:01:36 DEB [mbtiles] -     # tiles: 4,115,450
0:01:36 INF [mbtiles] - Finished in 26s cpu:47s avg:1.8
0:01:36 INF [mbtiles] -   read    1x(3% 0.7s wait:25s)
0:01:36 INF [mbtiles] -   encode  2x(50% 13s wait:5s)
0:01:36 INF [mbtiles] -   write   1x(34% 9s wait:15s)
0:01:36 INF - Finished in 1m37s cpu:2m47s gc:3s avg:1.7
0:01:36 INF - FINISHED!
0:01:36 INF - 
0:01:36 INF - ----------------------------------------
0:01:36 INF - 	overall          1m37s cpu:2m47s gc:3s avg:1.7
0:01:36 INF - 	lake_centerlines 2s cpu:3s avg:1.8
0:01:36 INF - 	  read     1x(75% 1s)
0:01:36 INF - 	  process  2x(11% 0.2s wait:2s)
0:01:36 INF - 	  write    1x(0% 0s wait:2s)
0:01:36 INF - 	water_polygons   22s cpu:38s gc:2s avg:1.8
0:01:36 INF - 	  read     1x(63% 14s wait:2s)
0:01:36 INF - 	  process  2x(27% 6s wait:11s)
0:01:36 INF - 	  write    1x(2% 0.5s wait:21s)
0:01:36 INF - 	natural_earth    8s cpu:13s avg:1.6
0:01:36 INF - 	  read     1x(87% 7s sys:1s)
0:01:36 INF - 	  process  2x(19% 2s wait:7s)
0:01:36 INF - 	  write    1x(0% 0s wait:8s)
0:01:36 INF - 	osm_pass1        3s cpu:6s avg:1.8
0:01:36 INF - 	  read     1x(3% 0.1s wait:3s)
0:01:36 INF - 	  parse    1x(58% 2s)
0:01:36 INF - 	  process  1x(49% 2s wait:1s)
0:01:36 INF - 	osm_pass2        24s cpu:47s avg:2
0:01:36 INF - 	  read     1x(0% 0s wait:12s done:12s)
0:01:36 INF - 	  process  2x(77% 18s)
0:01:36 INF - 	  write    1x(1% 0.3s wait:24s)
0:01:36 INF - 	boundaries       0s cpu:0.1s avg:1.4
0:01:36 INF - 	sort             2s cpu:4s avg:1.7
0:01:36 INF - 	  worker  1x(72% 2s)
0:01:36 INF - 	mbtiles          26s cpu:47s avg:1.8
0:01:36 INF - 	  read    1x(3% 0.7s wait:25s)
0:01:36 INF - 	  encode  2x(50% 13s wait:5s)
0:01:36 INF - 	  write   1x(34% 9s wait:15s)
0:01:36 INF - ----------------------------------------
0:01:36 INF - 	features	270MB
0:01:36 INF - 	mbtiles	108MB
-rw-r--r-- 1 runner docker 55M Jun 20 10:15 run.jar

@wipfli
Copy link
Contributor

wipfli commented Jun 10, 2022

Interesting that no tests break. Maybe you want to add some for the new behavior? Also, maybe this change could be somewhere reflected in the documentation?

@farfromrefug
Copy link
Contributor Author

@wipfli actually it is not normal for no test to break as the rendering is exactly the same as with maxzoom 14. About the doc yes. I am waiting on @msbarry to see first if he wants some refactoring

Copy link
Contributor

@msbarry msbarry left a comment

Choose a reason for hiding this comment

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

Looks good! A couple of small comments

Comment on lines 104 to 105
arguments.getInteger("minzoomForRendering", "minimum zoom level", MIN_MINZOOM),
arguments.getInteger("maxzoomForRendering", "maximum rendering zoom level (limit 14)", MAX_MAXZOOM),
Copy link
Contributor

Choose a reason for hiding this comment

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

For naming, I think maxzoom_for_render or render_maxzoom (let's stick with lower_camel_case) makes sense, but maybe add to the description that minzoom/maxzoom are "minimum/maximum tile zoom level to generate" and something in the render max zoom that it's the zoom level that contains fine details for overzooming?

On a side note I almost wonder if it is more a property of the profile? Maybe we can revisit as we get deeper into config-driven schemas.

@@ -99,6 +101,8 @@ public static PlanetilerConfig from(Arguments arguments) {
arguments.getDuration("loginterval", "time between logs", "10s"),
arguments.getInteger("minzoom", "minimum zoom level", MIN_MINZOOM),
arguments.getInteger("maxzoom", "maximum zoom level (limit 14)", MAX_MAXZOOM),
arguments.getInteger("minzoomForRendering", "minimum zoom level", MIN_MINZOOM),
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think min zoom for rendering is really necessary - I see it's only used in CacheByZoom which just uses the thresholds to set a size for the value array ahead of time - so just using min zoom would be fine.

@@ -29,7 +29,7 @@ private CacheByZoom(int minzoom, int maxzoom, IntFunction<T> supplier) {
* @return a cache for {@code supplier} by zom
*/
public static <T> CacheByZoom<T> create(PlanetilerConfig config, IntFunction<T> supplier) {
return new CacheByZoom<>(config.minzoom(), config.maxzoom(), supplier);
return new CacheByZoom<>(config.minzoomForRendering(), config.maxzoomForRendering(), supplier);
Copy link
Contributor

Choose a reason for hiding this comment

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

these zoom levels don't matter too much - they just define the size of the object array that stores cached values, you can just leave with minzoom/maxzoom so that minzoomForRendering isn't necessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@msbarry actually it fails without this. I end up with an inifinite amount of error about out of bounds (sorry dont have the error here).

@msbarry
Copy link
Contributor

msbarry commented Jun 10, 2022

Interesting that no tests break. Maybe you want to add some for the new behavior? Also, maybe this change could be somewhere reflected in the documentation?

Good point, 1 new test in PlanetilerTest might make sense similar to the compact DB tests - basically run planetiler with --maxzoom=14 and --maxzoom=8 and --render_maxzoom=8 --maxzoom=8 and compare the number of features in some tile at z8 to make sure it's the same for first two, and larger for last one.

That kind of smoke test also ensures we don't throw an exception when someone uses this option.

@farfromrefug
Copy link
Contributor Author

@msbarry i am looking at writing the test. I get the idea of what you want to do but to be honest i am a bit lost on the features to add. what we need for the test is 2 have one feature only visible at zoom 8 and one visible at zoom 14.
That way:

  • --render_maxzoom=8 --maxzoom=8 should show on the zoom 8 feature at zoom 8
  • --maxzoom=14 : same thing
  • --maxzoom=8 is the failure as it will show both features.

The tricky part is that i cant do it with zoomRange it has to be "filtered" by minPixelSize. And that i am a bit lost with.
i can push the skeleton of the test if you want but i did not go much further :s really sorry

@msbarry
Copy link
Contributor

msbarry commented Jun 19, 2022

No problem, I'll take a look at adding a test for this.

@sonarcloud
Copy link

sonarcloud bot commented Jun 20, 2022

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 0 Code Smells

60.0% 60.0% Coverage
0.0% 0.0% Duplication

@msbarry
Copy link
Contributor

msbarry commented Jun 20, 2022

Looks good, thanks for adding!

@msbarry msbarry merged commit 76c7880 into onthegomap:main Jun 20, 2022
@msbarry
Copy link
Contributor

msbarry commented Jun 20, 2022

I think this logic is correct:

var z8Tile = TileCoord.ofXYZ((1 << 8) / 2, (1 << 8) / 2, 8);
assertFalse(baseResult.tiles.containsKey(z8Tile));
assertTrue(renderMaxzoomResult.tiles.containsKey(z8Tile));
assertFalse(maxzoomResult.tiles.containsKey(z8Tile));

We don't want --maxzoom=8 to cause small features to show up in the z8 unless you explicitly set --render-maxzoom=8

@farfromrefug
Copy link
Contributor Author

@msbarry I think you got this wrong (or this PR is not doing what i think it is). The point of render_maxzoom is to have zoom 8 tiles to be exactly like they are when you render with maxzoom=14 so the assert for baseResult should be the same as renderMaxzoomResult and should be false because the feature will be removed because of simplification (in both cases).
while with maxzoomResult (maxzoom=8) the feature is not simplified at zoom 8 because 8 is the maxzoom and thus all simplifications are disabled.

@msbarry
Copy link
Contributor

msbarry commented Jun 20, 2022

I was interpreting render_maxzoom as the zoom level past which clients will overzoom, so it should set a lower simplification/size threshold at that zoom level. This makes minzoom/maxzoom only control which tiles get generated and not affect the contents of those tiles which is likely what most users want.

The test verifies that the contents of z8 tiles is the same with maxzoom=8 or maxzoom=14, but only changes if you set render_maxzoom=8 (which clients would very rarely do).

@farfromrefug
Copy link
Contributor Author

@msbarry damin Mike i am sorry you are 100% right, it is me who got the test mixed up in my head :( i am so so so sorry. Indeed in my case i use render_maxzoom=14 to get what i described before. But your test uses 8.
What i describe would be a test with render_maxzoom=14
Again so so sorry for wasting your time ...

@zokipirlo
Copy link

Great feature. I have a few questions, because I'm not really sure if understand this correctly.

  1. Should this work like Overzooming in tilelive-vector? If I generate mbtile to zoom level 8, currently I get on level 9-14 empty tiles and everything is rendered white (because they doesn't exists).
    With overzooming it generate tiles with same details as of max zoom tile, so if I put render_maxzoom to 8 and maxzoom to 14, it will generate all tiles to z 14, but simplified, with details as of z 8 right?

  2. I get a lot of errors ("Error processing OSM Way ..." and "Error processing OSM Relation ... java.lang.ArrayIndexOutOfBoundsException") if I set render_maxzoom to 8. Is that normal? (tested on currently latest commit in main branch)

@msbarry
Copy link
Contributor

msbarry commented Sep 4, 2022

Great feature. I have a few questions, because I'm not really sure if understand this correctly.

  1. Should this work like Overzooming in tilelive-vector? If I generate mbtile to zoom level 8, currently I get on level 9-14 empty tiles and everything is rendered white (because they doesn't exists).

With overzooming it generate tiles with same details as of max zoom tile, so if I put render_maxzoom to 8 and maxzoom to 14, it will generate all tiles to z 14, but simplified, with details as of z 8 right?

  1. I get a lot of errors ("Error processing OSM Way ..." and "Error processing OSM Relation ... java.lang.ArrayIndexOutOfBoundsException") if I set render_maxzoom to 8. Is that normal? (tested on currently latest commit in main branch)

Hello! Overzooming only happens in the client. Planetiler assists the client by including more detail at the max zoom level for rendering that it generates. This PR made it so that setting max zoom lower just omits zoom levels above that, without including more detail at the max zoom level. If you actually do want more detail at that max zoom level, then use the max zoom level for rendering flag instead.

Setting max zoom level for rendering less than max zoom results in undefined, I'll try adding an error message at startup that explains a little better.

@zokipirlo
Copy link

Aha, now I get it, thanks. Client (at least mine) will overzoom if you say that generated map is to zoom 8 (source in style.json) and you want max zoom 14 (for example in mapbox map). But when you have merged map with some parts (planet) to level 8 and some region (country) to 14 will:

  • when set as maxzoom 8 in source inside style.json: overzoom everything even if tiles are generated higher than 8
  • when set as maxzoom 14 in source inside style.json: empty tiles for zoom level above 8 if zoomed outside generated region

I thought it's solving that problem. My mistake, sorry.

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.

None yet

4 participants