H3별 관심 장소 수 쿼리

The PLACES_COUNT_PER_H3 함수는 관심 장소 (POI) 데이터를 지정된 해상도의 표준화된 H3 공간 그리드 셀로 집계합니다. 이 함수는 지역 밀도 분석, 경쟁 매핑, 육각형 등치지역도 히트맵 생성에 권장되는 경로입니다.

PLACES_COUNT_PER_H3 함수를 호출하려면 함수가 테이블을 반환하므로 SQL FROM 절을 사용합니다.

구문 및 매개변수

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

매개변수

  • PROJECT_NAME: Google Cloud 프로젝트 이름 프로젝트 이름을 지정하지 않으면 쿼리가 기본적으로 활성 프로젝트로 설정됩니다.
  • LINKED_DATASET_NAME: 구독한 Places Insights 데이터 세트의 이름 (예: places_insights___us)
  • filters (JSON): 키-값 필터 매개변수를 포함하는 JSON_OBJECT를 사용하여 구성된 JSON 객체입니다.

필수 JSON 필터

  • geography (GEOGRAPHY): 색인이 생성될 경계 검색 영역 (점, 선, 다각형)
  • h3_resolution (INTEGER): H3 셀 해상도 수준 (0~11 범위의 값 지원)

선택적 JSON 필터

  • 각 셀 내에서 집계되는 장소를 필터링하는 types, business_status, price_level, min_rating과 같은 추가 매개변수 필터 매개변수의 전체 목록을 참조하세요.

출력 테이블 스키마

이 함수는 대상 도형과 교차하는 H3 셀 색인당 하나의 행이 있는 BigQuery 테이블을 반환합니다.

열 이름 데이터 유형 설명
h3_cell_index STRING 셀의 고유한 H3 색인 식별자입니다.
geography GEOGRAPHY H3 셀의 물리적 경계를 나타내는 다각형입니다.
count INTEGER 이 특정 H3 셀 내에서 일치하는 운영 장소의 총 정확한 개수입니다. 일치하는 장소가 없으면 0입니다.
sample_place_ids ARRAY<STRING> 이 셀 내에 있는 최대 250개의 장소 ID 배열로, Places API를 사용하여 직접 지상 실측 쿼리를 실행할 수 있습니다.

PLACES_COUNT_PER_H3를 사용하여 지역 POI 밀도 집계

이 함수는 필터에 지정된 경계 지리를 처리하고, 대상 해상도에서 교차하는 모든 H3 육각형을 식별하며, 각 육각형의 정확한 장소 개수와 장소 ID를 반환합니다.

예: 뉴욕주에서 휠체어 접근이 가능한 식료품점 및 편의점 개수 집계

이 쿼리는 H3 해상도 수준 8을 사용하여 뉴욕주에서 운영 중이며 휠체어 접근이 가능한 편의점과 식료품점을 집계합니다. 뉴욕주의 경계 도형은 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;

대답 형식

이 쿼리는 셀을 공간 개수에 직접 매핑하는 행별 테이블을 생성합니다.

H3 쿼리의 BigQuery 결과

예: 브랜드별로 필터링된 H3 셀당 장소 개수 집계

다음 예에서는 brand_ids 필터를 사용하여 장소 개수와 샘플 장소 ID를 검색합니다. 스타벅스 "1413758728321880760" 및 던킨 "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']
    )
);

Looker Studio에서 H3 결과를 동적으로 시각화

다음 이미지는 Looker Studio에서 채워진 지도로 표시된 PLACES_COUNT_PER_H3의 데이터를 보여줍니다. H3 셀이 어두울수록 결과가 더 집중됩니다.

뉴욕에서 휠체어 이용 가능 편의점과 식료품점을 필터링하기 위한 채워진 지도

Looker Studio로 데이터를 가져오려면 다음 단계를 따르세요.

  1. BigQuery에서 위의 함수를 실행하여 결과를 생성합니다.
  2. BigQuery 결과 창에서 다음에서 열기 - > Looker Studio 를 클릭합니다. 결과가 Looker Studio로 자동 가져오기됩니다.
  3. Looker Studio는 기본 보고서 페이지를 만들고 결과의 제목, 표, 막대 그래프로 초기화합니다.

    Looker Studio의 기본 보고서

  4. 페이지의 모든 항목을 선택하고 삭제합니다.

  5. 삽입 - > 채워진 지도를 클릭하여 보고서에 채워진 지도를 추가합니다.

  6. 차트 유형 -> 설정에서 아래와 같이 필드를 구성합니다.

    Looker Studio의 히트맵 설정

  7. 채워진 지도가 위와 같이 표시됩니다. 선택적으로 차트 유형 -> 스타일을 선택하여 지도의 모양을 추가로 구성할 수 있습니다.

Places Insights 결과 시각화에 대한 자세한 내용은 쿼리 결과 시각화를 참고하세요.

예: 특정 필터가 있는 H3 셀별 과거 POI 개수 쿼리

이 예에서는 snapshot_date 필터를 사용하여 특정 스냅샷 월의 H3 공간 그리드에서 과거 POI 개수를 쿼리하는 방법을 보여줍니다. 위치 주변의 버퍼를 사용하여 지리적 검색 영역을 정의하고 특정 regular_opening_hours와 함께 max_ev_charge_connector_count를 사용하여 EV 충전 커넥터 개수에 대한 추가 기준을 적용합니다.

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