mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 09:03:46 +08:00
ab81464bd1
Add navigation and map matching providers with the vendored map service sources. Co-authored-by: Daniel Koepping <elkoled@gmail.com> Co-authored-by: Danny <dannyirwin31@yahoo.com> Co-authored-by: Prabhaav Pillai <prabhaav@msu.edu> Co-authored-by: dirwin31 <83434411+dirwin31@users.noreply.github.com>
122 lines
3.2 KiB
Go
122 lines
3.2 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/urfave/cli/v3"
|
|
"pfeifer.dev/mapd/maps"
|
|
m "pfeifer.dev/mapd/math"
|
|
"pfeifer.dev/mapd/params"
|
|
)
|
|
|
|
func Handle() {
|
|
shouldExit := true
|
|
cmd := &cli.Command{
|
|
Commands: []*cli.Command{
|
|
{
|
|
Name: "interactive",
|
|
Aliases: []string{"i"},
|
|
Usage: "Send commands to an active mapd instance",
|
|
Action: func(ctx context.Context, cmd *cli.Command) error {
|
|
interactive()
|
|
return nil
|
|
},
|
|
},
|
|
{
|
|
Name: "generate",
|
|
Aliases: []string{"g"},
|
|
Flags: []cli.Flag{
|
|
&cli.Float64Flag{
|
|
Category: "Bounds",
|
|
Name: "minlat",
|
|
Usage: "Sets the minimum latitude in degrees used while generating offline maps",
|
|
Value: -90,
|
|
},
|
|
&cli.Float64Flag{
|
|
Category: "Bounds",
|
|
Name: "minlon",
|
|
Usage: "Sets the minimum longitude in degrees used while generating offline maps",
|
|
Value: -180,
|
|
},
|
|
&cli.Float64Flag{
|
|
Category: "Bounds",
|
|
Name: "maxlat",
|
|
Usage: "Sets the maximum latitude in degrees used while generating offline maps",
|
|
Value: 90,
|
|
},
|
|
&cli.Float64Flag{
|
|
Category: "Bounds",
|
|
Name: "maxlon",
|
|
Usage: "Sets the maximum longitude in degrees used while generating offline maps",
|
|
Value: 180,
|
|
},
|
|
&cli.Float64Flag{
|
|
Category: "Bounds",
|
|
Name: "overlap",
|
|
Usage: "Sets the amount in degrees to overlap each offline tile",
|
|
Value: 0.001,
|
|
},
|
|
&cli.StringFlag{
|
|
Category: "Inputs and Outputs",
|
|
Name: "input-file",
|
|
Usage: "The open street maps pbf file to generate offline map files from",
|
|
Aliases: []string{
|
|
"i",
|
|
},
|
|
Value: "./map.osm.pbf",
|
|
},
|
|
&cli.StringFlag{
|
|
Category: "Inputs and Outputs",
|
|
Aliases: []string{
|
|
"o",
|
|
},
|
|
Usage: "The base directory to output the offline map files to",
|
|
Name: "output-directory",
|
|
Value: fmt.Sprintf("%s/offline", params.GetBaseOpPath()),
|
|
},
|
|
&cli.BoolFlag{
|
|
Category: "Inputs and Outputs",
|
|
Name: "generate-empty-files",
|
|
Usage: "Generates map tiles that have no roads",
|
|
Aliases: []string{
|
|
"e",
|
|
},
|
|
Value: false,
|
|
},
|
|
},
|
|
Usage: "Triggers a generation of map data from the pbf given by --input-file",
|
|
Action: func(ctx context.Context, cmd *cli.Command) error {
|
|
offlineSettings := maps.OfflineSettings{
|
|
Box: m.Box{
|
|
MinPos: m.NewPosition(cmd.Float64("minlat"), cmd.Float64("minlon")),
|
|
MaxPos: m.NewPosition(cmd.Float64("maxlat"), cmd.Float64("maxlon")),
|
|
},
|
|
Overlap: cmd.Float64("overlap"),
|
|
InputFile: cmd.String("input-file"),
|
|
OutputDirectory: cmd.String("output-directory"),
|
|
GenerateEmptyFiles: cmd.Bool("generate-empty-files"),
|
|
}
|
|
return maps.GenerateOffline(offlineSettings)
|
|
},
|
|
},
|
|
},
|
|
Name: "Mapd",
|
|
Usage: "Start an instance of mapd",
|
|
Action: func(ctx context.Context, cmd *cli.Command) error {
|
|
shouldExit = false
|
|
return nil
|
|
},
|
|
}
|
|
|
|
if err := cmd.Run(context.Background(), os.Args); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if shouldExit {
|
|
os.Exit(0)
|
|
}
|
|
}
|