diff --git a/cmd/tiledump/main.go b/cmd/tiledump/main.go index 419bd91..d6e53fc 100644 --- a/cmd/tiledump/main.go +++ b/cmd/tiledump/main.go @@ -30,9 +30,21 @@ func main() { fmt.Fprintf(os.Stderr, "Fetching: %s\n", arg) tileData, err = utils.FetchURL(arg) if err != nil { - fatal("failed to fetch URL: %v", err) + // If it's a 404 and the URL is for a partial tile, try the full tile + if err.Error() == "HTTP 404" && strings.Contains(arg, ".p/") { + fullTileURL := arg[:strings.Index(arg, ".p/")] + fmt.Fprintf(os.Stderr, "Partial tile not found, trying full tile: %s\n", fullTileURL) + tileData, err = utils.FetchURL(fullTileURL) + if err != nil { + fatal("failed to fetch full tile: %v", err) + } + fmt.Fprintf(os.Stderr, "Fetched %d bytes from full tile\n", len(tileData)) + } else { + fatal("failed to fetch URL: %v", err) + } + } else { + fmt.Fprintf(os.Stderr, "Fetched %d bytes\n", len(tileData)) } - fmt.Fprintf(os.Stderr, "Fetched %d bytes\n", len(tileData)) } else { // Read from file tileData, err = os.ReadFile(arg)