Liczba zapytań o miejsca w podziale na komórki H3

Funkcja PLACES_COUNT_PER_H3 agreguje dane o ciekawych miejscach w ustandaryzowane komórki siatki przestrzennej H3 o określonej rozdzielczości. Ta funkcja jest zalecaną metodą analizy gęstości regionalnej, mapowania konkurencji i generowania sześciokątnych kartogramów termicznych.

Aby wywołać funkcję PLACES_COUNT_PER_H3, użyj klauzuli SQL FROM, ponieważ funkcja zwraca tabelę.

Składnia i parametry

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

Parametry

  • PROJECT_NAME: nazwa projektu w chmurze Google Cloud. Jeśli nie określisz nazwy projektu, zapytanie zostanie domyślnie wykonane w aktywnym projekcie.
  • LINKED_DATASET_NAME: nazwa subskrybowanego zbioru danych Statystyk miejsc (np. places_insights___us).
  • filters (JSON): obiekt JSON utworzony za pomocą JSON_OBJECT, który zawiera parametry filtra klucz-wartość.

Wymagane filtry JSON

  • geography (GEOGRAPHY): obszar wyszukiwania (punkt, linia lub wielokąt), który ma zostać zindeksowany.
  • h3_resolution (INTEGER): poziom rozdzielczości komórki H3 (obsługiwane wartości mieszczą się w zakresie od 0 do 11).

Opcjonalne filtry JSON

  • dodatkowe parametry, takie jak types, business_status, price_level i min_rating, które umożliwiają filtrowanie miejsc zliczanych w każdej komórce. Zobacz pełną listę parametrów filtra.

Schemat tabeli wyjściowej

Funkcja zwraca tabelę BigQuery z 1 wierszem na indeks komórki H3, który przecina docelową geometrię:

Nazwa kolumny Typ danych Opis
h3_cell_index STRING Unikalny identyfikator indeksu H3 komórki.
geography GEOGRAPHY Wielokąt reprezentujący fizyczną granicę komórki H3.
count INTEGER Łączna dokładna liczba pasujących miejsc operacyjnych w tej konkretnej komórce H3 lub zero, jeśli nie ma pasujących miejsc.
sample_place_ids ARRAY<STRING> Tablica zawierająca maksymalnie 250 identyfikatorów miejsc znajdujących się w tej komórce, która umożliwia bezpośrednie zapytania o dane podstawowe za pomocą interfejsu Places API.

Agregowanie regionalnej gęstości ciekawych miejsc za pomocą PLACES_COUNT_PER_H3

Funkcja przetwarza obszar geograficzny określony w filtrach, identyfikuje wszystkie przecinające się sześciokąty H3 w docelowej rozdzielczości i zwraca dokładną liczbę miejsc oraz identyfikatory miejsc dla każdego sześciokąta.

Przykład: policz sklepy spożywcze i osiedlowe w stanie Nowy Jork, które są dostępne dla osób na wózkach.

To zapytanie agreguje działające, dostępne dla osób na wózkach sklepy spożywcze i monopolowe w stanie Nowy Jork, używając poziomu rozdzielczości H3 równego 8. Geometria granic stanu Nowy Jork jest dynamicznie pobierana z publicznego zbioru danych 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 odpowiedzi

Zapytanie zwraca tabelę, w której komórki są mapowane bezpośrednio na liczby przestrzenne:

Wyniki BigQuery dla zapytania H3.

Przykład: liczenie miejsc na komórkę H3 filtrowanych według marki

W tym przykładzie użyto filtra brand_ids, aby pobrać liczbę miejsc i przykładowe identyfikatory miejsc dla konkretnych marek, takich jak Starbucks "1413758728321880760" i 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']
    )
);

Dynamiczna wizualizacja wyników H3 w Looker Studio

Poniższe obrazy przedstawiają dane z usługi PLACES_COUNT_PER_H3 wyświetlane w Looker Studio jako mapa kartogramu. Im ciemniejsza komórka H3, tym większe zagęszczenie wyników:

Wypełniona mapa do filtrowania sklepów spożywczych i ogólnospożywczych dostępnych dla osób na wózkach w Nowym Jorku.

Aby zaimportować dane do Looker Studio:

  1. Uruchom powyższą funkcję w BigQuery, aby wygenerować wyniki.
  2. W panelu wyników BigQuery kliknij Otwórz w -> Looker Studio. Wyniki są automatycznie importowane do Looker Studio.
  3. Looker Studio utworzy domyślną stronę raportu i zainicjuje ją tytułem, tabelą i wykresem słupkowym wyników.

    Domyślny raport w Looker Studio.

  4. Zaznacz całą zawartość strony i ją usuń.

  5. Kliknij Wstaw –> Mapa kartogramu, aby dodać do raportu mapę kartogramu.

  6. W sekcji Typy wykresów -> Konfiguracja skonfiguruj pola w taki sposób:

    Konfiguracja mapy termicznej w Looker Studio.

  7. Wypełniona mapa wygląda jak powyżej. Możesz też wybrać Typy wykresów -> Styl, aby dodatkowo skonfigurować wygląd mapy.

Więcej informacji o wizualizacji wyników Statystyk miejsc znajdziesz w artykule o wizualizacji wyników zapytań.

Przykład: zapytanie o historyczną liczbę ciekawych miejsc według komórki H3 z określonymi filtrami

Ten przykład pokazuje, jak za pomocą filtra snapshot_date wysłać zapytanie o historyczną liczbę ciekawych miejsc w siatce przestrzennej H3 w określonym miesiącu. Definiuje on geograficzny obszar wyszukiwania, używając bufora wokół lokalizacji, i stosuje dodatkowe kryteria dotyczące liczby złączy ładowania EV, używając max_ev_charge_connector_count wraz z określonymi regular_opening_hours.

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')]
    )
  )
);