Foursquare a modifié le mode d’accès à OS Places. Les anciennes versions de ce guide interrogeaient
des fichiers datés dans un bucket S3 public ; l’accès s’effectue désormais via le Places Portal et un
catalogue Iceberg authentifié. Consultez la documentation de Foursquare sur l’accès à OS Places
pour plus de détails.
Avant de commencer
- Un compte Foursquare Places Portal
- Un jeton d’accès créé depuis l’onglet Access Data du jeu de données OS Places
Connectez-vous au catalogue Foursquare
<YOUR_ACCESS_TOKEN> par votre jeton dans la requête suivante :
Query
places_os reflète la version actuellement
publiée par Foursquare, plutôt qu’une version Parquet figée à une date donnée ; ses lignes et son schéma peuvent
donc évoluer au fil du temps. Les requêtes sans clause ORDER BY peuvent par conséquent renvoyer des lignes d’échantillon
différentes de celles présentées dans les réponses de ce guide.
Vérifier la connexion
places_os :
Query
Response
Explorer les données
Query
Response
DESCRIBE pour inspecter le schéma de la table :
Query
Response
Chargez les données dans ClickHouse
clickhouse-server ou dans ClickHouse Cloud.
Créez une table MergeTree avec des colonnes encodées par dictionnaire et des coordonnées
Web Mercator matérialisées :
Query
LowCardinality,
qui stocke les valeurs répétées à l’aide d’un encodage par dictionnaire. Cette représentation peut considérablement
améliorer les performances des requêtes SELECT.
Les deux colonnes UInt32 MATERIALIZED, mercator_x et mercator_y, convertissent la latitude et
la longitude dans la projection Web Mercator,
ce qui facilite le découpage de la carte en tuiles :
longitude + 180décale la plage de longitude de [-180, 180] vers [0, 360].- La division par 360 normalise la valeur dans une plage comprise entre 0 et 1.
- La multiplication par
0xFFFFFFFF, l’entier non signé maximal sur 32 bits, met à l’échelle la valeur normalisée sur toute la plage d’un entier sur 32 bits.
latitude + 90décale la plage de latitude de [-90, 90] vers [0, 180].- La division par 360 et la multiplication par
piconvertissent la valeur en radians pour les fonctions trigonométriques. log(tan(...))applique la formule de base de la projection de Mercator.- La multiplication par
0xFFFFFFFFmet le résultat à l’échelle sur toute la plage d’un entier sur 32 bits.
MATERIALIZED permet à ClickHouse de calculer ces valeurs lors de l’insertion des données,
sans que les données source aient besoin de contenir ces colonnes.
La table est ordonnée par mortonEncode(mercator_x, mercator_y), ce qui crée une courbe de remplissage
de l’espace en ordre Z et organise les données selon leur proximité spatiale :
minmax accélèrent encore le filtrage spatial :
Query
unresolved_flags, car cette colonne
n’est pas nécessaire dans la table locale, et filtre les lignes sans coordonnées, car elles
ne peuvent pas être positionnées sur la carte. Les autres valeurs sources nullables restent nulles dans la table locale.
Visualiser les données
Le modèle d’accès de Foursquare a changé depuis la création de ces visualisations. La
vue interactive originale de Places
date d’avant le modèle d’accès actuel et est fournie à titre de référence historique, mais elle peut ne plus
afficher les données Places. Les images ci-dessous sont conservées à titre d’exemples historiques.