duckdb
, we can download all places within our defined bounding box of 50.832939, 4.337368, 50.858410, 4.369812
. The code below is based on an example from the Overture Maps website:-- Load necessary modulesLOAD spatial;LOAD httpfs; -- Set the AWS S3 regionSET s3_region = 'us-west-2'; -- Copy the filtered data from S3 to a local Parquet fileCOPY ( SELECT id, names, categories, websites, addresses, ST_GeomFromWKB(geometry) FROM read_parquet('s3://overturemaps-us-west-2/release/2024-07-22.0/theme=places/*/*') WHERE -- Filter by bounding box (xmin and ymin) bbox.xmin BETWEEN 4.337368 AND 4.369812 AND bbox.ymin BETWEEN 50.832939 AND 50.858410) TO 'vijfhoek.parquet';
Next, we can query all the places where the primary category is "breakfast_and_brunch_restaurant"
:
SELECT names.primary AS name, addresses[1].freeform AS address, websites[1] AS website FROM 'vijfhoek.parquet' WHERE categories.primary = 'breakfast_and_brunch_restaurant';
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐│ name │ address │ website ││ varchar │ varchar │ varchar │├──────────────────────────────────────────────────────────────────────────────────────────────────────┤│ Flower food │ Rue Blaes 264 │ ││ Le Père Tranquille │ Rue des Renards 4 │ ││ Brussels Waffle Workshop │ Rue des Foulons 30 │ http://www.waffleworkshop.com ││ Woodpecker 20 │ Rue Jourdan 20 │ ││ EatClub Brussels │ Rue de Stassart 18 │ ││ Café Boudin │ Rue Ravenstein 20 │ https://cafeboudin.be ││ bloom_and_brunch_by_sabri │ Rue de la Paix 7 │ ││ Lastra │ Rue du Conseil 24 │ ││ Le Coin Des Saveurs │ Boulevard de l'Abattoir 19 │ ││ Kandinsky │ Chaussée de Gand 37 │ https://kandinsky-family.be/ ││ Restaurant Baurade │ Boulevard Anspach 153 │ ││ Kafei Dansaert │ Rue Antoine Dansaert 57 │ https://kafei.be ││ Le Odin Royal │ Oude Graanmarkt 2 │ ││ Movenpick │ │ ││ Woodpecker St. Cath. │ Quai au Bois à Brûler 27 │ ││ Restaurant Al Andalus │ Rue de Ribaucourt 4 │ ││ Gaufres and Waffles │ Chemin du Croquet 1 │ http://www.gaufresandwaffles.com ││ Oats Day Long │ Europakruispunt 3 │ https://www.oatsdaylong.com ││ Belrose cake │ Boulevard Émile Jacqmain 3 │ https://www.belrosecake.com/ ││ Spread the moon │ Rue du Gentilhomme 13 │ https://www.instagram.com/spreadthemoon/ ││ Longitude Nord-Sud │ Quai aux Pierres de Taille 14 │ http://longitude.blog4ever.com/ │├──────────────────────────────────────────────────────────────────────────────────────────────────────┤│ 21 rows 3 columns │└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
This is a good start, but lots of places we already visited are still missing from this list. We can query for all places where 'breakfast_and_brunch_restaurant'
is listed under alternate categories using OR 'breakfast_and_brunch_restaurant' = ANY (categories.alternate);
.
I’m planning to pick this idea up later, and check if I can find a way to include more breakfast and brunch spots. In a next step, I could attempt to scrape the provided websites to check menus for our usual order.