Interroger le nombre de POI par H3

La fonction PLACES_COUNT_PER_H3 agrège les données des points d'intérêt 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 votre 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 délimitée (point, ligne ou polygone) à indexer.
  • h3_resolution (INTEGER) : niveau de résolution de la cellule H3 (les valeurs acceptées vont de 0 à 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 croisant votre géométrie cible :

Nom de la colonne Type de données Description
h3_cell_index STRING Identifiant unique de l'index H3 pour la cellule.
geography GEOGRAPHY Polygone représentant la limite physique de la cellule H3.
count INTEGER Nombre total exact de lieux opérationnels correspondants dans cette cellule H3 spécifique, ou zéro si aucun lieu ne correspond.
sample_place_ids ARRAY<STRING> Tableau contenant jusqu'à 250 ID de lieux 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éguer la densité régionale des points d'intérêt à l'aide de PLACES_COUNT_PER_H3

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

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

Cette requête agrège les magasins de proximité et les épiceries opérationnels et accessibles en fauteuil roulant dans l'État de New York à l'aide d'un niveau de résolution H3 de 8. La géométrie de limite 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ée par marque

L'exemple suivant utilise le filtre brand_ids pour récupérer le nombre de lieux et des exemples d'ID de lieux 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 forme de carte remplie. Plus la cellule H3 est foncée, plus la concentration de résultats est élevée :

Carte remplie pour filtrer les supérettes et é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, puis supprimez-le.

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

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

    Configurer une carte de densité dans Looker Studio

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

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

Exemple : Interroger le nombre historique de points d'intérêt par cellule H3 avec des filtres spécifiques

Cet exemple montre comment interroger le nombre historique de points d'intérêt dans une grille spatiale H3 pour un mois d'instantané spécifique à l'aide du filtre snapshot_date. Il définit une zone de recherche géographique à l'aide d'une zone tampon autour d'un lieu et applique des critères supplémentaires pour le nombre de connecteurs de recharge pour véhicules électriques à l'aide de max_ev_charge_connector_count avec des 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')]
    )
  )
);