التحقّق من صحة بيانات "إحصاءات الأماكن" باستخدام أرقام تعريف نموذجية للأماكن

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

للحصول على تنفيذ مرجعي مفصّل لهذا النمط، يمكنك الاطّلاع على دفتر الملاحظات التوضيحي التالي:

خريطة التمثيل اللوني للكثافة في لندن، مع علامات فردية متراكبة للتحقّق من صحة البيانات الإحصائية

نمط البناء

يمنحك نمط التصميم هذا سير عمل قابلاً للتكرار لسد الفجوة بين التحليل الإحصائي العالي المستوى والتحقّق من صحة البيانات الأساسية. من خلال الجمع بين نطاق BigQuery ودقة Places API، يمكنك التحقّق من صحة النتائج التحليلية بثقة. ويُعدّ ذلك مفيدًا بشكل خاص في ما يتعلّق باختيار المواقع وتحليل المنافسين وأبحاث السوق، حيث تكون الثقة في البيانات أمرًا بالغ الأهمية.

يتضمّن جوهر هذا النمط أربع خطوات رئيسية:

  1. إجراء تحليل على نطاق واسع: استخدِم وظيفة "عدد الأماكن" من إحصاءات الأماكن في BigQuery لتحليل بيانات الأماكن على نطاق جغرافي واسع، مثل مدينة أو منطقة بأكملها.
  2. عزل العيّنات واستخراجها: حدِّد المناطق التي تهمّك (مثل "المناطق الساخنة" ذات الكثافة العالية) من النتائج المجمّعة واستخرِج sample_place_ids التي توفّرها الدالة.
  3. استرداد تفاصيل المكان: استخدِم أرقام تعريف الأماكن التي تم استخراجها لإجراء طلبات مستهدَفة إلى Place Details API من أجل جلب تفاصيل غنية وواقعية لكل مكان.
  4. إنشاء تصور مجمّع: ضع طبقة من بيانات الأماكن التفصيلية فوق الخريطة الإحصائية الأولية ذات المستوى العالي للتحقّق بصريًا من أنّ الأعداد المجمّعة تعكس الواقع على أرض الواقع.

سير عمل الحل

يتيح لك سير العمل هذا الربط بين المؤشرات على المستوى الكلّي والحقائق على المستوى الجزئي. تبدأ بنظرة إحصائية عامة ثم تتعمّق بشكل استراتيجي للتحقّق من البيانات باستخدام أمثلة محددة من الواقع.

تحليل كثافة الأماكن على نطاق واسع باستخدام إحصاءات الأماكن

تتمثّل خطوتك الأولى في فهم المشهد على مستوى عالٍ. بدلاً من جلب آلاف المواقع الفردية المهمة، يمكنك تنفيذ طلب بحث واحد للحصول على ملخّص إحصائي.

تُعدّ وظيفة "إحصاءات الأماكن" PLACES_COUNT_PER_H3 مثالية لهذا الغرض. تجمع هذه الأداة أعداد نقاط الاهتمام في نظام شبكة سداسية الأضلاع (H3)، ما يتيح لك تحديد المناطق ذات الكثافة العالية أو المنخفضة بسرعة استنادًا إلى معاييرك المحددة (مثل المطاعم التي حصلت على تقييم عالٍ والتي تعمل حاليًا).

في ما يلي مثال على طلب بحث. يُرجى العِلم أنّه سيُطلب منك تقديم معلومات جغرافية عن منطقة البحث. يمكن استخدام مجموعة بيانات مفتوحة، مثل بيانات Overture Maps مجموعة البيانات العامة في 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 وعدد الأماكن داخل كل خلية، ما يشكّل أساسًا لخريطة حرارية للكثافة.

جدول لنتائج طلب بحث BigQuery يعرض أعمدة h3_cell_index وcount وsample_place_ids

عزل نقاط الاتصال واستخراج أرقام تعريف الأماكن النموذجية

تعرض نتيجة الدالة 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

بعد الحصول على قائمة موحّدة بمعرّفات الأماكن، يمكنك الانتقال من التحليلات الواسعة النطاق إلى استرداد البيانات المحدّدة. ستستخدم أرقام التعريف هذه للاستعلام من واجهة برمجة التطبيقات Place Details عن معلومات تفصيلية حول كل موقع جغرافي من المواقع النموذجية.

هذه خطوة مهمة للتحقّق من صحة المعلومات. في حين أنّ إحصاءات الأماكن كانت تخبرك بعدد المطاعم في منطقة معيّنة، يخبرك 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)]
)

يُرجى العِلم أنّ الحقول الواردة في هذا الطلب تسحب البيانات من رمزين مختلفَين لوحدة حفظ المخزون (SKU) الخاصة بالفوترة.

عندما يتضمّن طلب واحد من تفاصيل المكان حقولاً من رموز تخزين تعريفية متعددة، يتم تحصيل رسوم الطلب بالكامل بسعر رمز التخزين التعريفي الأعلى مستوى. لذلك، سيتم تحصيل رسوم مقابل هذا الطلب المحدّد باعتباره طلبًا من تفاصيل المكان Pro.

للتحكّم في التكاليف، استخدِم دائمًا FieldMask لطلب الحقول التي يتطلّبها تطبيقك فقط.

إنشاء عرض مرئي مجمّع للتحقّق من صحة الفلتر

الخطوة الأخيرة هي جمع مجموعتَي البيانات معًا في عرض واحد. يوفّر ذلك طريقة فورية وسهلة للتحقّق من صحة تحليلك الأوّلي. يجب أن يتضمّن العرض المرئي طبقتَين:

  1. الطبقة الأساسية: هي خريطة ذات تظليل مساحي أو خريطة التمثيل اللوني تم إنشاؤها من نتائج PLACES_COUNT_PER_H3 الأولية، وتعرض الكثافة الإجمالية للأماكن في نطاقك الجغرافي.
  2. الطبقة العلوية: مجموعة من العلامات الفردية لكل نقطة اهتمام نموذجية، يتم رسمها باستخدام الإحداثيات الدقيقة التي تم استردادها من 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)

من خلال تراكب العلامات المحدّدة والدقيقة على خريطة الكثافة العامة، يمكنك التأكّد على الفور من أنّ المناطق التي تم تحديدها كنقاط ساخنة تحتوي في الواقع على تركيز عالٍ من الأماكن التي تحلّلها. تساعد هذه الإشارة المرئية في تعزيز الثقة في الاستنتاجات المستندة إلى البيانات.

الخاتمة

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

الخطوات التالية

  • استكشِف دوال عدد الأماكن الأخرى لمعرفة كيف يمكنها الإجابة عن أسئلة تحليلية مختلفة.
  • راجِع مستندات Places API للاطّلاع على الحقول الأخرى التي يمكنك طلبها لإثراء تحليلك بشكل أكبر.

المساهمون

هنريك فالف | مهندس DevX