در این سند، نحوه استفاده از نمونه دادههای شناسه مکان را از Places Insights ، با استفاده از توابع شمارش مکان ، در کنار جستجوهای هدفمند جزئیات مکان برای ایجاد اطمینان در نتایج خود خواهید آموخت.
الگوی معماری
این الگوی معماری به شما یک گردش کار تکرارپذیر می دهد تا شکاف بین تجزیه و تحلیل آماری سطح بالا و تأیید حقیقت زمین را پر کنید. با ترکیب مقیاس BigQuery با دقت Places API ، میتوانید با اطمینان یافتههای تحلیلی خود را تأیید کنید. این به ویژه برای انتخاب سایت، تجزیه و تحلیل رقبا، و تحقیقات بازار که در آن اعتماد به داده ها بسیار مهم است، مفید است.
هسته اصلی این الگو شامل چهار مرحله کلیدی است:
- انجام تجزیه و تحلیل در مقیاس بزرگ: از یک تابع شمارش مکان از Places Insights در BigQuery برای تجزیه و تحلیل دادههای مکان در یک جغرافیای بزرگ، مانند کل شهر یا منطقه استفاده کنید.
- جداسازی و استخراج نمونهها: مناطق مورد علاقه (مثلاً «نقاط داغ» با تراکم بالا) را از نتایج جمعآوریشده شناسایی کنید و
sample_place_ids
ارائهشده توسط تابع را استخراج کنید. - بازیابی جزئیات Ground-Truth: از شناسه های مکان استخراج شده برای برقراری تماس های هدفمند با Place Details API برای واکشی جزئیات غنی و واقعی برای هر مکان استفاده کنید.
- ایجاد یک تجسم ترکیبی: دادههای مکان دقیق را در بالای نقشه آماری سطح بالا اولیه قرار دهید تا به صورت بصری تأیید کنید که تعداد جمعآوری شده واقعیت روی زمین را منعکس میکند.
گردش کار راه حل
این گردش کار به شما امکان می دهد شکاف بین روندهای سطح کلان و واقعیت های سطح خرد را پر کنید. شما با یک دید گسترده و آماری شروع میکنید و بهطور استراتژیک به بررسی دقیق دادهها با مثالهای خاص و واقعی میپردازید.
تراکم مکان را در مقیاس با اطلاعات مکانها تجزیه و تحلیل کنید
اولین قدم شما این است که چشم انداز را در سطح بالایی درک کنید. به جای واکشی هزاران نقطه مورد علاقه (POI)، می توانید یک پرس و جو را برای دریافت خلاصه آماری اجرا کنید.
عملکرد Places Insights PLACES_COUNT_PER_H3
برای این کار ایده آل است. این تعداد POI را در یک سیستم شبکه شش ضلعی (H3) جمع می کند و به شما امکان می دهد مناطق با تراکم بالا یا کم را بر اساس معیارهای خاص خود به سرعت شناسایی کنید (مثلا رستوران هایی با رتبه بالا که عملیاتی هستند).
یک نمونه پرس و جو به شرح زیر است. توجه داشته باشید که باید جغرافیای منطقه جستجوی خود را ارائه دهید. یک مجموعه داده باز، مانند مجموعه داده عمومی Overture Maps Data BigQuery می تواند برای بازیابی داده های مرزی جغرافیایی استفاده شود.
برای مرزهای داده باز که اغلب استفاده می شود، توصیه می کنیم آنها را در یک جدول در پروژه خود اجرا کنید. این به طور قابل توجهی هزینه های BigQuery را کاهش می دهد و عملکرد پرس و جو را بهبود می بخشد.
-- 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
)
);
خروجی این کوئری جدولی از سلولهای H3 و تعداد مکانهای درون هر کدام را به شما میدهد، که اساس یک نقشه حرارتی چگالی را تشکیل میدهد.
Hotspot ها را ایزوله کنید و شناسه های مکان نمونه را استخراج کنید
نتیجه تابع PLACES_COUNT_PER_H3
همچنین آرایهای از sample_place_ids
را برمیگرداند، تا 250 شناسه مکان در هر عنصر پاسخ. این شناسهها پیوندی از آمار جمعآوری شده به مکانهای فردی هستند که در آن مشارکت دارند.
سیستم شما ابتدا می تواند مرتبط ترین سلول ها را از پرس و جو اولیه شناسایی کند. به عنوان مثال، ممکن است 20 سلول برتر با بیشترین تعداد را انتخاب کنید. سپس، از این هات اسپات ها، sample_place_ids
در یک لیست واحد ادغام می کنید. این فهرست نمونهای از جالبترین POIها را از مرتبطترین مناطق نشان میدهد که شما را برای تأیید هدفمند آماده میکند.
اگر نتایج BigQuery خود را در پایتون با استفاده از DataFrame pandas پردازش می کنید، منطق استخراج این شناسه ها ساده است:
# 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.")
منطق مشابهی را می توان در صورت استفاده از زبان های برنامه نویسی دیگر اعمال کرد.
جزئیات Ground-Truth را با Places API بازیابی کنید
با فهرست تلفیقی از شناسههای مکان، اکنون از تجزیه و تحلیل در مقیاس بزرگ به بازیابی دادههای خاص منتقل میشوید. شما از این شناسه ها برای پرس و جو از API جزئیات مکان برای اطلاعات دقیق در مورد هر مکان نمونه استفاده خواهید کرد.
این یک مرحله اعتبارسنجی حیاتی است. در حالی که Places Insights به شما میگوید چند رستوران در یک منطقه وجود دارد، Places API به شما میگوید کدام رستورانها هستند، با ارائه نام، آدرس دقیق، طول/طول جغرافیایی، رتبهبندی کاربر، و حتی یک پیوند مستقیم به مکان آنها در Google Maps. این دادههای نمونه شما را غنی میکند و شناسههای انتزاعی را به مکانهای مشخص و قابل تأیید تبدیل میکند.
برای فهرست کامل دادههای موجود از Place Details API و هزینه مربوط به بازیابی، اسناد API را مرور کنید . FieldMask
بر روی درخواست تنظیم می شود تا داده های برگردانده شده از API را کنترل کند.
یک درخواست به Places API برای یک شناسه خاص با استفاده از کتابخانه کلاینت پایتون به شکل زیر است:
# 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)]
)
برای جزئیات بیشتر به نمونههای کتابخانه سرویس گیرنده Places API (جدید) مراجعه کنید.
یک تجسم ترکیبی برای اعتبار سنجی ایجاد کنید
مرحله آخر این است که هر دو مجموعه داده را در یک نمای واحد با هم جمع کنید. این یک راه فوری و شهودی برای بررسی دقیق تحلیل اولیه شما فراهم می کند. تجسم شما باید دو لایه داشته باشد:
- لایه پایه: choropleth یا نقشه حرارتی ایجاد شده از نتایج اولیه
PLACES_COUNT_PER_H3
، که تراکم کلی مکان ها را در سراسر جغرافیای شما نشان می دهد. - لایه بالایی: مجموعه ای از نشانگرهای مجزا برای هر POI نمونه که با استفاده از مختصات دقیق بازیابی شده از Places API در مرحله قبل ترسیم شده است.
منطق ساخت این نمای ترکیبی در این مثال شبه کد بیان شده است:
# 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)
با قرار دادن نشانگرهای خاص و واقعی روی نقشه تراکم سطح بالا، میتوانید فوراً تأیید کنید که مناطقی که به عنوان کانون شناسایی شدهاند، در واقع دارای غلظت بالایی از مکانهایی هستند که شما در حال تجزیه و تحلیل هستید. این تایید بصری اعتماد قابل توجهی را در نتیجه گیری های مبتنی بر داده های شما ایجاد می کند.
نتیجه گیری
این الگوی معماری روشی قوی و کارآمد برای اعتبارسنجی بینشهای جغرافیایی در مقیاس بزرگ ارائه میکند. با استفاده از Places Insights برای تحلیل گسترده و مقیاسپذیر و Place Details API برای راستیآزمایی هدفمند و واقعی، یک حلقه بازخورد قدرتمند ایجاد میکنید. این تضمین میکند که تصمیمات استراتژیک شما، چه در انتخاب سایت خردهفروشی یا برنامهریزی تدارکات، مبتنی بر دادههایی هستند که نه تنها از نظر آماری مهم هستند، بلکه بهطور قابل تأیید دقیق هستند.
مراحل بعدی
- سایر توابع تعداد مکان را کاوش کنید تا ببینید چگونه می توانند به سؤالات تحلیلی مختلف پاسخ دهند.
- اسناد Places API را مرور کنید تا زمینه های دیگری را که می توانید برای غنی سازی بیشتر تحلیل خود درخواست کنید، کشف کنید.
مشارکت کنندگان
Henrik Valve | مهندس DevX