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

Convert get all tile coords to iterator #463

Merged
merged 7 commits into from
Feb 5, 2023
Merged

Convert get all tile coords to iterator #463

merged 7 commits into from
Feb 5, 2023

Conversation

msbarry
Copy link
Contributor

@msbarry msbarry commented Jan 28, 2023

Pull mbtiles access methods up to TileArchive and change signature for listing tile coordinates to return a CloseableIterator so you can iterate through all coordinates in the archive without pulling the whole list into memory.

@github-actions
Copy link

github-actions bot commented Jan 28, 2023

Base 88daeb4 This Branch f35b83c
0:02:15 DEB [archive] - Tile stats:
0:02:15 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:15 DEB [archive] - z1 avg:4k max:4k
0:02:15 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:15 DEB [archive] - z3 avg:4k max:6.4k
0:02:15 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:15 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:15 DEB [archive] - z6 avg:993 max:22k
0:02:15 DEB [archive] - z7 avg:776 max:59k
0:02:15 DEB [archive] - z8 avg:416 max:126k
0:02:15 DEB [archive] - z9 avg:280 max:296k
0:02:15 DEB [archive] - z10 avg:160 max:254k
0:02:15 DEB [archive] - z11 avg:105 max:136k
0:02:15 DEB [archive] - z12 avg:83 max:106k
0:02:15 DEB [archive] - z13 avg:71 max:109k
0:02:15 DEB [archive] - z14 avg:67 max:284k
0:02:15 DEB [archive] - all avg:70 max:296k
0:02:15 DEB [archive] -  # features: 5,426,192
0:02:15 DEB [archive] -     # tiles: 4,115,452
0:02:15 INF [archive] - Finished in 35s cpu:1m8s gc:1s avg:2
0:02:15 INF [archive] -   read    1x(2% 0.7s wait:33s)
0:02:15 INF [archive] -   encode  2x(65% 22s)
0:02:15 INF [archive] -   write   1x(12% 4s wait:28s)
0:02:15 INF - Finished in 2m15s cpu:3m59s gc:4s avg:1.8
0:02:15 INF - FINISHED!
0:02:15 INF - 
0:02:15 INF - ----------------------------------------
0:02:15 INF - 	overall          2m15s cpu:3m59s gc:4s avg:1.8
0:02:15 INF - 	lake_centerlines 4s cpu:8s avg:1.9
0:02:15 INF - 	  read     1x(47% 2s done:2s)
0:02:15 INF - 	  process  2x(6% 0.3s wait:2s done:2s)
0:02:15 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:15 INF - 	water_polygons   29s cpu:52s gc:3s avg:1.8
0:02:15 INF - 	  read     1x(55% 16s sys:1s wait:3s)
0:02:15 INF - 	  process  2x(29% 8s wait:12s)
0:02:15 INF - 	  write    1x(2% 0.6s wait:28s)
0:02:15 INF - 	natural_earth    24s cpu:27s avg:1.1
0:02:15 INF - 	  read     1x(63% 15s sys:2s done:8s)
0:02:15 INF - 	  process  2x(6% 1s wait:15s done:8s)
0:02:15 INF - 	  write    1x(0% 0s wait:16s done:8s)
0:02:15 INF - 	osm_pass1        4s cpu:7s avg:1.7
0:02:15 INF - 	  read     1x(1% 0.1s wait:4s)
0:02:15 INF - 	  parse    1x(62% 3s)
0:02:15 INF - 	  process  1x(41% 2s wait:2s)
0:02:15 INF - 	osm_pass2        37s cpu:1m12s avg:2
0:02:15 INF - 	  read     1x(0% 0s wait:20s done:16s)
0:02:15 INF - 	  process  2x(75% 27s)
0:02:15 INF - 	  write    1x(1% 0.4s wait:36s)
0:02:15 INF - 	boundaries       0s cpu:0.1s avg:1.7
0:02:15 INF - 	sort             2s cpu:3s avg:1.3
0:02:15 INF - 	  worker  1x(83% 2s)
0:02:15 INF - 	archive          35s cpu:1m8s gc:1s avg:2
0:02:15 INF - 	  read    1x(2% 0.7s wait:33s)
0:02:15 INF - 	  encode  2x(65% 22s)
0:02:15 INF - 	  write   1x(12% 4s wait:28s)
0:02:15 INF - ----------------------------------------
0:02:15 INF - 	archive	108MB
0:02:15 INF - 	features	276MB
-rw-r--r-- 1 runner docker 65M Feb  5 18:53 run.jar
0:02:11 DEB [archive] - Tile stats:
0:02:11 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:11 DEB [archive] - z1 avg:4k max:4k
0:02:11 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:11 DEB [archive] - z3 avg:4k max:6.4k
0:02:11 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:11 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:11 DEB [archive] - z6 avg:993 max:22k
0:02:11 DEB [archive] - z7 avg:776 max:59k
0:02:11 DEB [archive] - z8 avg:416 max:126k
0:02:11 DEB [archive] - z9 avg:280 max:296k
0:02:11 DEB [archive] - z10 avg:160 max:254k
0:02:11 DEB [archive] - z11 avg:105 max:136k
0:02:11 DEB [archive] - z12 avg:83 max:106k
0:02:11 DEB [archive] - z13 avg:71 max:109k
0:02:11 DEB [archive] - z14 avg:67 max:284k
0:02:11 DEB [archive] - all avg:70 max:296k
0:02:11 DEB [archive] -  # features: 5,426,192
0:02:11 DEB [archive] -     # tiles: 4,115,452
0:02:11 INF [archive] - Finished in 35s cpu:1m9s gc:1s avg:2
0:02:11 INF [archive] -   read    1x(2% 0.7s wait:33s)
0:02:11 INF [archive] -   encode  2x(64% 22s)
0:02:11 INF [archive] -   write   1x(13% 4s wait:28s)
0:02:11 INF - Finished in 2m11s cpu:3m53s gc:4s avg:1.8
0:02:11 INF - FINISHED!
0:02:11 INF - 
0:02:11 INF - ----------------------------------------
0:02:11 INF - 	overall          2m11s cpu:3m53s gc:4s avg:1.8
0:02:11 INF - 	lake_centerlines 4s cpu:7s avg:1.8
0:02:11 INF - 	  read     1x(47% 2s done:2s)
0:02:11 INF - 	  process  2x(6% 0.2s wait:2s done:2s)
0:02:11 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:11 INF - 	water_polygons   26s cpu:48s gc:2s avg:1.8
0:02:11 INF - 	  read     1x(58% 15s wait:2s)
0:02:11 INF - 	  process  2x(30% 8s wait:12s)
0:02:11 INF - 	  write    1x(2% 0.6s wait:26s)
0:02:11 INF - 	natural_earth    24s cpu:28s avg:1.2
0:02:11 INF - 	  read     1x(64% 15s sys:2s done:8s)
0:02:11 INF - 	  process  2x(6% 1s wait:15s done:8s)
0:02:11 INF - 	  write    1x(0% 0s wait:16s done:8s)
0:02:11 INF - 	osm_pass1        4s cpu:7s avg:1.8
0:02:11 INF - 	  read     1x(1% 0.1s wait:3s)
0:02:11 INF - 	  parse    1x(65% 2s)
0:02:11 INF - 	  process  1x(40% 2s wait:2s)
0:02:11 INF - 	osm_pass2        35s cpu:1m9s avg:2
0:02:11 INF - 	  read     1x(0% 0s wait:19s done:16s)
0:02:11 INF - 	  process  2x(75% 27s)
0:02:11 INF - 	  write    1x(1% 0.4s wait:35s)
0:02:11 INF - 	boundaries       0s cpu:0.1s avg:1.6
0:02:11 INF - 	sort             2s cpu:3s avg:1.2
0:02:11 INF - 	  worker  1x(78% 2s)
0:02:11 INF - 	archive          35s cpu:1m9s gc:1s avg:2
0:02:11 INF - 	  read    1x(2% 0.7s wait:33s)
0:02:11 INF - 	  encode  2x(64% 22s)
0:02:11 INF - 	  write   1x(13% 4s wait:28s)
0:02:11 INF - ----------------------------------------
0:02:11 INF - 	archive	108MB
0:02:11 INF - 	features	276MB
-rw-r--r-- 1 runner docker 65M Feb  5 18:51 run.jar

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

