Fix downloading tile weights in CI (#668)

pull/670/head
Michael Barry 2023-09-22 06:30:17 -04:00 zatwierdzone przez GitHub
rodzic 1f23b55274
commit 0a241e17e1
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 28 dodań i 8 usunięć

Wyświetl plik

@ -725,7 +725,7 @@ public class Planetiler {
download();
}
if (fetchOsmTileStats) {
TopOsmTiles.downloadPrecomputed(config, stats);
TopOsmTiles.downloadPrecomputed(config);
}
ensureInputFilesExist();

Wyświetl plik

@ -68,9 +68,9 @@ public class TileSizeStats {
var arguments = Arguments.fromArgsOrConfigFile(args);
var config = PlanetilerConfig.from(arguments);
var stats = Stats.inMemory();
var download = arguments.getBoolean("download_osm_tile_weights", "download OSM tile weights file", true);
var download = arguments.getBoolean("download_osm_tile_weights|download", "download OSM tile weights file", false);
if (download && !Files.exists(config.tileWeights())) {
TopOsmTiles.downloadPrecomputed(config, stats);
TopOsmTiles.downloadPrecomputed(config);
}
var tileStats = new TilesetSummaryStatistics(TileWeights.readFromFile(config.tileWeights()));
var inputString = arguments.getString("input", "input file");

Wyświetl plik

@ -1,6 +1,9 @@
package com.onthegomap.planetiler.util;
import static com.onthegomap.planetiler.util.Exceptions.throwFatalException;
import static java.nio.file.StandardOpenOption.CREATE;
import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
import static java.nio.file.StandardOpenOption.WRITE;
import com.google.common.io.LineReader;
import com.onthegomap.planetiler.config.Arguments;
@ -45,7 +48,7 @@ import org.tukaani.xz.XZInputStream;
* </pre>
* <p>
* You can also fetch precomputed top-1m tile stats from summer 2023 using
* {@link #downloadPrecomputed(PlanetilerConfig, Stats)}
* {@link #downloadPrecomputed(PlanetilerConfig)}
*/
public class TopOsmTiles {
@ -180,10 +183,27 @@ public class TopOsmTiles {
* Download precomputed top-1m tile stats from 90 days of openstreetmap.org tile logs to
* {@link PlanetilerConfig#tileWeights()} path if they don't already exist.
*/
public static void downloadPrecomputed(PlanetilerConfig config, Stats stats) {
if (!Files.exists(config.tileWeights())) {
Downloader.create(config, stats)
.downloadIfNecessary(new Downloader.ResourceToDownload("osm-tile-weights", DOWLOAD_URL, config.tileWeights()));
@SuppressWarnings("java:S2142")
public static void downloadPrecomputed(PlanetilerConfig config) {
var dest = config.tileWeights();
if (!Files.exists(dest)) {
var tmp = dest.resolveSibling(dest.getFileName() + ".tmp");
FileUtils.deleteOnExit(tmp);
try {
try (
var in = Downloader.openStream(DOWLOAD_URL, config);
var out = Files.newOutputStream(tmp, CREATE, TRUNCATE_EXISTING, WRITE)
) {
LOGGER.info("Downloading pre-computed tile weights from {} to {}", DOWLOAD_URL, dest);
in.transferTo(out);
}
Files.move(tmp, dest);
} catch (IOException e) {
LOGGER.warn("Failed downloading pre-computed tile weights: {}", e.toString());
FileUtils.delete(dest);
} finally {
FileUtils.delete(tmp);
}
}
}
}