Trong tài liệu này, bạn sẽ tìm hiểu cách sử dụng dữ liệu Place IDs mẫu từ Places Insights, bằng cách sử dụng Place Count Functions, cùng với các lệnh tra cứu Place Details được nhắm mục tiêu để tăng độ tin cậy cho kết quả.
Mẫu kiến trúc
Mẫu kiến trúc này cung cấp cho bạn một quy trình có thể lặp lại để thu hẹp khoảng cách giữa phân tích thống kê cấp cao và xác minh dữ liệu thực tế. Bằng cách kết hợp quy mô của BigQuery với độ chính xác của Places API, bạn có thể tự tin xác thực các kết quả phân tích của mình. Điều này đặc biệt hữu ích cho việc lựa chọn trang web, phân tích đối thủ cạnh tranh và nghiên cứu thị trường, trong đó niềm tin vào dữ liệu là tối quan trọng.
Trọng tâm của mẫu này bao gồm 4 bước chính:
- Phân tích trên quy mô lớn: Sử dụng Hàm đếm địa điểm từ Thông tin chi tiết về địa điểm trong BigQuery để phân tích dữ liệu về địa điểm trên một khu vực địa lý rộng lớn, chẳng hạn như toàn bộ thành phố hoặc khu vực.
- Tách biệt và trích xuất mẫu: Xác định các khu vực bạn quan tâm (ví dụ:
"điểm nóng" có mật độ cao) từ kết quả tổng hợp và trích xuất
sample_place_ids
do hàm cung cấp. - Truy xuất thông tin chi tiết chính xác: Sử dụng Place IDs (Mã địa điểm) đã trích xuất để thực hiện các lệnh gọi nhắm mục tiêu đến Place Details API (API Thông tin chi tiết về địa điểm) nhằm tìm nạp thông tin chi tiết phong phú, thực tế cho từng địa điểm.
- Tạo một hình ảnh kết hợp: Xếp lớp dữ liệu chi tiết về địa điểm lên trên bản đồ thống kê cấp cao ban đầu để xác thực bằng hình ảnh rằng số lượng được tổng hợp phản ánh thực tế tại địa điểm.
Quy trình giải pháp
Quy trình này giúp bạn thu hẹp khoảng cách giữa các xu hướng ở cấp độ vĩ mô và các dữ kiện ở cấp độ vi mô. Bạn bắt đầu bằng một góc nhìn thống kê rộng và đi sâu một cách chiến lược để xác minh dữ liệu bằng các ví dụ cụ thể trong thế giới thực.
Phân tích mật độ địa điểm trên quy mô lớn bằng Places Insights
Bước đầu tiên là bạn phải hiểu được tổng quan về thị trường. Thay vì tìm nạp hàng nghìn điểm đến riêng lẻ, bạn có thể chạy một truy vấn duy nhất để nhận được bản tóm tắt thống kê.
Hàm PLACES_COUNT_PER_H3
Thông tin chi tiết về địa điểm là lựa chọn lý tưởng cho trường hợp này. Công cụ này tổng hợp số lượng địa điểm yêu thích thành một hệ thống lưới lục giác (H3), cho phép bạn nhanh chóng xác định những khu vực có mật độ cao hoặc thấp dựa trên tiêu chí cụ thể của bạn (ví dụ: những nhà hàng đang hoạt động và có điểm xếp hạng cao).
Sau đây là một ví dụ về truy vấn. Xin lưu ý rằng bạn sẽ phải cung cấp thông tin về khu vực địa lý mà bạn muốn tìm kiếm. Bạn có thể sử dụng một tập dữ liệu mở, chẳng hạn như Tập dữ liệu Overture Maps công khai BigQuery để truy xuất dữ liệu ranh giới địa lý.
Đối với các ranh giới tập dữ liệu mở thường dùng, bạn nên hiện thực hoá chúng thành một bảng trong dự án của riêng mình. Điều này giúp giảm đáng kể chi phí BigQuery và cải thiện hiệu suất truy vấn.
-- This query counts all highly-rated, operational restaurants
-- across a large geography, grouping them into H3 cells.
SELECT *
FROM
`places_insights___gb.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'types', ['restaurant'],
'business_status', ['OPERATIONAL'],
'min_rating', 3.5
)
);
Đầu ra của truy vấn này cung cấp cho bạn một bảng gồm các ô H3 và số lượng địa điểm trong mỗi ô, tạo thành cơ sở cho bản đồ nhiệt mật độ.
Tách riêng các điểm phát sóng và trích xuất mã địa điểm mẫu
Kết quả từ hàm PLACES_COUNT_PER_H3
cũng trả về một mảng sample_place_ids
, tối đa 250 mã địa điểm cho mỗi phần tử của phản hồi. Các mã nhận dạng này là mối liên kết từ số liệu thống kê tổng hợp đến từng địa điểm đóng góp vào số liệu đó.
Hệ thống của bạn có thể xác định trước những ô có liên quan nhất từ cụm từ tìm kiếm ban đầu.
Ví dụ: bạn có thể chọn 20 ô có số lượng cao nhất. Sau đó, từ những điểm phát sóng này, bạn sẽ hợp nhất sample_place_ids
thành một danh sách duy nhất.
Danh sách này là một mẫu được tuyển chọn gồm những địa điểm yêu thích thú vị nhất ở những khu vực phù hợp nhất, giúp bạn chuẩn bị cho quy trình xác minh có mục tiêu.
Nếu bạn đang xử lý kết quả BigQuery trong Python bằng pandas DataFrame, thì logic để trích xuất các mã nhận dạng này rất đơn giản:
# Assume 'results_df' is a pandas DataFrame from your BigQuery query.
# 1. Identify the 20 busiest H3 cells by sorting and taking the top results.
top_hotspots_df = results_df.sort_values(by='count', ascending=False).head(20)
# 2. Extract and flatten the lists of sample_place_ids from these hotspots.
# The .explode() function creates a new row for each ID in the lists.
all_sample_ids = top_hotspots_df['sample_place_ids'].explode()
# 3. Create a final list of unique Place IDs to verify.
place_ids_to_verify = all_sample_ids.unique().tolist()
print(f"Consolidated {len(place_ids_to_verify)} unique Place IDs for spot-checking.")
Bạn có thể áp dụng logic tương tự nếu sử dụng các ngôn ngữ lập trình khác.
Truy xuất thông tin chi tiết về dữ liệu thực tế bằng Places API
Với danh sách mã địa điểm hợp nhất, giờ đây, bạn có thể chuyển từ hoạt động phân tích trên quy mô lớn sang truy xuất dữ liệu cụ thể. Bạn sẽ dùng các mã nhận dạng này để truy vấn Place Details API nhằm biết thông tin chi tiết về từng vị trí mẫu.
Đây là một bước xác thực quan trọng. Trong khi Places Insights cho bạn biết có bao nhiêu nhà hàng trong một khu vực, thì Places API cho bạn biết những nhà hàng đó là gì, cung cấp tên, địa chỉ chính xác, vĩ độ/kinh độ, điểm xếp hạng của người dùng và thậm chí cả đường liên kết trực tiếp đến vị trí của nhà hàng trên Google Maps. Điều này giúp làm phong phú dữ liệu mẫu của bạn, biến các mã nhận dạng trừu tượng thành những địa điểm cụ thể, có thể xác minh.
Để xem danh sách đầy đủ dữ liệu có trong Place Details API và chi phí liên quan đến việc truy xuất, hãy xem tài liệu về API. FieldMask
được đặt trên yêu cầu để kiểm soát dữ liệu mà API trả về.
Yêu cầu đến Places API cho một mã nhận dạng cụ thể bằng thư viện ứng dụng Python sẽ có dạng như sau:
# A request to fetch details for a single Place ID.
request = {"name": f"places/{place_id}"}
# Define the fields you want returned in the response as a comma-separated string.
fields_to_request = "displayName,formattedAddress,location,googleMapsUri"
# The response contains ground truth data.
response = places_client.get_place(
request=request,
metadata=[("x-goog-fieldmask", fields_to_request)]
)
Hãy xem các ví dụ về thư viện ứng dụng Places API (mới) để biết thêm thông tin chi tiết.
Tạo một hình ảnh kết hợp để xác thực
Bước cuối cùng là kết hợp cả hai tập dữ liệu vào một chế độ xem duy nhất. Điều này mang đến một cách thức trực quan và tức thì để kiểm tra nhanh bản phân tích ban đầu. Hình ảnh trực quan của bạn phải có 2 lớp:
- Lớp cơ sở: Bản đồ chuyên đề hoặc bản đồ nhiệt được tạo từ kết quả
PLACES_COUNT_PER_H3
ban đầu, cho thấy mật độ tổng thể của các địa điểm trên phạm vi địa lý của bạn. - Lớp trên cùng: Một nhóm các điểm đánh dấu riêng lẻ cho từng POI mẫu, được vẽ bằng cách sử dụng toạ độ chính xác được truy xuất từ Places API ở bước trước.
Logic để tạo khung hiển thị kết hợp này được thể hiện trong ví dụ về mã giả sau:
# Assume 'h3_density_data' is your aggregated data from Step 1.
# Assume 'detailed_places_data' is your list of place objects from Step 3.
# Create the base choropleth map from the H3 density data.
# The 'count' column determines the color of each hexagon.
combined_map = create_choropleth_map(
data=h3_density_data,
color_by_column='count'
)
# Iterate through the detailed place data to add individual markers.
for place in detailed_places_data:
# Construct the popup information with key details and a link.
popup_html = f"""
<b>{place.name}</b><br>
Address: {place.address}<br>
<a href="{place.google_maps_uri}" target="_blank">View on Maps</a>
"""
# Add a marker for the current place to the base map.
combined_map.add_marker(
location=[place.latitude, place.longitude],
popup=popup_html,
tooltip=place.name
)
# Display the final map with both layers.
display(combined_map)
Bằng cách phủ các điểm đánh dấu cụ thể, chính xác lên bản đồ mật độ cấp cao, bạn có thể xác nhận ngay rằng những khu vực được xác định là điểm nóng thực sự chứa một lượng lớn những địa điểm mà bạn đang phân tích. Việc xác nhận bằng hình ảnh này giúp bạn xây dựng được lòng tin đáng kể vào các kết luận dựa trên dữ liệu.
Kết luận
Mô hình kiến trúc này cung cấp một phương pháp mạnh mẽ và hiệu quả để xác thực thông tin chi tiết không gian địa lý ở quy mô lớn. Bằng cách tận dụng Places Insights để phân tích trên diện rộng, có thể mở rộng và Place Details API để xác minh có mục tiêu, dựa trên dữ liệu thực tế, bạn sẽ tạo ra một vòng hồi tiếp hiệu quả. Điều này đảm bảo các quyết định chiến lược của bạn, cho dù là lựa chọn địa điểm bán lẻ hay lập kế hoạch hậu cần, đều dựa trên dữ liệu không chỉ có ý nghĩa thống kê mà còn có thể xác minh được tính chính xác.
Các bước tiếp theo
- Khám phá các Hàm đếm địa điểm khác để xem cách các hàm này có thể trả lời các câu hỏi phân tích khác nhau.
- Hãy xem tài liệu về Places API để khám phá các trường khác mà bạn có thể yêu cầu để làm phong phú thêm thông tin phân tích.
Người đóng góp
Henrik Valve | Kỹ sư DevX