Số lượng địa điểm yêu thích theo H3

Hàm PLACES_COUNT_PER_H3 tổng hợp dữ liệu Địa điểm yêu thích (POI) thành các ô lưới không gian H3 được chuẩn hoá ở độ phân giải đã chỉ định. Hàm này là đường dẫn được đề xuất để phân tích mật độ theo khu vực, lập bản đồ cạnh tranh và tạo bản đồ nhiệt chuyên đề lục giác.

Để gọi hàm PLACES_COUNT_PER_H3, hãy sử dụng mệnh đề SQL FROM vì hàm này trả về một bảng.

Cú pháp và thông số

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

Thông số

  • PROJECT_NAME: Tên dự án trên đám mây của bạn trên Google Cloud. Nếu bạn không chỉ định tên dự án, truy vấn của bạn sẽ mặc định là dự án đang hoạt động.
  • LINKED_DATASET_NAME: Tên của tập dữ liệu Thông tin chi tiết về địa điểm mà bạn đã đăng ký (ví dụ: places_insights___us).
  • filters (JSON): Đối tượng JSON được tạo bằng JSON_OBJECT chứa các tham số bộ lọc khoá-giá trị.

Bộ lọc JSON bắt buộc

  • geography (GEOGRAPHY): Khu vực tìm kiếm giới hạn (Điểm, Chuỗi đường hoặc Đa giác) cần được lập chỉ mục.
  • h3_resolution (INTEGER): Cấp độ phân giải ô H3 (các giá trị được hỗ trợ nằm trong khoảng từ 0 đến 11).

Bộ lọc JSON không bắt buộc

Giản đồ bảng đầu ra

Hàm này trả về một bảng BigQuery có một hàng cho mỗi chỉ mục ô H3 giao với hình học mục tiêu của bạn:

Tên cột Loại dữ liệu Mô tả
h3_cell_index STRING Giá trị nhận dạng chỉ mục H3 duy nhất cho ô.
geography GEOGRAPHY Một đa giác biểu thị ranh giới thực tế của ô H3.
count INTEGER Tổng số địa điểm đang hoạt động khớp chính xác trong ô H3 cụ thể này hoặc bằng 0 nếu không có địa điểm nào khớp.
sample_place_ids ARRAY<STRING> Một mảng gồm tối đa 250 mã địa điểm nằm trong ô này, cho phép thực hiện các truy vấn trực tiếp về dữ liệu thực tế bằng Places API.

Tổng hợp mật độ địa điểm yêu thích theo khu vực bằng cách sử dụng PLACES_COUNT_PER_H3

Hàm này xử lý ranh giới địa lý được chỉ định trong bộ lọc của bạn, xác định tất cả các hình lục giác H3 giao nhau ở độ phân giải mục tiêu và trả về số lượng địa điểm chính xác cũng như mã địa điểm cho từng hình lục giác.

Ví dụ: Đếm số cửa hàng tạp hoá và cửa hàng tiện lợi có lối đi cho xe lăn ở tiểu bang New York

Truy vấn này tổng hợp các cửa hàng tiện lợi và cửa hàng tạp hoá có thể tiếp cận bằng xe lăn ở tiểu bang New York bằng cách sử dụng cấp độ phân giải H3 là 8. Hình học ranh giới của Tiểu bang New York được truy vấn linh hoạt từ tập dữ liệu công khai 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;

Định dạng của phản hồi

Truy vấn này tạo ra một bảng theo từng hàng, trong đó các ô được liên kết trực tiếp với số lượng không gian:

Kết quả BigQuery cho truy vấn H3.

Ví dụ: Đếm số địa điểm trên mỗi ô H3 được lọc theo thương hiệu

Ví dụ sau đây sử dụng bộ lọc brand_ids để truy xuất số lượng địa điểm và mã địa điểm mẫu cho các thương hiệu cụ thể, chẳng hạn như Starbucks "1413758728321880760" và 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']
    )
);

Trực quan hoá kết quả H3 một cách linh hoạt trong Looker Studio

Những hình ảnh sau đây cho thấy dữ liệu từ PLACES_COUNT_PER_H3 xuất hiện trong Looker Studio dưới dạng bản đồ được tô màu. Ô H3 càng tối thì nồng độ kết quả càng cao:

Bản đồ được tô màu nền để lọc các cửa hàng tiện lợi và tạp hoá có lối đi cho xe lăn ở New York.

Cách nhập dữ liệu vào Looker Studio:

  1. Chạy hàm ở trên trong BigQuery để tạo kết quả.
  2. Trong ngăn kết quả BigQuery, hãy nhấp vào Mở trong -> Looker Studio. Kết quả của bạn sẽ được tự động nhập vào Looker Studio.
  3. Looker Studio tạo một trang báo cáo mặc định và khởi chạy trang đó bằng tiêu đề, bảng và biểu đồ thanh của kết quả.

    Báo cáo mặc định trong Looker Studio.

  4. Chọn mọi nội dung trên trang rồi xoá.

  5. Nhấp vào Chèn -> Bản đồ tô màu để thêm bản đồ tô màu vào báo cáo.

  6. Trong mục Chart types -> Setup (Loại biểu đồ – Thiết lập), hãy định cấu hình các trường như minh hoạ dưới đây:

    Thiết lập bản đồ nhiệt trong Looker Studio.

  7. Bản đồ được tô màu sẽ xuất hiện như trên. Bạn có thể chọn Loại biểu đồ -> Kiểu (không bắt buộc) để định cấu hình thêm giao diện của bản đồ.

Để biết thêm thông tin về cách trực quan hoá kết quả của Thông tin chi tiết về địa điểm, hãy xem phần Trực quan hoá kết quả truy vấn.

Ví dụ: Truy vấn số lượng địa điểm yêu thích trong quá khứ theo ô H3 bằng các bộ lọc cụ thể

Ví dụ này minh hoạ cách truy vấn số lượng địa điểm yêu thích trong quá khứ trên lưới không gian H3 cho một tháng chụp nhanh cụ thể bằng bộ lọc snapshot_date. API này xác định một khu vực tìm kiếm địa lý bằng cách sử dụng vùng đệm xung quanh một vị trí và áp dụng các tiêu chí bổ sung cho số lượng giắc cắm sạc xe điện bằng cách sử dụng max_ev_charge_connector_count cùng với regular_opening_hours cụ thể.

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