Cache per-country Geofabrik extracts so Apply doesn't redownload everything
Every region-selection change re-downloaded every selected country's .osm.pbf from scratch, even ones already fetched by a prior build — painful for multi-GB countries. Extracts now persist in data/geofabrik_cache/, keyed by country, and are only re-fetched when Geofabrik's Last-Modified for that country actually moved on (checked with a cheap HEAD) or the file isn't cached yet.
This commit is contained in:
1 parent
077b44ece1
commit
007dee7341
4 files changed
+131
-17
No files matched your search
+10
-4
@@ -99,10 +99,16 @@ There's no standalone per-country file to individually delete —
|
||||
the *whole current selection*. "Remove a country" and "refresh a
|
||||
country" are both just "change the selection, then Apply" (unticking a
|
||||
country and applying rebuilds without it; nothing to separately
|
||||
delete). Every Apply re-extracts the entire selection from scratch, not
|
||||
just what changed — fine given extraction is fast (byte-range requests
|
||||
against remote archives, not per-tile fetches), but worth revisiting if
|
||||
someone selects half of Europe at once and finds it slow.
|
||||
delete). terrain.pmtiles re-extracts its selection from scratch on
|
||||
every Apply — fine given that extraction is byte-range requests
|
||||
against a remote archive, not full downloads. offline.pmtiles, by
|
||||
contrast, downloads a whole country's `.osm.pbf` from Geofabrik (can be
|
||||
multi-GB), so it keeps a per-country cache under
|
||||
`data/geofabrik_cache/` instead of re-fetching on every Apply — a
|
||||
country already cached is only re-downloaded if Geofabrik's own
|
||||
`Last-Modified` for it has moved on since (checked with a cheap `HEAD`,
|
||||
see `PmtilesBuilder.cached_extract`), so growing or shrinking the
|
||||
selection only touches whatever's actually new to it.
|
||||
|
||||
This wraps exactly the manual workflows documented above
|
||||
(`lib/maptool/pmtiles_builder.rb`). offline.pmtiles downloads each
|
||||
|
||||
Reference in new issue
Block a user