في هذا المستند، ستتعرّف على كيفية استخدام نموذج بيانات أرقام تعريف الأماكن من إحصاءات الأماكن، باستخدام دوال عدد الأماكن، إلى جانب عمليات البحث المستهدَفة عن تفاصيل الأماكن لتعزيز الثقة في نتائجك.
للحصول على تفاصيل حول تنفيذ هذا النمط، يمكنك الاطّلاع على دفتر الملاحظات التوضيحي التالي:

النمط المعماري
يوفّر لك هذا النمط المعماري سير عمل قابلاً للتكرار لسد الفجوة بين التحليل الإحصائي العالي المستوى والتحقّق من المعلومات الفعلية. من خلال الجمع بين نطاق BigQuery ودقة Places API، يمكنك التحقّق من صحة نتائجك التحليلية بثقة. وهذا مفيد بشكل خاص لاختيار المواقع الجغرافية وتحليل المنافسين وأبحاث السوق، حيث تكون الثقة في البيانات أمرًا بالغ الأهمية.
يتضمن جوهر هذا النمط أربع خطوات رئيسية:
- إجراء تحليل على نطاق واسع: يمكنك استخدام دالة عدد الأماكن من إحصاءات الأماكن في BigQuery لتحليل بيانات الأماكن على مستوى منطقة جغرافية كبيرة، مثل مدينة أو منطقة بأكملها.
- عزل العينات واستخراجها: حدِّد المناطق محل الاهتمام (مثل "المناطق الأكثر نشاطًا" ذات الكثافة العالية) من النتائج المجمّعة واستخرِج
sample_place_idsالتي توفّرها الدالة. - استرداد تفاصيل المكان الفعلية: استخدِم أرقام تعريف الأماكن المستخرَجة لإجراء طلبات موجَّهة إلى Place Details API من أجل جلب تفاصيل غنية وواقعية لكل مكان.
- إنشاء عرض مرئي مجمّع: يمكنك وضع طبقة بيانات الأماكن التفصيلية فوق الخريطة الإحصائية الأولية العالية المستوى للتحقّق بصريًا من أنّ الأعداد المجمّعة تعكس الواقع على أرض الواقع.
سير عمل الحلّ
يتيح لك سير العمل هذا سد الفجوة بين المؤشرات على المستوى الكلي والحقائق على المستوى الجزئي. تبدأ بنظرة إحصائية واسعة وتتعمّق بشكل استراتيجي للتحقّق من البيانات باستخدام أمثلة محدّدة من الواقع.
تحليل كثافة الأماكن على نطاق واسع باستخدام إحصاءات الأماكن
خطوتك الأولى هي فهم المشهد على مستوى عالٍ. بدلاً من جلب آلاف المعالم الفردية، يمكنك إجراء طلب بحث واحد للحصول على ملخّص إحصائي.
تُعدّ دالة PLACES_COUNT_PER_H3
Places Insights
مثالية لهذا الغرض. وتجمع هذه الميزة أعداد نقاط الاهتمام في نظام شبكة سداسية
(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
)
);
الفلترة والتحقّق حسب رقم تعريف العلامة التجارية
إذا أردت التحقّق من صحة الأعداد وعيّنات أرقام تعريف الأماكن لعلامات تجارية معيّنة،
يُرجى تقديم قائمة بأرقام تعريف العلامات التجارية باستخدام فلتر brand_ids.
للحصول على رقم تعريف العلامة التجارية المستهدَفة، يمكنك الاستعلام عن الجدول brands في BigQuery:
SELECT id, name
FROM `YOUR_PROJECT.places_insights___us.brands`
WHERE LOWER(name) LIKE "%starbucks%";
بعد استرداد معرّف العلامة التجارية المستهدَفة (على سبيل المثال، "1413758728321880760"
لـ Starbucks)، مرِّره داخل مصفوفة الفلتر brand_ids:
SELECT *
FROM
`places_insights___us.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'brand_ids', ["1413758728321880760"]
)
);
خلال الخطوة 3، وهي التحقّق من المعلومات الفعلية، بدلاً من التأكّد من أنّ المكان
يطابق الفئات العامة، يمكنك مقارنة الاسم المعروض
الذي تعرضه Place Details API باسم علامتك التجارية المتوقّع آليًا باستخدام
تطابق تعبير عادي. على سبيل المثال، يمكنك مقارنة حقل
response.display_name.text.
يوفّر لك ناتج هذا الطلب جدولاً بخلايا H3 وعدد الأماكن في كل منها، ما يشكّل الأساس لخريطة حرارية للكثافة.

عزل النقاط الفعّالة واستخراج عيّنات من أرقام تعريف الأماكن
تعرض النتيجة من دالة PLACES_COUNT_PER_H3 أيضًا مصفوفة من
sample_place_ids، ما يصل إلى 250 رقم تعريف مكان لكل عنصر في الاستجابة. هذه المعرّفات هي الرابط من الإحصاءات المجمّعة إلى الأماكن الفردية التي تساهم فيها.
يمكن لنظامك أولاً تحديد الخلايا الأكثر صلة من طلب البحث الأولي.
على سبيل المثال، يمكنك اختيار أعلى 20 خلية تحتوي على أعلى عدد. بعد ذلك،
من هذه النقاط الفعّالة، يمكنك دمج sample_place_ids في قائمة واحدة.
تمثّل هذه القائمة عيّنة منظَّمة من أهم نقاط الاهتمام في المناطق الأكثر صلة، ما يجهّزك لعملية التحقّق المستهدَفة.
إذا كنت تعالج نتائج BigQuery في Python باستخدام إطار بيانات 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.")
ويمكن تطبيق منطق مشابه في حال استخدام لغات برمجة أخرى.
استرداد التفاصيل المستندة إلى التجارب باستخدام Places API
بعد الحصول على قائمة موحّدة بأرقام تعريف الأماكن، يمكنك الآن الانتقال من التحليلات الواسعة النطاق إلى استرداد بيانات محدّدة. ستستخدم أرقام التعريف هذه للاستعلام عن واجهة برمجة تطبيقات تفاصيل المكان للحصول على معلومات تفصيلية حول كل موقع عينة.
هذه خطوة تحقّق مهمة. في حين أنّ خدمة إحصاءات الأماكن تتيح لك معرفة عدد المطاعم في منطقة معيّنة، تتيح لك Places API معرفة أسماء هذه المطاعم وعناوينها الدقيقة وخطوط العرض/الطول الخاصة بها وتقييمات المستخدمين لها، بالإضافة إلى رابط مباشر إلى موقعها الجغرافي على "خرائط Google". يؤدي ذلك إلى إثراء عيّنات البيانات، وتحويل أرقام التعريف المجرّدة إلى أماكن ملموسة يمكن التحقّق منها.
للحصول على القائمة الكاملة للبيانات المتاحة من Place Details API والتكلفة المرتبطة باستردادها، يُرجى مراجعة مستندات واجهة برمجة التطبيقات.
سيبدو طلب الحصول على معرّف معيّن من Places API باستخدام مكتبة برامج Python على النحو التالي. لمزيد من التفاصيل، يمكنك الاطّلاع على أمثلة على مكتبة برامج 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 = "formattedAddress,location,displayName,googleMapsUri"
# The response contains ground truth data.
response = places_client.get_place(
request=request,
metadata=[("x-goog-fieldmask", fields_to_request)]
)
يُرجى العِلم أنّ الحقول في هذا الطلب تسحب البيانات من رمزَي تخزين تعريفيَين مختلفَين للفوترة.
-
formattedAddressوlocationهما جزء من رمز التخزين التعريفي الأساسي لتفاصيل المكان. - يُعدّ
displayNameوgoogleMapsUriجزءًا من رمز التخزين التعريفي (SKU) لـ Place Details Pro.
عندما يتضمّن طلب واحد من "تفاصيل المكان" حقولاً من رموز تخزين تعريفية متعددة، يتم تحصيل رسوم الطلب بالكامل وفقًا لسعر رمز التخزين التعريفي الأعلى مستوى. وبالتالي، سيتم تحصيل رسوم هذا الطلب المحدّد كطلب Place Details Pro.
للتحكّم في التكاليف، استخدِم دائمًا FieldMask لطلب الحقول التي يتطلّبها تطبيقك فقط.
إنشاء تصور مدمج للتحقق
الخطوة الأخيرة هي جمع مجموعتَي البيانات معًا في عرض واحد. يوفر هذا طريقة فورية وبديهية للتحقق من تحليلك الأولي. يجب أن يتضمّن التصور طبقتَين:
- الطبقة الأساسية: خريطة تظليل مساحي أو خريطة التمثيل اللوني يتم إنشاؤها من النتائج
PLACES_COUNT_PER_H3الأولية، وتعرض الكثافة الإجمالية للأماكن في موقعك الجغرافي. - الطبقة العليا: مجموعة من العلامات الفردية لكل عيّنة من نقاط الاهتمام، يتم رسمها باستخدام الإحداثيات الدقيقة التي تم استردادها من 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 للتعرّف على الحقول الأخرى التي يمكنك طلبها لإثراء تحليلك.
المساهمون
هنريك فالف | مهندس DevX
التشغيل في Google Colab
عرض المصدر على GitHub