ℹ️ Base Logs 88daeb4
0:00:00 DEB - argument: config=null (path to config file)
0:00:00 DEB - argument: area=rhode island (name of the extract to download if osm_url/osm_path not specified (i.e. 'monaco' 'rhode island' 'australia' or 'planet'))
0:00:00 INF - argument: stats=use in-memory stats
0:00:00 DEB - argument: madvise=true (default value for whether to use linux madvise(random) to improve memory-mapped read performance for temporary storage)
0:00:00 DEB - argument: storage=mmap (default storage type for temporary data, one of [ram, mmap, direct])
0:00:00 DEB - argument: threads=2 (num threads)
0:00:00 DEB - argument: write_threads=1 (number of threads to use when writing temp features)
0:00:00 DEB - argument: process_threads=2 (number of threads to use when processing input features)
0:00:00 DEB - argument: bounds=Env[-74.07 : -17.84, 21.34 : 43.55] (bounds)
0:00:00 DEB - argument: polygon=null (a .poly file that limits output to tiles intersecting the shape)
0:00:00 DEB - argument: minzoom=0 (minimum zoom level)
0:00:00 DEB - argument: maxzoom=14 (maximum zoom level up to 15)
0:00:00 DEB - argument: render_maxzoom=14 (maximum rendering zoom level up to 15)
0:00:00 DEB - argument: feature_read_threads=1 (number of threads to use when reading features at tile write time)
0:00:00 DEB - argument: loginterval=10 seconds (time between logs)
0:00:00 DEB - argument: skip_mbtiles_index_creation=false (skip adding index to mbtiles file)
0:00:00 DEB - argument: optimize_db=false (Vacuum analyze mbtiles after writing)
0:00:00 DEB - argument: force=false (overwriting output file and ignore disk/RAM warnings)
0:00:00 DEB - argument: gzip_temp=false (gzip temporary feature storage (uses more CPU, but less disk space))
0:00:00 DEB - argument: mmap_temp=true (use memory-mapped IO for temp feature files)
0:00:00 DEB - argument: sort_max_readers=6 (maximum number of concurrent read threads to use when sorting chunks)
0:00:00 DEB - argument: sort_max_writers=6 (maximum number of concurrent write threads to use when sorting chunks)
0:00:00 DEB - argument: nodemap_type=sparsearray (type of node location map, one of [noop, sortedtable, sparsearray, array])
0:00:00 DEB - argument: nodemap_storage=mmap (storage for node location map, one of [ram, mmap, direct])
0:00:00 DEB - argument: nodemap_madvise=true (use linux madvise(random) for node locations)
0:00:00 DEB - argument: multipolygon_geometry_storage=mmap (storage for multipolygon geometries, one of [ram, mmap, direct])
0:00:00 DEB - argument: multipolygon_geometry_madvise=true (use linux madvise(random) for temporary multipolygon geometry storage)
0:00:00 DEB - argument: http_user_agent=Planetiler downloader (https://github.com/onthegomap/planetiler) (User-Agent header to set when downloading files over HTTP)
0:00:00 DEB - argument: http_timeout=30 seconds (Timeout to use when downloading files over HTTP)
0:00:00 DEB - argument: http_retries=1 (Retries to use when downloading files over HTTP)
0:00:00 DEB - argument: download_chunk_size_mb=100 (Size of file chunks to download in parallel in megabytes)
0:00:00 DEB - argument: download_threads=1 (Number of parallel threads to use when downloading each file)
0:00:00 DEB - argument: min_feature_size_at_max_zoom=0.0625 (Default value for the minimum size in tile pixels of features to emit at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: min_feature_size=1.0 (Default value for the minimum size in tile pixels of features to emit below the maximum zoom level)
0:00:00 DEB - argument: simplify_tolerance_at_max_zoom=0.0625 (Default value for the tile pixel tolerance to use when simplifying features at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: simplify_tolerance=0.1 (Default value for the tile pixel tolerance to use when simplifying features below the maximum zoom level)
0:00:00 DEB - argument: osm_lazy_reads=true (Read OSM blocks from disk in worker threads)
0:00:00 DEB - argument: compact_db=true (Reduce the DB size by separating and deduping the tile data)
0:00:00 DEB - argument: skip_filled_tiles=false (Skip writing tiles containing only polygon fills to the output)
0:00:00 DEB - argument: tile_warning_size_mb=1.0 (Maximum size in megabytes of a tile to emit a warning about)
0:00:00 DEB - argument: 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 (output tile archive)
0:00:00 DEB - argument: version=false (show version then exit)
0:00:00 INF - Planetiler build git hash: 88daeb4d0b7a9b9d5d15e3d670771b2bc58e9fb3
0:00:00 INF - Planetiler build version: 0.6-SNAPSHOT
0:00:00 INF - Planetiler build timestamp: 2023-02-05T18:49:46.578Z
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 tileset metadata)
0:00:00 DEB - argument: mbtiles_description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org ('description' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_attribution=<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a> ('attribution' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_version=3.14.0 ('version' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_type=baselayer ('type' attribute for tileset metadata)
0:00:00 DEB - argument: help=false (show arguments then exit)
0:00:00 INF - Building OpenMapTilesProfile profile into data/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 data/out.mbtiles
0:00:00 INF - no wikidata translations found, run with --fetch-wikidata to download
0:00:00 DEB - ✓ 196M storage on / (/dev/root) requested for read phase disk, 33G available
0:00:00 DEB -  - 44M used for temporary node location cache
0:00:00 DEB -  - 6.7M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 145M used for temporary feature storage
0:00:00 DEB - ✓ 218M storage on / (/dev/root) requested for write phase disk, 33G available
0:00:00 DEB -  - 145M used for temporary feature storage
0:00:00 DEB -  - 72M used for archive output
0:00:00 DEB - ✓ 313M JVM heap requested for read phase, 4.2G available
0:00:00 DEB -  - 300M used for sparsearray node location in-memory index
0:00:00 DEB -  - 13M used for temporary profile storage
0:00:00 DEB - ✓ 51M storage on / (/dev/root) requested for read phase, 33G available
0:00:00 DEB -  - 44M used for sparsearray node location cache
0:00:00 DEB -  - 6.7M used for multipolygon way geometries
0:00:00 DEB - ✓ 51M temporary files and 2.9G of free memory for OS to cache them
0:00:00 INF - Using merge sort feature map, chunk size=1431mb max workers=2
0:00:00 INF [lake_centerlines] - 
0:00:00 INF [lake_centerlines] - Starting...
0:00:04 INF [lake_centerlines] -  read: [  59k 100%  24k/s ] write: [    0    0/s ] 0    
    cpus: 1.8 gc:  3% heap: 167M/4.2G direct: 237k postGC: 78M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:04 INF [lake_centerlines] - Finished in 4s cpu:8s avg:1.9
0:00:04 INF [lake_centerlines] -   read     1x(47% 2s done:2s)
0:00:04 INF [lake_centerlines] -   process  2x(6% 0.3s wait:2s done:2s)
0:00:04 INF [lake_centerlines] -   write    1x(0% 0s wait:2s done:2s)
0:00:04 INF [water_polygons] - 
0:00:04 INF [water_polygons] - Starting...
0:00:14 INF [water_polygons] -  read: [ 1.9k  13%  191/s ] write: [  39k 3.8k/s ] 1.4G 
    cpus: 2 gc:  9% heap: 2.3G/4.2G direct: 51M postGC: 930M
    ->     (0/3) -> read(56%) ->   (73/1k) -> process(12% 49%) -> (539/53k) -> write( 0%)
0:00:24 INF [water_polygons] -  read: [   4k  28%  211/s ] write: [ 221k  18k/s ] 1.4G 
    cpus: 1.9 gc: 11% heap: 2G/4.2G direct: 51M postGC: 1.5G
    ->     (0/3) -> read(52%) ->    (7/1k) -> process(31% 30%) -> (1.3k/53k) -> write( 0%)
0:00:33 INF [water_polygons] -  read: [  14k 100% 1.1k/s ] write: [ 4.3M 462k/s ] 186M 
    cpus: 1.5 gc:  6% heap: 2.9G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:33 INF [water_polygons] - Finished in 29s cpu:52s gc:3s avg:1.8
0:00:33 INF [water_polygons] -   read     1x(55% 16s sys:1s wait:3s)
0:00:33 INF [water_polygons] -   process  2x(29% 8s wait:12s)
0:00:33 INF [water_polygons] -   write    1x(2% 0.6s wait:28s)
0:00:33 INF [natural_earth] - 
0:00:33 INF [natural_earth] - Starting...
0:00:33 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:41 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:52 INF [natural_earth] -  read: [  69k  20% 6.9k/s ] write: [    0    0/s ] 1.6G 
    cpus: 1.2 gc:  0% heap: 2.6G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read(94%) ->    (0/1k) -> process( 4%  4%) -> (106/53k) -> write( 0%)
0:00:57 INF [natural_earth] -  read: [ 349k 100%  47k/s ] write: [  181   31/s ] 186M 
    cpus: 1.5 gc:  1% heap: 2.4G/4.2G direct: 51M postGC: 1.8G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:57 INF [natural_earth] - Finished in 24s cpu:27s avg:1.1
0:00:57 INF [natural_earth] -   read     1x(63% 15s sys:2s done:8s)
0:00:57 INF [natural_earth] -   process  2x(6% 1s wait:15s done:8s)
0:00:57 INF [natural_earth] -   write    1x(0% 0s wait:16s done:8s)
0:00:57 INF [osm_pass1] - 
0:00:57 INF [osm_pass1] - Starting...
0:01:01 INF [osm_pass1:process] - Finished nodes: 4,631,170 (1.4M/s) in 3s cpu:5s avg:1.7
0:01:01 INF [osm_pass1:process] - Finished ways: 339,143 (415k/s) in 0.8s cpu:2s avg:1.9
0:01:02 INF [osm_pass1:process] - Finished relations: 7,952 (76k/s) in 0.1s cpu:0.2s avg:1.9
0:01:02 INF [osm_pass1] -  nodes: [ 4.6M 1.1M/s ] 441M  ways: [ 339k  82k/s ] rels: [ 7.9k 1.9k/s ] blocks: [  623  150/s ]
    cpus: 1.7 gc:  3% heap: 1G/4.2G direct: 51M postGC: 890M hppc: 466k
    read( -%) ->     (0/4) -> parse( -%) ->     (0/4) -> process( -%)
0:01:02 DEB [osm_pass1] - Processed 623 blocks:
0:01:02 DEB [osm_pass1] -   nodes: 4,631,170 (1.4M/s) in 3s cpu:5s avg:1.7
0:01:02 DEB [osm_pass1] -   ways: 339,143 (415k/s) in 0.8s cpu:2s avg:1.9
0:01:02 DEB [osm_pass1] -   relations: 7,952 (76k/s) in 0.1s cpu:0.2s avg:1.9
0:01:02 INF [osm_pass1] - Finished in 4s cpu:7s avg:1.7
0:01:02 INF [osm_pass1] -   read     1x(1% 0.1s wait:4s)
0:01:02 INF [osm_pass1] -   parse    1x(62% 3s)
0:01:02 INF [osm_pass1] -   process  1x(41% 2s wait:2s)
0:01:02 INF [osm_pass2] - 
0:01:02 INF [osm_pass2] - Starting...
0:01:05 INF [osm_pass2:process] - Finished nodes: 4,631,170 (1.5M/s) in 3s cpu:6s avg:2
0:01:05 DEB [osm_pass2:process] - Sorting long long multimap...
0:01:05 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0.1s avg:1.8
0:01:05 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:01:12 INF [osm_pass2] -  nodes: [ 4.6M 100% 462k/s ] 441M  ways: [  79k  23% 7.9k/s ] rels: [    0   0%    0/s ] features: [ 4.7M  38k/s ] 1.6G  blocks: [  588  94%   58/s ]
    cpus: 2 gc:  1% heap: 2.4G/4.2G direct: 51M postGC: 897M relInfo: 426k mpGeoms: 424k 
    read( 0%) ->   (11/13) -> process(62% 63%) ->  (1k/53k) -> write( 1%)
0:01:22 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 441M  ways: [ 258k  76%  17k/s ] rels: [    0   0%    0/s ] features: [ 5.1M  48k/s ] 1.6G  blocks: [  610  98%    2/s ]
    cpus: 2 gc:  1% heap: 1.1G/4.2G direct: 51M postGC: 912M relInfo: 426k mpGeoms: 13M  
    read( 0%) ->   (11/13) -> process(79% 80%) -> (746/53k) -> write( 2%)
0:01:26 INF [osm_pass2:process] - Finished ways: 339,143 (16k/s) in 21s cpu:42s avg:2
0:01:32 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 441M  ways: [ 339k 100%   8k/s ] rels: [ 3.7k  47%  370/s ] features: [ 5.4M  21k/s ] 1.6G  blocks: [  622 100%    1/s ]
    cpus: 2 gc:  1% heap: 1.9G/4.2G direct: 51M postGC: 908M relInfo: 426k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(79% 76%) -> (1.8k/53k) -> write( 1%)
0:01:36 INF [osm_pass2:process] - Finished relations: 7,952 (770/s) in 10s cpu:20s avg:2
0:01:38 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 441M  ways: [ 339k 100%    0/s ] rels: [ 7.9k 100%  658/s ] features: [ 5.4M 3.5k/s ] 276M  blocks: [  623 100%   <1/s ]
    cpus: 2 gc:  1% heap: 2.2G/4.2G direct: 51M postGC: 896M relInfo: 426k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:38 DEB [osm_pass2] - Processed 623 blocks:
0:01:38 DEB [osm_pass2] -   nodes: 4,631,170 (1.5M/s) in 3s cpu:6s avg:2
0:01:38 DEB [osm_pass2] -   ways: 339,143 (16k/s) in 21s cpu:42s avg:2
0:01:38 DEB [osm_pass2] -   relations: 7,952 (770/s) in 10s cpu:20s avg:2
0:01:38 INF [osm_pass2] - Finished in 37s cpu:1m12s avg:2
0:01:38 INF [osm_pass2] -   read     1x(0% 0s wait:20s done:16s)
0:01:38 INF [osm_pass2] -   process  2x(75% 27s)
0:01:38 INF [osm_pass2] -   write    1x(1% 0.4s wait:36s)
0:01:38 INF [boundaries] - 
0:01:38 INF [boundaries] - Starting...
0:01:38 INF [boundaries] - Creating polygons for 1 boundaries
0:01:38 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:01:38 INF [boundaries] - Finished creating 0 country polygons
0:01:38 INF [boundaries] - Finished in 0s cpu:0.1s avg:1.7
0:01:38 INF - Deleting node.db to make room for output file
0:01:38 INF [sort] - 
0:01:38 INF [sort] - Starting...
0:01:38 INF [sort] - Grouped 8 chunks into 1
0:01:41 INF [sort] -  chunks: [   1 /   1 100% ] 276M 
    cpus: 1.3 gc:  0% heap: 2.7G/4.2G direct: 51M postGC: 896M
    ->     (0/3) -> worker( -%)
0:01:41 INF [sort] - Finished in 2s cpu:3s avg:1.3
0:01:41 INF [sort] -   worker  1x(83% 2s)
0:01:41 INF - read:0s write:0s sort:1s
0:01:41 INF [archive] - 
0:01:41 INF [archive] - Starting...
0:01:41 DEB [archive:write] - Execute mbtiles: create table metadata (name text, value text);
0:01:41 DEB [archive:write] - Execute mbtiles: create unique index name on metadata (name);
0:01:41 DEB [archive:write] - Execute mbtiles: create table tiles_shallow (
  zoom_level integer,
  tile_column integer,
  tile_row integer,
  tile_data_id integer

  , primary key(zoom_level,tile_column,tile_row)

) without rowid

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

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

0:01:41 DEB [archive:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:41 DEB [archive:write] - Set mbtiles metadata: format=pbf
0:01:41 DEB [archive:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:41 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:41 DEB [archive:write] - Set mbtiles metadata: version=3.14.0
0:01:41 DEB [archive:write] - Set mbtiles metadata: type=baselayer
0:01:41 DEB [archive:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:41 DEB [archive:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:41 DEB [archive:write] - Set mbtiles metadata: minzoom=0
0:01:41 DEB [archive:write] - Set mbtiles metadata: maxzoom=14
0:01:41 DEB [archive:write] - Set mbtiles metadata: json={"vector_layers":[{"id":"aerodrome_label","fields":{"name_int":"String","iata":"String","ele_ft":"Number","name_de":"String","name":"String","icao":"String","name:en":"String","class":"String","name_en":"String","name:latin":"String","ele":"Number"},"minzoom":10,"maxzoom":14},{"id":"aeroway","fields":{"ref":"String","class":"String"},"minzoom":10,"maxzoom":14},{"id":"boundary","fields":{"disputed":"Number","admin_level":"Number","maritime":"Number"},"minzoom":0,"maxzoom":14},{"id":"building","fields":{"colour":"String","render_height":"Number","render_min_height":"Number","hide_3d":"Boolean"},"minzoom":13,"maxzoom":14},{"id":"housenumber","fields":{"housenumber":"String"},"minzoom":14,"maxzoom":14},{"id":"landcover","fields":{"subclass":"String","class":"String","_numpoints":"Number"},"minzoom":7,"maxzoom":14},{"id":"landuse","fields":{"class":"String"},"minzoom":4,"maxzoom":14},{"id":"mountain_peak","fields":{"name_int":"String","customary_ft":"Number","ele_ft":"Number","name_de":"Str... 2302 more characters
0:01:41 DEB [archive:write] - Set mbtiles metadata: planetiler:version=0.6-SNAPSHOT
0:01:41 DEB [archive:write] - Set mbtiles metadata: planetiler:githash=88daeb4d0b7a9b9d5d15e3d670771b2bc58e9fb3
0:01:41 DEB [archive:write] - Set mbtiles metadata: planetiler:buildtime=2023-02-05T18:49:46.578Z
0:01:41 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationtime=2023-02-04T21:21:21Z
0:01:41 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationseq=3601
0:01:41 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationurl=http://download.geofabrik.de/north-america/us/rhode-island-updates
0:01:43 INF [archive:write] - Starting z0
0:01:43 INF [archive:write] - Finished z0 in 0s cpu:0s avg:0, now starting z1
0:01:43 INF [archive:write] - Finished z1 in 0s cpu:0s avg:0, now starting z2
0:01:43 INF [archive:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:01:43 INF [archive:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:01:43 INF [archive:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:01:43 INF [archive:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:01:43 INF [archive:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:01:44 INF [archive:write] - Finished z7 in 1s cpu:2s avg:2, now starting z8
0:01:46 INF [archive:write] - Finished z8 in 2s cpu:4s avg:2, now starting z9
0:01:49 INF [archive:write] - Finished z9 in 3s cpu:6s avg:2, now starting z10
0:01:51 INF [archive] -  features: [ 144k   3%  13k/s ] 276M  tiles: [  15k 1.5k/s ] 2.5M 
    cpus: 2 gc:  4% heap: 1.8G/4.2G direct: 51M postGC: 1.4G
    read( 1%) -> (214/217) -> encode(59% 60%) -> (215/216) -> write( 1%)
    last tile: 10/453/391 (z10 94%) https://www.openstreetmap.org/#map=10/39.09596/-20.74219
0:01:51 INF [archive:write] - Finished z10 in 2s cpu:3s avg:2, now starting z11
0:01:54 INF [archive:write] - Finished z11 in 3s cpu:6s avg:2, now starting z12
0:01:59 INF [archive:write] - Finished z12 in 5s cpu:9s avg:2, now starting z13
0:02:01 INF [archive] -  features: [ 731k  13%  58k/s ] 276M  tiles: [ 290k  27k/s ] 13M  
    cpus: 2 gc:  2% heap: 2G/4.2G direct: 51M postGC: 1.5G
    read( 1%) -> (214/217) -> encode(66% 66%) -> (215/216) -> write( 3%)
    last tile: 13/2468/3041 (z13 5%) https://www.openstreetmap.org/#map=13/42.00033/-71.54297
0:02:09 INF [archive:write] - Finished z13 in 10s cpu:20s avg:2, now starting z14
0:02:11 INF [archive] -  features: [ 2.3M  44% 164k/s ] 276M  tiles: [ 1.1M  88k/s ] 55M  
    cpus: 2 gc:  2% heap: 3G/4.2G direct: 51M postGC: 1.5G
    read( 2%) -> (214/217) -> encode(77% 75%) -> (215/216) -> write( 9%)
    last tile: 14/4952/6510 (z14 5%) https://www.openstreetmap.org/#map=14/34.63321/-71.19141
0:02:15 DEB [archive:write] - Shallow tiles written: 4,115,452
0:02:15 DEB [archive:write] - Tile data written: 18,579 (100% omitted)
0:02:15 DEB [archive:write] - Unique tile hashes: 8,660
0:02:15 INF [archive:write] - Finished z14 in 6s cpu:12s avg:2
0:02:15 INF [archive] -  features: [ 5.4M 100% 750k/s ] 276M  tiles: [ 4.1M 724k/s ] 108M 
    cpus: 1.9 gc:  3% heap: 2G/4.2G direct: 51M postGC: 1.5G
    read( -%) ->   (0/217) -> encode( -%  -%) ->   (0/216) -> write( -%)
    last tile: 14/7380/5985 (z14 100%) https://www.openstreetmap.org/#map=14/43.56447/-17.84180
0:02:15 DEB [archive] - Tile stats:
0:02:15 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:15 DEB [archive] - z1 avg:4k max:4k
0:02:15 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:15 DEB [archive] - z3 avg:4k max:6.4k
0:02:15 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:15 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:15 DEB [archive] - z6 avg:993 max:22k
0:02:15 DEB [archive] - z7 avg:776 max:59k
0:02:15 DEB [archive] - z8 avg:416 max:126k
0:02:15 DEB [archive] - z9 avg:280 max:296k
0:02:15 DEB [archive] - z10 avg:160 max:254k
0:02:15 DEB [archive] - z11 avg:105 max:136k
0:02:15 DEB [archive] - z12 avg:83 max:106k
0:02:15 DEB [archive] - z13 avg:71 max:109k
0:02:15 DEB [archive] - z14 avg:67 max:284k
0:02:15 DEB [archive] - all avg:70 max:296k
0:02:15 DEB [archive] -  # features: 5,426,192
0:02:15 DEB [archive] -     # tiles: 4,115,452
0:02:15 INF [archive] - Finished in 35s cpu:1m8s gc:1s avg:2
0:02:15 INF [archive] -   read    1x(2% 0.7s wait:33s)
0:02:15 INF [archive] -   encode  2x(65% 22s)
0:02:15 INF [archive] -   write   1x(12% 4s wait:28s)
0:02:15 INF - Finished in 2m15s cpu:3m59s gc:4s avg:1.8
0:02:15 INF - FINISHED!
0:02:15 INF - 
0:02:15 INF - ----------------------------------------
0:02:15 INF - 	overall          2m15s cpu:3m59s gc:4s avg:1.8
0:02:15 INF - 	lake_centerlines 4s cpu:8s avg:1.9
0:02:15 INF - 	  read     1x(47% 2s done:2s)
0:02:15 INF - 	  process  2x(6% 0.3s wait:2s done:2s)
0:02:15 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:15 INF - 	water_polygons   29s cpu:52s gc:3s avg:1.8
0:02:15 INF - 	  read     1x(55% 16s sys:1s wait:3s)
0:02:15 INF - 	  process  2x(29% 8s wait:12s)
0:02:15 INF - 	  write    1x(2% 0.6s wait:28s)
0:02:15 INF - 	natural_earth    24s cpu:27s avg:1.1
0:02:15 INF - 	  read     1x(63% 15s sys:2s done:8s)
0:02:15 INF - 	  process  2x(6% 1s wait:15s done:8s)
0:02:15 INF - 	  write    1x(0% 0s wait:16s done:8s)
0:02:15 INF - 	osm_pass1        4s cpu:7s avg:1.7
0:02:15 INF - 	  read     1x(1% 0.1s wait:4s)
0:02:15 INF - 	  parse    1x(62% 3s)
0:02:15 INF - 	  process  1x(41% 2s wait:2s)
0:02:15 INF - 	osm_pass2        37s cpu:1m12s avg:2
0:02:15 INF - 	  read     1x(0% 0s wait:20s done:16s)
0:02:15 INF - 	  process  2x(75% 27s)
0:02:15 INF - 	  write    1x(1% 0.4s wait:36s)
0:02:15 INF - 	boundaries       0s cpu:0.1s avg:1.7
0:02:15 INF - 	sort             2s cpu:3s avg:1.3
0:02:15 INF - 	  worker  1x(83% 2s)
0:02:15 INF - 	archive          35s cpu:1m8s gc:1s avg:2
0:02:15 INF - 	  read    1x(2% 0.7s wait:33s)
0:02:15 INF - 	  encode  2x(65% 22s)
0:02:15 INF - 	  write   1x(12% 4s wait:28s)
0:02:15 INF - ----------------------------------------
0:02:15 INF - 	archive	108MB
0:02:15 INF - 	features	276MB
-rw-r--r-- 1 runner docker 65M Feb  5 18:53 run.jar
ℹ️ This Branch Logs f35b83c
0:00:00 DEB - argument: config=null (path to config file)
0:00:00 DEB - argument: area=rhode island (name of the extract to download if osm_url/osm_path not specified (i.e. 'monaco' 'rhode island' 'australia' or 'planet'))
0:00:00 INF - argument: stats=use in-memory stats
0:00:00 DEB - argument: madvise=true (default value for whether to use linux madvise(random) to improve memory-mapped read performance for temporary storage)
0:00:00 DEB - argument: storage=mmap (default storage type for temporary data, one of [ram, mmap, direct])
0:00:00 DEB - argument: threads=2 (num threads)
0:00:00 DEB - argument: write_threads=1 (number of threads to use when writing temp features)
0:00:00 DEB - argument: process_threads=2 (number of threads to use when processing input features)
0:00:00 DEB - argument: bounds=Env[-74.07 : -17.84, 21.34 : 43.55] (bounds)
0:00:00 DEB - argument: polygon=null (a .poly file that limits output to tiles intersecting the shape)
0:00:00 DEB - argument: minzoom=0 (minimum zoom level)
0:00:00 DEB - argument: maxzoom=14 (maximum zoom level up to 15)
0:00:00 DEB - argument: render_maxzoom=14 (maximum rendering zoom level up to 15)
0:00:00 DEB - argument: feature_read_threads=1 (number of threads to use when reading features at tile write time)
0:00:00 DEB - argument: loginterval=10 seconds (time between logs)
0:00:00 DEB - argument: skip_mbtiles_index_creation=false (skip adding index to mbtiles file)
0:00:00 DEB - argument: optimize_db=false (Vacuum analyze mbtiles after writing)
0:00:00 DEB - argument: force=false (overwriting output file and ignore disk/RAM warnings)
0:00:00 DEB - argument: gzip_temp=false (gzip temporary feature storage (uses more CPU, but less disk space))
0:00:00 DEB - argument: mmap_temp=true (use memory-mapped IO for temp feature files)
0:00:00 DEB - argument: sort_max_readers=6 (maximum number of concurrent read threads to use when sorting chunks)
0:00:00 DEB - argument: sort_max_writers=6 (maximum number of concurrent write threads to use when sorting chunks)
0:00:00 DEB - argument: nodemap_type=sparsearray (type of node location map, one of [noop, sortedtable, sparsearray, array])
0:00:00 DEB - argument: nodemap_storage=mmap (storage for node location map, one of [ram, mmap, direct])
0:00:00 DEB - argument: nodemap_madvise=true (use linux madvise(random) for node locations)
0:00:00 DEB - argument: multipolygon_geometry_storage=mmap (storage for multipolygon geometries, one of [ram, mmap, direct])
0:00:00 DEB - argument: multipolygon_geometry_madvise=true (use linux madvise(random) for temporary multipolygon geometry storage)
0:00:00 DEB - argument: http_user_agent=Planetiler downloader (https://github.com/onthegomap/planetiler) (User-Agent header to set when downloading files over HTTP)
0:00:00 DEB - argument: http_timeout=30 seconds (Timeout to use when downloading files over HTTP)
0:00:00 DEB - argument: http_retries=1 (Retries to use when downloading files over HTTP)
0:00:00 DEB - argument: download_chunk_size_mb=100 (Size of file chunks to download in parallel in megabytes)
0:00:00 DEB - argument: download_threads=1 (Number of parallel threads to use when downloading each file)
0:00:00 DEB - argument: download_max_bandwidth= (Maximum bandwidth to consume when downloading files in units mb/s, mbps, kbps, etc.)
0:00:00 DEB - argument: min_feature_size_at_max_zoom=0.0625 (Default value for the minimum size in tile pixels of features to emit at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: min_feature_size=1.0 (Default value for the minimum size in tile pixels of features to emit below the maximum zoom level)
0:00:00 DEB - argument: simplify_tolerance_at_max_zoom=0.0625 (Default value for the tile pixel tolerance to use when simplifying features at the maximum zoom level to allow for overzooming)
0:00:00 DEB - argument: simplify_tolerance=0.1 (Default value for the tile pixel tolerance to use when simplifying features below the maximum zoom level)
0:00:00 DEB - argument: osm_lazy_reads=true (Read OSM blocks from disk in worker threads)
0:00:00 DEB - argument: compact_db=true (Reduce the DB size by separating and deduping the tile data)
0:00:00 DEB - argument: skip_filled_tiles=false (Skip writing tiles containing only polygon fills to the output)
0:00:00 DEB - argument: tile_warning_size_mb=1.0 (Maximum size in megabytes of a tile to emit a warning about)
0:00:00 DEB - argument: 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 (output tile archive)
0:00:00 DEB - argument: version=false (show version then exit)
0:00:00 INF - Planetiler build git hash: f35b83c5e238e67143b33b3c85530b464907a1e4
0:00:00 INF - Planetiler build version: 0.6-SNAPSHOT
0:00:00 INF - Planetiler build timestamp: 2023-02-05T18:49:06.882Z
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 tileset metadata)
0:00:00 DEB - argument: mbtiles_description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org ('description' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_attribution=<a href="https://www.openmaptiles.org/" target="_blank">&copy; OpenMapTiles</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a> ('attribution' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_version=3.14.0 ('version' attribute for tileset metadata)
0:00:00 DEB - argument: mbtiles_type=baselayer ('type' attribute for tileset metadata)
0:00:00 DEB - argument: help=false (show arguments then exit)
0:00:00 INF - Building OpenMapTilesProfile profile into data/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 data/out.mbtiles
0:00:00 INF - no wikidata translations found, run with --fetch-wikidata to download
0:00:00 DEB - ✓ 196M storage on / (/dev/root) requested for read phase disk, 33G available
0:00:00 DEB -  - 44M used for temporary node location cache
0:00:00 DEB -  - 6.7M used for temporary multipolygon geometry cache
0:00:00 DEB -  - 145M used for temporary feature storage
0:00:00 DEB - ✓ 218M storage on / (/dev/root) requested for write phase disk, 33G available
0:00:00 DEB -  - 145M used for temporary feature storage
0:00:00 DEB -  - 72M used for archive output
0:00:00 DEB - ✓ 313M JVM heap requested for read phase, 4.2G available
0:00:00 DEB -  - 300M used for sparsearray node location in-memory index
0:00:00 DEB -  - 13M used for temporary profile storage
0:00:00 DEB - ✓ 51M storage on / (/dev/root) requested for read phase, 33G available
0:00:00 DEB -  - 44M used for sparsearray node location cache
0:00:00 DEB -  - 6.7M used for multipolygon way geometries
0:00:00 DEB - ✓ 51M temporary files and 2.9G of free memory for OS to cache them
0:00:00 INF - Using merge sort feature map, chunk size=1431mb max workers=2
0:00:00 INF [lake_centerlines] - 
0:00:00 INF [lake_centerlines] - Starting...
0:00:04 INF [lake_centerlines] -  read: [  59k 100%  25k/s ] write: [    0    0/s ] 0    
    cpus: 1.8 gc:  3% heap: 167M/4.2G direct: 237k postGC: 77M
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:04 INF [lake_centerlines] - Finished in 4s cpu:7s avg:1.8
0:00:04 INF [lake_centerlines] -   read     1x(47% 2s done:2s)
0:00:04 INF [lake_centerlines] -   process  2x(6% 0.2s wait:2s done:2s)
0:00:04 INF [lake_centerlines] -   write    1x(0% 0s wait:2s done:2s)
0:00:04 INF [water_polygons] - 
0:00:04 INF [water_polygons] - Starting...
0:00:14 INF [water_polygons] -  read: [ 1.9k  13%  189/s ] write: [  39k 3.8k/s ] 1.4G 
    cpus: 2 gc: 13% heap: 1.1G/4.2G direct: 51M postGC: 1.2G
    ->     (0/3) -> read(53%) ->   (73/1k) -> process(17% 40%) -> (438/53k) -> write( 0%)
0:00:24 INF [water_polygons] -  read: [ 4.8k  34%  295/s ] write: [ 291k  25k/s ] 1.4G 
    cpus: 1.8 gc:  5% heap: 1.6G/4.2G direct: 51M postGC: 1.5G
    ->     (0/3) -> read(64%) ->    (0/1k) -> process(29% 32%) -> (1.2k/53k) -> write( 0%)
0:00:31 INF [water_polygons] -  read: [  14k 100% 1.5k/s ] write: [ 4.3M 646k/s ] 186M 
    cpus: 1.5 gc:  7% heap: 2.4G/4.2G direct: 51M postGC: 1.7G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:31 INF [water_polygons] - Finished in 26s cpu:48s gc:2s avg:1.8
0:00:31 INF [water_polygons] -   read     1x(58% 15s wait:2s)
0:00:31 INF [water_polygons] -   process  2x(30% 8s wait:12s)
0:00:31 INF [water_polygons] -   write    1x(2% 0.6s wait:26s)
0:00:31 INF [natural_earth] - 
0:00:31 INF [natural_earth] - Starting...
0:00:31 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:38 INF [natural_earth] - unzipping /home/runner/work/planetiler/planetiler/data/sources/natural_earth_vector.sqlite.zip to data/tmp/natearth.sqlite
0:00:48 INF [natural_earth] -  read: [  77k  22% 7.7k/s ] write: [    0    0/s ] 1.6G 
    cpus: 1.2 gc:  1% heap: 1.9G/4.2G direct: 51M postGC: 1.7G
    ->     (0/3) -> read(97%) ->   (39/1k) -> process( 4%  4%) -> (106/53k) -> write( 0%)
0:00:54 INF [natural_earth] -  read: [ 349k 100%  46k/s ] write: [  181   30/s ] 186M 
    cpus: 1.6 gc:  2% heap: 1.6G/4.2G direct: 51M postGC: 1.7G
    ->     (0/3) -> read( -%) ->    (0/1k) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:00:54 INF [natural_earth] - Finished in 24s cpu:28s avg:1.2
0:00:54 INF [natural_earth] -   read     1x(64% 15s sys:2s done:8s)
0:00:54 INF [natural_earth] -   process  2x(6% 1s wait:15s done:8s)
0:00:54 INF [natural_earth] -   write    1x(0% 0s wait:16s done:8s)
0:00:54 INF [osm_pass1] - 
0:00:54 INF [osm_pass1] - Starting...
0:00:57 INF [osm_pass1:process] - Finished nodes: 4,631,170 (1.6M/s) in 3s cpu:5s avg:1.8
0:00:58 INF [osm_pass1:process] - Finished ways: 339,143 (418k/s) in 0.8s cpu:2s avg:1.8
0:00:58 INF [osm_pass1:process] - Finished relations: 7,952 (63k/s) in 0.1s cpu:0.2s avg:1.9
0:00:58 INF [osm_pass1] -  nodes: [ 4.6M 1.2M/s ] 441M  ways: [ 339k  88k/s ] rels: [ 7.9k   2k/s ] blocks: [  623  163/s ]
    cpus: 1.8 gc:  6% heap: 1G/4.2G direct: 51M postGC: 880M hppc: 466k
    read( -%) ->     (0/4) -> parse( -%) ->     (0/4) -> process( -%)
0:00:58 DEB [osm_pass1] - Processed 623 blocks:
0:00:58 DEB [osm_pass1] -   nodes: 4,631,170 (1.6M/s) in 3s cpu:5s avg:1.8
0:00:58 DEB [osm_pass1] -   ways: 339,143 (418k/s) in 0.8s cpu:2s avg:1.8
0:00:58 DEB [osm_pass1] -   relations: 7,952 (63k/s) in 0.1s cpu:0.2s avg:1.9
0:00:58 INF [osm_pass1] - Finished in 4s cpu:7s avg:1.8
0:00:58 INF [osm_pass1] -   read     1x(1% 0.1s wait:3s)
0:00:58 INF [osm_pass1] -   parse    1x(65% 2s)
0:00:58 INF [osm_pass1] -   process  1x(40% 2s wait:2s)
0:00:58 INF [osm_pass2] - 
0:00:58 INF [osm_pass2] - Starting...
0:01:01 DEB [osm_pass2:process] - Sorting long long multimap...
0:01:01 INF [osm_pass2:process] - Finished nodes: 4,631,170 (1.9M/s) in 2s cpu:5s avg:2
0:01:01 DEB [osm_pass2:process] - Sorted long long multimap 0s cpu:0.1s avg:2.1
0:01:01 WAR [osm_pass2:process] - No GB polygon for inferring route network types
0:01:08 INF [osm_pass2] -  nodes: [ 4.6M 100% 462k/s ] 441M  ways: [ 106k  31%  10k/s ] rels: [    0   0%    0/s ] features: [ 4.7M  46k/s ] 1.6G  blocks: [  591  95%   59/s ]
    cpus: 2 gc:  0% heap: 3.2G/4.2G direct: 51M postGC: 890M relInfo: 426k mpGeoms: 574k 
    read( 0%) ->   (11/13) -> process(62% 64%) -> (1.7k/53k) -> write( 2%)
0:01:18 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 441M  ways: [ 267k  79%  16k/s ] rels: [    0   0%    0/s ] features: [ 5.2M  42k/s ] 1.6G  blocks: [  611  98%    1/s ]
    cpus: 2 gc:  1% heap: 2.3G/4.2G direct: 51M postGC: 906M relInfo: 426k mpGeoms: 15M  
    read( -%) ->   (10/13) -> process(78% 80%) -> (1.4k/53k) -> write( 1%)
0:01:21 INF [osm_pass2:process] - Finished ways: 339,143 (16k/s) in 21s cpu:41s avg:2
0:01:28 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 441M  ways: [ 339k 100% 7.1k/s ] rels: [ 4.5k  57%  449/s ] features: [ 5.4M  19k/s ] 1.6G  blocks: [  622 100%    1/s ]
    cpus: 2 gc:  1% heap: 842M/4.2G direct: 51M postGC: 897M relInfo: 426k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process(76% 79%) -> (1.5k/53k) -> write( 1%)
0:01:31 INF [osm_pass2:process] - Finished relations: 7,952 (809/s) in 10s cpu:19s avg:2
0:01:33 INF [osm_pass2] -  nodes: [ 4.6M 100%    0/s ] 441M  ways: [ 339k 100%    0/s ] rels: [ 7.9k 100%  672/s ] features: [ 5.4M 3.5k/s ] 276M  blocks: [  623 100%   <1/s ]
    cpus: 1.9 gc:  1% heap: 2.1G/4.2G direct: 51M postGC: 892M relInfo: 426k mpGeoms: 19M  
    read( -%) ->    (0/13) -> process( -%  -%) ->   (0/53k) -> write( -%)
0:01:33 DEB [osm_pass2] - Processed 623 blocks:
0:01:33 DEB [osm_pass2] -   nodes: 4,631,170 (1.9M/s) in 2s cpu:5s avg:2
0:01:33 DEB [osm_pass2] -   ways: 339,143 (16k/s) in 21s cpu:41s avg:2
0:01:33 DEB [osm_pass2] -   relations: 7,952 (809/s) in 10s cpu:19s avg:2
0:01:33 INF [osm_pass2] - Finished in 35s cpu:1m9s avg:2
0:01:33 INF [osm_pass2] -   read     1x(0% 0s wait:19s done:16s)
0:01:33 INF [osm_pass2] -   process  2x(75% 27s)
0:01:33 INF [osm_pass2] -   write    1x(1% 0.4s wait:35s)
0:01:33 INF [boundaries] - 
0:01:33 INF [boundaries] - Starting...
0:01:33 INF [boundaries] - Creating polygons for 1 boundaries
0:01:33 WAR [boundaries] - Unable to form closed polygon for OSM relation 148838 (likely missing edges)
0:01:33 INF [boundaries] - Finished creating 0 country polygons
0:01:33 INF [boundaries] - Finished in 0s cpu:0.1s avg:1.6
0:01:33 INF - Deleting node.db to make room for output file
0:01:33 INF [sort] - 
0:01:33 INF [sort] - Starting...
0:01:33 INF [sort] - Grouped 8 chunks into 1
0:01:36 INF [sort] -  chunks: [   1 /   1 100% ] 276M 
    cpus: 1.2 gc:  0% heap: 2.6G/4.2G direct: 51M postGC: 892M
    ->     (0/3) -> worker( -%)
0:01:36 INF [sort] - Finished in 2s cpu:3s avg:1.2
0:01:36 INF [sort] -   worker  1x(78% 2s)
0:01:36 INF - read:0s write:0s sort:1s
0:01:36 INF [archive] - 
0:01:36 INF [archive] - Starting...
0:01:36 DEB [archive:write] - Execute mbtiles: create table metadata (name text, value text);
0:01:36 DEB [archive:write] - Execute mbtiles: create unique index name on metadata (name);
0:01:36 DEB [archive:write] - Execute mbtiles: create table tiles_shallow (
  zoom_level integer,
  tile_column integer,
  tile_row integer,
  tile_data_id integer

  , primary key(zoom_level,tile_column,tile_row)

) without rowid

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

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

0:01:36 DEB [archive:write] - Set mbtiles metadata: name=OpenMapTiles
0:01:37 DEB [archive:write] - Set mbtiles metadata: format=pbf
0:01:37 DEB [archive:write] - Set mbtiles metadata: description=A tileset showcasing all layers in OpenMapTiles. https://openmaptiles.org
0:01:37 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:37 DEB [archive:write] - Set mbtiles metadata: version=3.14.0
0:01:37 DEB [archive:write] - Set mbtiles metadata: type=baselayer
0:01:37 DEB [archive:write] - Set mbtiles metadata: bounds=-74.07,21.34,-17.84,43.55
0:01:37 DEB [archive:write] - Set mbtiles metadata: center=-45.955,32.445,3
0:01:37 DEB [archive:write] - Set mbtiles metadata: minzoom=0
0:01:37 DEB [archive:write] - Set mbtiles metadata: maxzoom=14
0:01:37 DEB [archive:write] - Set mbtiles metadata: json={"vector_layers":[{"id":"aerodrome_label","fields":{"name_int":"String","iata":"String","ele_ft":"Number","name_de":"String","name":"String","icao":"String","name:en":"String","class":"String","name_en":"String","name:latin":"String","ele":"Number"},"minzoom":10,"maxzoom":14},{"id":"aeroway","fields":{"ref":"String","class":"String"},"minzoom":10,"maxzoom":14},{"id":"boundary","fields":{"disputed":"Number","admin_level":"Number","maritime":"Number"},"minzoom":0,"maxzoom":14},{"id":"building","fields":{"colour":"String","render_height":"Number","render_min_height":"Number","hide_3d":"Boolean"},"minzoom":13,"maxzoom":14},{"id":"housenumber","fields":{"housenumber":"String"},"minzoom":14,"maxzoom":14},{"id":"landcover","fields":{"subclass":"String","class":"String","_numpoints":"Number"},"minzoom":7,"maxzoom":14},{"id":"landuse","fields":{"class":"String"},"minzoom":4,"maxzoom":14},{"id":"mountain_peak","fields":{"name_int":"String","customary_ft":"Number","ele_ft":"Number","name_de":"Str... 2302 more characters
0:01:37 DEB [archive:write] - Set mbtiles metadata: planetiler:version=0.6-SNAPSHOT
0:01:37 DEB [archive:write] - Set mbtiles metadata: planetiler:githash=f35b83c5e238e67143b33b3c85530b464907a1e4
0:01:37 DEB [archive:write] - Set mbtiles metadata: planetiler:buildtime=2023-02-05T18:49:06.882Z
0:01:37 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationtime=2023-02-04T21:21:21Z
0:01:37 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationseq=3601
0:01:37 DEB [archive:write] - Set mbtiles metadata: planetiler:osm:osmosisreplicationurl=http://download.geofabrik.de/north-america/us/rhode-island-updates
0:01:39 INF [archive:write] - Starting z0
0:01:39 INF [archive:write] - Finished z0 in 0s cpu:0s avg:0, now starting z1
0:01:39 INF [archive:write] - Finished z1 in 0s cpu:0s avg:68.5, now starting z2
0:01:39 INF [archive:write] - Finished z2 in 0s cpu:0s avg:0, now starting z3
0:01:39 INF [archive:write] - Finished z3 in 0s cpu:0s avg:0, now starting z4
0:01:39 INF [archive:write] - Finished z4 in 0s cpu:0s avg:0, now starting z5
0:01:39 INF [archive:write] - Finished z5 in 0s cpu:0s avg:0, now starting z6
0:01:39 INF [archive:write] - Finished z6 in 0s cpu:0s avg:0, now starting z7
0:01:39 INF [archive:write] - Finished z7 in 0.8s cpu:1s avg:2, now starting z8
0:01:42 INF [archive:write] - Finished z8 in 2s cpu:5s avg:2, now starting z9
0:01:45 INF [archive:write] - Finished z9 in 3s cpu:6s avg:2, now starting z10
0:01:46 INF [archive] -  features: [ 143k   3%  13k/s ] 276M  tiles: [  15k 1.5k/s ] 2.5M 
    cpus: 2 gc:  3% heap: 1.4G/4.2G direct: 51M postGC: 1.4G
    read( 1%) -> (214/217) -> encode(61% 60%) -> (215/216) -> write( 1%)
    last tile: 10/453/391 (z10 94%) https://www.openstreetmap.org/#map=10/39.09596/-20.74219
0:01:47 INF [archive:write] - Finished z10 in 2s cpu:4s avg:1.9, now starting z11
0:01:50 INF [archive:write] - Finished z11 in 3s cpu:6s avg:2, now starting z12
0:01:54 INF [archive:write] - Finished z12 in 5s cpu:9s avg:2, now starting z13
0:01:56 INF [archive] -  features: [ 730k  13%  58k/s ] 276M  tiles: [ 290k  27k/s ] 13M  
    cpus: 2 gc:  1% heap: 3.6G/4.2G direct: 51M postGC: 1.5G
    read( 1%) -> (214/217) -> encode(66% 66%) -> (215/216) -> write( 4%)
    last tile: 13/2468/3042 (z13 5%) https://www.openstreetmap.org/#map=13/41.96766/-71.54297
0:02:05 INF [archive:write] - Finished z13 in 10s cpu:20s avg:2, now starting z14
0:02:06 INF [archive] -  features: [ 2.2M  41% 149k/s ] 276M  tiles: [ 1.1M  87k/s ] 45M  
    cpus: 2 gc:  3% heap: 2.2G/4.2G direct: 51M postGC: 1.5G
    read( 2%) -> (213/217) -> encode(75% 71%) -> (215/216) -> write( 9%)
    last tile: 14/4941/6092 (z14 5%) https://www.openstreetmap.org/#map=14/41.83683/-71.43311
0:02:11 DEB [archive:write] - Shallow tiles written: 4,115,452
0:02:11 DEB [archive:write] - Tile data written: 18,649 (100% omitted)
0:02:11 DEB [archive:write] - Unique tile hashes: 8,730
0:02:11 INF [archive:write] - Finished z14 in 6s cpu:13s avg:1.9
0:02:11 INF [archive] -  features: [ 5.4M 100% 690k/s ] 276M  tiles: [ 4.1M 638k/s ] 108M 
    cpus: 1.9 gc:  2% heap: 1.7G/4.2G direct: 51M postGC: 1.5G
    read( -%) ->   (0/217) -> encode( -%  -%) ->   (0/216) -> write( -%)
    last tile: 14/7380/5985 (z14 100%) https://www.openstreetmap.org/#map=14/43.56447/-17.84180
0:02:11 DEB [archive] - Tile stats:
0:02:11 DEB [archive] - z0 avg:7.9k max:7.9k
0:02:11 DEB [archive] - z1 avg:4k max:4k
0:02:11 DEB [archive] - z2 avg:9.4k max:9.4k
0:02:11 DEB [archive] - z3 avg:4k max:6.4k
0:02:11 DEB [archive] - z4 avg:1.6k max:4.6k
0:02:11 DEB [archive] - z5 avg:1.4k max:8.2k
0:02:11 DEB [archive] - z6 avg:993 max:22k
0:02:11 DEB [archive] - z7 avg:776 max:59k
0:02:11 DEB [archive] - z8 avg:416 max:126k
0:02:11 DEB [archive] - z9 avg:280 max:296k
0:02:11 DEB [archive] - z10 avg:160 max:254k
0:02:11 DEB [archive] - z11 avg:105 max:136k
0:02:11 DEB [archive] - z12 avg:83 max:106k
0:02:11 DEB [archive] - z13 avg:71 max:109k
0:02:11 DEB [archive] - z14 avg:67 max:284k
0:02:11 DEB [archive] - all avg:70 max:296k
0:02:11 DEB [archive] -  # features: 5,426,192
0:02:11 DEB [archive] -     # tiles: 4,115,452
0:02:11 INF [archive] - Finished in 35s cpu:1m9s gc:1s avg:2
0:02:11 INF [archive] -   read    1x(2% 0.7s wait:33s)
0:02:11 INF [archive] -   encode  2x(64% 22s)
0:02:11 INF [archive] -   write   1x(13% 4s wait:28s)
0:02:11 INF - Finished in 2m11s cpu:3m53s gc:4s avg:1.8
0:02:11 INF - FINISHED!
0:02:11 INF - 
0:02:11 INF - ----------------------------------------
0:02:11 INF - 	overall          2m11s cpu:3m53s gc:4s avg:1.8
0:02:11 INF - 	lake_centerlines 4s cpu:7s avg:1.8
0:02:11 INF - 	  read     1x(47% 2s done:2s)
0:02:11 INF - 	  process  2x(6% 0.2s wait:2s done:2s)
0:02:11 INF - 	  write    1x(0% 0s wait:2s done:2s)
0:02:11 INF - 	water_polygons   26s cpu:48s gc:2s avg:1.8
0:02:11 INF - 	  read     1x(58% 15s wait:2s)
0:02:11 INF - 	  process  2x(30% 8s wait:12s)
0:02:11 INF - 	  write    1x(2% 0.6s wait:26s)
0:02:11 INF - 	natural_earth    24s cpu:28s avg:1.2
0:02:11 INF - 	  read     1x(64% 15s sys:2s done:8s)
0:02:11 INF - 	  process  2x(6% 1s wait:15s done:8s)
0:02:11 INF - 	  write    1x(0% 0s wait:16s done:8s)
0:02:11 INF - 	osm_pass1        4s cpu:7s avg:1.8
0:02:11 INF - 	  read     1x(1% 0.1s wait:3s)
0:02:11 INF - 	  parse    1x(65% 2s)
0:02:11 INF - 	  process  1x(40% 2s wait:2s)
0:02:11 INF - 	osm_pass2        35s cpu:1m9s avg:2
0:02:11 INF - 	  read     1x(0% 0s wait:19s done:16s)
0:02:11 INF - 	  process  2x(75% 27s)
0:02:11 INF - 	  write    1x(1% 0.4s wait:35s)
0:02:11 INF - 	boundaries       0s cpu:0.1s avg:1.6
0:02:11 INF - 	sort             2s cpu:3s avg:1.2
0:02:11 INF - 	  worker  1x(78% 2s)
0:02:11 INF - 	archive          35s cpu:1m9s gc:1s avg:2
0:02:11 INF - 	  read    1x(2% 0.7s wait:33s)
0:02:11 INF - 	  encode  2x(64% 22s)
0:02:11 INF - 	  write   1x(13% 4s wait:28s)
0:02:11 INF - ----------------------------------------
0:02:11 INF - 	archive	108MB
0:02:11 INF - 	features	276MB
-rw-r--r-- 1 runner docker 65M Feb  5 18:51 run.jar

@bdon
Copy link
Contributor

bdon commented Jan 29, 2023

A couple thoughts:

  • Is it possible to make the reading interfaces a separate interface from the writing interfaces? Combined makes sense for an archive format backed by a transactional DB, but for [FEATURE] PMTiles output format #98 I'm considering implementing reader and writer as wholly separate classes because there isn't much code they would share in common.
  • How should a getAllCoords respect tile order? Does it assume iteration through the set is via tileOrder() ? In Tippecanoe we have the use case of using tile-join to merge two tilesets; thus it's required that all iterators over archives are in TMS order to do this efficiently.
  • I think there are memory concerns with materializing the entire TileCoord + Tile offset, length in memory for PMTiles, but this isn't necessarily relevant for MBTiles. Also, if we only care about materializing a set of TileCoords and don't care about offset, length, we could store this much more compactly using a Roaring32<TileCoord> instead of a List<TileCoord> and not really have a need for a memory-efficient iterator. We need to consider if Planetiler will ever deal with zoom >=16 tilesets possibly as input sources, though.

@msbarry
Copy link
Contributor Author

msbarry commented Feb 4, 2023

  • Is it possible to make the reading interfaces a separate interface from the writing interfaces? Combined makes sense for an archive format backed by a transactional DB, but for [FEATURE] PMTiles output format #98 I'm considering implementing reader and writer as wholly separate classes because there isn't much code they would share in common.

That could possibly work - where would something like tileOrder go though?

  • How should a getAllCoords respect tile order? Does it assume iteration through the set is via tileOrder() ? In Tippecanoe we have the use case of using tile-join to merge two tilesets; thus it's required that all iterators over archives are in TMS order to do this efficiently.

I don't see a need for it to return tiles in a specific order, I'd expect it to respect tileOrder for this archive type.

  • I think there are memory concerns with materializing the entire TileCoord + Tile offset, length in memory for PMTiles, but this isn't necessarily relevant for MBTiles. Also, if we only care about materializing a set of TileCoords and don't care about offset, length, we could store this much more compactly using a Roaring32<TileCoord> instead of a List<TileCoord> and not really have a need for a memory-efficient iterator. We need to consider if Planetiler will ever deal with zoom >=16 tilesets possibly as input sources, though.

That seems interesting if we needed to check tile IDs in random order, but I think a memory-efficient iterator would be simplest to implement. We could always layer something like that on top of an efficient iterator if the need arises.

Also what do you think instead of iterating over the coordinates and tile data?

@bdon
Copy link
Contributor

bdon commented Feb 5, 2023

Overall LGTM, if the main use case is for unit/integration tests then getting a total Set of all TileCoords is easier for pmtiles reading than the memory-efficient iterator.

Iterating over coordinates and tile data can be awkward because of deduplication in both mbtiles/pmtiles as well as RLE in pmtiles, potentially we're feeding a consumer of that iterator a lot of extra work, unless we exposed not just byte[] but also an opaque 64(128?)-bit content hash and made loading the byte[] lazy?

@msbarry
Copy link
Contributor Author

msbarry commented Feb 5, 2023

OK let's start with this for now, at the very least any tile archive should be able to serve the getTile API and most likely listTiles as well, but if it ends up being problematic we could push the list API down into mbtiles and have a separate list API for different implementations. I could maybe see some key/value store supporting random access but not the ability to list tiles.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 5, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

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

76.8% 76.8% Coverage
4.5% 4.5% Duplication

@msbarry msbarry merged commit 9a704e7 into main Feb 5, 2023
@msbarry msbarry deleted the tile-iter branch February 5, 2023 19:16
}

/** Returns the raw tile data associated with the tile at coordinate {@code x, y, z}. */
byte[] getTile(int x, int y, int z);
Copy link
Contributor

Choose a reason for hiding this comment

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

How should this handle the case of the tile not existing? should it be an option return type? It doesn't seem exceptional.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah sorry the javadoc should indicate this, but it should return null if not found.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Opened #486 to fix the javadoc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants