Interroger le nombre de POI par H3

La fonction PLACES_COUNT_PER_H3 regroupe les données de points d'intérêt (POI) dans des cellules de grille spatiale H3 standardisées à une résolution spécifiée. Cette fonction est la méthode recommandée pour l'analyse de la densité régionale, la cartographie concurrentielle et la génération de cartes de densité choroplèthes hexagonales.

Pour appeler la fonction PLACES_COUNT_PER_H3, utilisez une clause SQL FROM, car la fonction renvoie une table.

Syntaxe et paramètres

SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_H3`(
  filters
)

Paramètres

  • PROJECT_NAME : nom de votre projet Google Cloud. Si vous ne spécifiez pas de nom de projet, votre requête sera définie par défaut sur le projet actif.
  • LINKED_DATASET_NAME : nom de l'ensemble de données Places Insights auquel vous êtes abonné (par exemple, places_insights___us).
  • filters (JSON) : objet JSON construit à l'aide de JSON_OBJECT contenant des paramètres de filtre clé-valeur.

Filtres JSON obligatoires

  • geography (GEOGRAPHY) : zone de recherche de délimitation (point, chaîne de lignes ou polygone) à indexer.
  • h3_resolution (INTEGER) : niveau de résolution de la cellule H3 (les valeurs acceptées sont comprises entre 0 et 11).

Filtres JSON facultatifs

Schéma de la table de sortie

La fonction renvoie une table BigQuery avec une ligne par index de cellule H3 qui croise votre géométrie cible :

Nom de la colonne Type de données Description
h3_cell_index STRING Identifiant d'index H3 unique de la cellule.
geography GEOGRAPHY Un polygone représentant la limite physique de la cellule H3.
count INTEGER Nombre exact total de lieux opérationnels correspondants dans cette cellule H3 spécifique, ou zéro si aucun lieu ne correspond.
sample_place_ids ARRAY<STRING> Un tableau contenant jusqu'à 250 ID de lieu situés dans cette cellule, ce qui permet d'effectuer des requêtes de vérité terrain directes à l'aide de l'API Places.

Agréger la densité régionale des POI à l'aide de PLACES_COUNT_PER_H3

La fonction traite la zone géographique de délimitation spécifiée dans vos filtres, identifie tous les hexagones H3 qui se croisent à la résolution cible, puis renvoie le nombre exact de lieux et les ID de lieu pour chaque hexagone.

Exemple : Compter les épiceries et supérettes accessibles en fauteuil roulant dans l'État de New York

Cette requête regroupe les supérettes et les épiceries opérationnelles et accessibles en fauteuil roulant dans l'État de New York, en utilisant un niveau de résolution H3 de 8. La géométrie des limites de l'État de New York est interrogée de manière dynamique à partir de l'ensemble de données public bigquery-public-data.geo_us_boundaries.states.

-- Query POI count per H3 cell intersecting the New York State polygon boundary
SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', (
        -- Dynamically retrieve the boundary geography for New York State
        SELECT state_geom
        FROM `bigquery-public-data.geo_us_boundaries.states`
        WHERE state = 'NY'
        LIMIT 1
      ),
      'types', ['grocery_store', 'convenience_store'],
      'business_status', ['OPERATIONAL'],
      'h3_resolution', 8,
      'wheelchair_accessible_entrance', TRUE
  )
)
ORDER BY count DESC;

Format de réponse

La requête génère une table ligne par ligne qui mappe directement les cellules aux nombres spatiaux :

Résultats BigQuery pour la requête H3.

Exemple : Compter les lieux par cellule H3 filtrés par marque

L'exemple suivant utilise le filtre brand_ids pour récupérer le nombre de lieux et des exemples d'ID de lieu pour des marques spécifiques, telles que Starbucks "1413758728321880760" et Dunkin "1314981297593671295" :

DECLARE geo GEOGRAPHY;

-- Get the geography for New York City.
SET geo = (SELECT geometry FROM `bigquery-public-data.overture_maps.division_area`
  WHERE country = 'US' AND subtype = 'locality' AND names.primary = 'New York'  LIMIT 1);

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', geo,
      'h3_resolution', 8,
      'brand_ids', ["1413758728321880760", "1314981297593671295"],
      'business_status', ['OPERATIONAL']
    )
);

Visualiser les résultats H3 de manière dynamique dans Looker Studio

Les images suivantes montrent les données de PLACES_COUNT_PER_H3 affichées dans Looker Studio sous la forme d'une carte choroplèthe. Plus la cellule H3 est sombre, plus la concentration de résultats est élevée :

Carte choroplèthe permettant de filtrer les supérettes et les épiceries accessibles en fauteuil roulant à New York.

Pour importer vos données dans Looker Studio :

  1. Exécutez la fonction ci-dessus dans BigQuery pour générer vos résultats.
  2. Dans le volet des résultats BigQuery, cliquez sur Ouvrir dans -> Looker Studio. Vos résultats sont automatiquement importés dans Looker Studio.
  3. Looker Studio crée une page de rapport par défaut et l'initialise avec un titre, un tableau et un graphique à barres des résultats.

    Rapport par défaut dans Looker Studio.

  4. Sélectionnez tout le contenu de la page et supprimez-le.

  5. Cliquez sur Insérer -> Carte géographique pour ajouter une carte géographique à votre rapport.

  6. Sous Types de graphiques -> Configuration, configurez les champs comme indiqué ci-dessous :

    Configuration d'une carte de densité dans Looker Studio.

  7. La carte choroplèthe s'affiche comme ci-dessus. Vous pouvez éventuellement sélectionner Types de graphiques -> Style pour configurer davantage l'apparence de la carte.

Pour en savoir plus sur la visualisation des résultats de Places Insights, consultez Visualiser les résultats de requête.

Exemple : Interroger l'historique du nombre de POI par cellule H3 avec des filtres spécifiques

Cet exemple montre comment interroger le nombre de points d'intérêt historiques sur une grille spatiale H3 pour un mois d'instantané spécifique à l'aide du filtre snapshot_date. Elle définit une zone de recherche géographique à l'aide d'une zone tampon autour d'un emplacement, et applique des critères supplémentaires pour le nombre de connecteurs de recharge de bornes pour véhicules électriques à l'aide de max_ev_charge_connector_count et de regular_opening_hours spécifiques.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
    'geography', ST_BUFFER(ST_GEOGPOINT(-74.0060, 40.7128), 5000), -- 5km radius around NYC
    'h3_resolution', 8,
    'business_status', ['OPERATIONAL'],
    'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM)
    'max_ev_charge_connector_count', 3, -- Maximum connector count
    'regular_opening_hours', JSON_OBJECT(
      'monday', [JSON_OBJECT('start_time', '09:00', 'end_time', '12:00')]
    )
  )
);