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

Funkcja PLACES_COUNT_PER_H3 agreguje dane o ciekawych miejscach w standardowych komórkach siatki przestrzennej H3 o określonej rozdzielczości. Ta funkcja jest zalecaną ścieżką do analizy gęstości regionalnej, mapowania konkurencji i generowania heksagonalnych map 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 domyślnie będzie dotyczyć aktywnego projektu.
  • LINKED_DATASET_NAME: nazwa subskrybowanego zbioru danych Places Insights (np. places_insights___us).
  • filters (JSON): Obiekt JSON utworzony za pomocą funkcji JSON_OBJECT zawierający parametry filtra w postaci par klucz-wartość.

Wymagane filtry JSON

  • geography (GEOGRAPHY): obszar wyszukiwania (punkt, linia lub wielokąt), który ma zostać zindeksowany.
  • h3_resolution (LICZBA CAŁKOWITA): poziom rozdzielczości komórki H3 (obsługiwane wartości to 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 każdy 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 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, co umożliwia bezpośrednie wysyłanie zapytań do danych rzeczywistych za pomocą interfejsu Places API.

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

Funkcja przetwarza geometrię graniczną określoną 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: zliczanie sklepów spożywczych i ogólnospożywczych w stanie Nowy Jork, do których można wjechać na wózku inwalidzkim

To zapytanie agreguje działające sklepy ogólnospożywcze i spożywcze w stanie Nowy Jork, do których można wjechać na wózku inwalidzkim, przy użyciu poziomu rozdzielczości H3 wynoszącego 8. Geometria graniczna 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 wiersze są bezpośrednio powiązane z liczbą miejsc w danym obszarze:

Wyniki BigQuery dla zapytania H3.

Przykład: zliczanie miejsc w komórce H3 filtrowanych według marki

W tym przykładzie używamy 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']
    )
);

Dynamiczne wizualizowanie wyników H3 w Looker Studio

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

Kartogram do filtrowania sklepów spożywczych i osiedlowych w Nowym Jorku, które są dostępne dla osób na wózkach inwalidzkich.

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 zostaną automatycznie zaimportowane do Looker Studio.
  3. Looker Studio utworzy domyślną stronę raportu i zainicjuje ją tytułem, tabelą i wykresem słupkowym wyników.

    Raport domyślny w Looker Studio.

  4. Zaznacz wszystko na stronie i usuń.

  5. Aby dodać do raportu mapę wypełnioną, kliknij Wstaw -> Mapa wypełniona.

  6. W sekcji Typy wykresów -> Konfiguracja skonfiguruj pola w sposób pokazany poniżej:

    Konfiguracja mapy termicznej w Looker Studio.

  7. Mapa wypełniona pojawi się jak powyżej. Opcjonalnie możesz kliknąć Typy wykresów -> Styl , aby dodatkowo skonfigurować wygląd mapy.

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

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

Ten przykład pokazuje, jak wysyłać zapytania o historyczną liczbę ciekawych miejsc w siatce przestrzennej H3 w przypadku konkretnego miesiąca zrzutu za pomocą filtra snapshot_date. Określa on geograficzny obszar wyszukiwania za pomocą bufora wokół lokalizacji i stosuje dodatkowe kryteria dotyczące liczby złączy ładowania pojazdów elektrycznych za pomocą parametru max_ev_charge_connector_count wraz z konkretnymi 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')]
    )
  )
);