From 38118611513deced3617e3f581920125484923f0 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Sat, 4 Apr 2026 19:44:07 +0200 Subject: add osmand sqlite output format (lib & cli) --- hittekaart-cli/src/main.rs | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'hittekaart-cli') diff --git a/hittekaart-cli/src/main.rs b/hittekaart-cli/src/main.rs index 11133af..880ea61 100644 --- a/hittekaart-cli/src/main.rs +++ b/hittekaart-cli/src/main.rs @@ -7,8 +7,8 @@ use color_eyre::{ }; use hittekaart::{ gpx::{self, Compression}, - renderer::{self, heatmap, marktile, tilehunt, Renderer}, - storage::{Folder, Sqlite, Storage}, + renderer::{self, Renderer, heatmap, marktile, tilehunt}, + storage::{Folder, Sqlite, Storage, TableFormat}, }; use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle}; use is_terminal::IsTerminal; @@ -25,6 +25,14 @@ enum Mode { Tilehunter, } +/// Output format. +#[derive(ValueEnum, Debug, Clone, Copy, PartialEq, Eq, Hash)] +enum Format { + Folder, + Sqlite, + OsmAnd, +} + #[derive(Parser, Debug, Clone)] #[command(author, version, about)] struct Args { @@ -49,10 +57,9 @@ struct Args { #[arg(long, short)] output: Option, - /// Store the tiles in a SQLite database. If given, `--output` will determine the SQLite - /// filename. + /// Output format. #[arg(long)] - sqlite: bool, + format: Format, /// Generation mode. #[arg(value_enum, long, short, default_value_t = Mode::Heatmap)] @@ -115,12 +122,19 @@ fn run(renderer: R, args: Args) -> Result<()> { let tracks = tracks.into_iter().collect::>>()?; bar.finish(); - let mut storage: Box = if args.sqlite { - let output = args.output.unwrap_or_else(|| "tiles.sqlite".into()); - Box::new(Sqlite::connect(output)?) - } else { - let output = args.output.unwrap_or_else(|| "tiles".into()); - Box::new(Folder::new(output)) + let mut storage: Box = match args.format { + Format::Folder => { + let output = args.output.unwrap_or_else(|| "tiles".into()); + Box::new(Folder::new(output)) + } + Format::Sqlite => { + let output = args.output.unwrap_or_else(|| "tiles.sqlite".into()); + Box::new(Sqlite::connect(output, TableFormat::Simple)?) + } + Format::OsmAnd => { + let output = args.output.unwrap_or_else(|| "tiles.sqlitedb".into()); + Box::new(Sqlite::connect(output, TableFormat::OsmAnd)?) + } }; storage.prepare()?; -- cgit v1.2.3 From f6f5f3c42545a1beb15e93bc29d405c601fe106a Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Sun, 5 Apr 2026 16:58:13 +0200 Subject: implement mb-tiles output format --- hittekaart-cli/src/main.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'hittekaart-cli') diff --git a/hittekaart-cli/src/main.rs b/hittekaart-cli/src/main.rs index 880ea61..944a4da 100644 --- a/hittekaart-cli/src/main.rs +++ b/hittekaart-cli/src/main.rs @@ -8,7 +8,7 @@ use color_eyre::{ use hittekaart::{ gpx::{self, Compression}, renderer::{self, Renderer, heatmap, marktile, tilehunt}, - storage::{Folder, Sqlite, Storage, TableFormat}, + storage::{Folder, MbTiles, OsmAnd, Storage}, }; use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle}; use is_terminal::IsTerminal; @@ -29,8 +29,8 @@ enum Mode { #[derive(ValueEnum, Debug, Clone, Copy, PartialEq, Eq, Hash)] enum Format { Folder, - Sqlite, OsmAnd, + MbTiles, } #[derive(Parser, Debug, Clone)] @@ -127,13 +127,13 @@ fn run(renderer: R, args: Args) -> Result<()> { let output = args.output.unwrap_or_else(|| "tiles".into()); Box::new(Folder::new(output)) } - Format::Sqlite => { - let output = args.output.unwrap_or_else(|| "tiles.sqlite".into()); - Box::new(Sqlite::connect(output, TableFormat::Simple)?) + Format::MbTiles => { + let output = args.output.unwrap_or_else(|| "tiles.mbtiles".into()); + Box::new(MbTiles::open(output)?) } Format::OsmAnd => { let output = args.output.unwrap_or_else(|| "tiles.sqlitedb".into()); - Box::new(Sqlite::connect(output, TableFormat::OsmAnd)?) + Box::new(OsmAnd::open(output)?) } }; storage.prepare()?; -- cgit v1.2.3 From 4ef21714fa2d1c0fd79839294950eb464b036891 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Sun, 5 Apr 2026 17:11:25 +0200 Subject: update docs --- hittekaart-cli/src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'hittekaart-cli') diff --git a/hittekaart-cli/src/main.rs b/hittekaart-cli/src/main.rs index 944a4da..e4a227c 100644 --- a/hittekaart-cli/src/main.rs +++ b/hittekaart-cli/src/main.rs @@ -53,7 +53,8 @@ struct Args { threads: usize, /// The output directory. Will be created if it does not exist. Defaults to "tiles" for the - /// folder-based storage, and "tiles.sqlite" for the SQLite-based storage. + /// folder-based storage, "tiles.sqlitedb" for the OsmAnd format, and "tiles.mbtiles" for the + /// MBTiles format. #[arg(long, short)] output: Option, -- cgit v1.2.3