ตรวจสอบข้อมูลข้อมูลเชิงลึกของสถานที่โดยใช้รหัสสถานที่ตัวอย่าง

ในเอกสารนี้ คุณจะได้เรียนรู้วิธีใช้ข้อมูลรหัสสถานที่ตัวอย่างจาก ข้อมูลเชิงลึกของ Places โดยใช้ฟังก์ชันการนับสถานที่ ควบคู่กับการค้นหารายละเอียด สถานที่เป้าหมายเพื่อสร้าง ความมั่นใจในผลลัพธ์

แผนที่ความร้อนแสดงความหนาแน่นของสถานที่ในลอนดอน โดยมีเครื่องหมายแต่ละรายการซ้อนทับเพื่อ
ตรวจสอบข้อมูลทางสถิติ

รูปแบบสถาปัตยกรรม

รูปแบบสถาปัตยกรรมนี้ช่วยให้คุณมีเวิร์กโฟลว์ที่ทำซ้ำได้เพื่อเชื่อมช่องว่าง ระหว่างการวิเคราะห์ทางสถิติระดับสูงกับการยืนยันความจริงภาคพื้น การผสานความสามารถในการปรับขนาดของ BigQuery เข้ากับความแม่นยำของ Places API จะช่วยให้คุณตรวจสอบผลการวิเคราะห์ได้อย่างมั่นใจ ซึ่งมีประโยชน์อย่างยิ่งสำหรับ การเลือกสถานที่ การวิเคราะห์คู่แข่ง และการวิจัยตลาดที่ความน่าเชื่อถือของข้อมูล มีความสำคัญอย่างยิ่ง

หัวใจสำคัญของรูปแบบนี้เกี่ยวข้องกับขั้นตอนหลัก 4 ขั้นตอน ได้แก่

  1. ทำการวิเคราะห์ในวงกว้าง: ใช้ฟังก์ชันการนับสถานที่ จากข้อมูลเชิงลึกเกี่ยวกับสถานที่ใน BigQuery เพื่อ วิเคราะห์ข้อมูลสถานที่ในพื้นที่ทางภูมิศาสตร์ขนาดใหญ่ เช่น ทั้งเมืองหรือทั้งภูมิภาค
  2. แยกและดึงตัวอย่าง: ระบุพื้นที่ที่สนใจ (เช่น "ฮอตสปอต" ที่มีความหนาแน่นสูง) จากผลลัพธ์ที่รวบรวมไว้ และดึงsample_place_idsที่ฟังก์ชันระบุ
  3. ดึงรายละเอียดความจริงที่ตรวจสอบแล้ว: ใช้ Place IDs ที่ดึงออกมาเพื่อทำการเรียกที่กำหนดเป้าหมาย ไปยัง Place Details API เพื่อดึงรายละเอียดที่สมบูรณ์ ในโลกจริงสำหรับแต่ละสถานที่
  4. สร้างภาพข้อมูลรวม: วางเลเยอร์ข้อมูลสถานที่โดยละเอียดไว้ด้านบน แผนที่สถิติระดับสูงเริ่มต้นเพื่อตรวจสอบด้วยภาพว่าจำนวนที่รวบรวม แสดงถึงความเป็นจริงในพื้นที่

เวิร์กโฟลว์ของโซลูชัน

เวิร์กโฟลว์นี้ช่วยให้คุณเชื่อมโยงช่องว่างระหว่างแนวโน้มระดับมหภาคกับข้อเท็จจริงระดับจุลภาคได้ คุณเริ่มต้นด้วยมุมมองทางสถิติในวงกว้างและเจาะลึกอย่างมีกลยุทธ์ เพื่อยืนยันข้อมูลด้วยตัวอย่างที่เฉพาะเจาะจงและเกิดขึ้นจริง

วิเคราะห์ความหนาแน่นของสถานที่ในวงกว้างด้วยข้อมูลเชิงลึกเกี่ยวกับสถานที่

ขั้นตอนแรกคือการทำความเข้าใจภาพรวมในระดับสูง คุณสามารถเรียกใช้การค้นหาเพียงครั้งเดียวเพื่อรับข้อมูลสรุปทางสถิติแทนที่จะดึงข้อมูลจุดที่น่าสนใจ (POI) หลายพันรายการ

ฟังก์ชันข้อมูลเชิงลึกเกี่ยวกับสถานที่ 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 โดยใช้ 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.")

คุณสามารถใช้ตรรกะที่คล้ายกันได้หากใช้ภาษาโปรแกรมอื่นๆ

เรียกดูรายละเอียดความจริงพื้นฐานด้วย Places API

เมื่อมีรายการรหัสสถานที่ที่รวมแล้ว คุณจะเปลี่ยนจากข้อมูลวิเคราะห์ขนาดใหญ่ เป็นการดึงข้อมูลที่เฉพาะเจาะจงได้ คุณจะใช้รหัสเหล่านี้เพื่อค้นหา Place Details API เพื่อดูข้อมูลโดยละเอียดเกี่ยวกับสถานที่ตัวอย่างแต่ละแห่ง

ขั้นตอนนี้เป็นขั้นตอนการตรวจสอบที่สำคัญ แม้ว่าข้อมูลเชิงลึกเกี่ยวกับสถานที่จะบอกจำนวนร้านอาหารในพื้นที่หนึ่งๆ แต่ Places API จะบอกชื่อร้านอาหารเหล่านั้น พร้อมทั้งระบุชื่อ ที่อยู่ที่แน่นอน ละติจูด/ลองจิจูด คะแนนของผู้ใช้ และแม้แต่ลิงก์โดยตรงไปยังตำแหน่งของร้านอาหารบน Google Maps ซึ่งจะช่วยเพิ่มข้อมูลตัวอย่าง และเปลี่ยนรหัสที่เป็นนามธรรมให้เป็นสถานที่ที่จับต้องได้และตรวจสอบได้

ดูรายการข้อมูลทั้งหมดที่ใช้ได้จาก Place Details API และค่าใช้จ่าย ที่เกี่ยวข้องกับการดึงข้อมูลได้ในเอกสารประกอบเกี่ยวกับ API FieldMask จะตั้งค่าในคำขอเพื่อควบคุมข้อมูลที่ API ส่งคืน

คำขอไปยัง Places API สำหรับรหัสที่เฉพาะเจาะจงโดยใช้ไลบรารีของไคลเอ็นต์ Python จะมีลักษณะดังนี้

# 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 (ใหม่) ตัวอย่าง

สร้างภาพแบบรวมเพื่อการตรวจสอบ

ขั้นตอนสุดท้ายคือการนำชุดข้อมูลทั้ง 2 ชุดมารวมกันในมุมมองเดียว ซึ่งเป็นวิธีที่รวดเร็วและใช้งานง่ายในการตรวจสอบการวิเคราะห์เบื้องต้น ภาพควรมี 2 เลเยอร์ดังนี้

  1. เลเยอร์ฐาน: แผนที่ Choropleth หรือฮีตแมปที่สร้างจากผลลัพธ์เริ่มต้น 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 สำหรับการตรวจสอบความจริงที่เจาะจง คุณจะสร้างวงจรความคิดเห็นที่มีประสิทธิภาพได้ ซึ่งจะช่วยให้การตัดสินใจเชิงกลยุทธ์ ไม่ว่าจะเป็นการเลือกสถานที่ตั้งร้านค้าปลีกหรือการวางแผนด้านลอจิสติกส์ อิงตามข้อมูลที่ไม่เพียงแต่มีนัยสำคัญทางสถิติเท่านั้น แต่ยังมีความถูกต้องที่ตรวจสอบได้อีกด้วย

ขั้นตอนถัดไป

ผู้ร่วมให้ข้อมูล

Henrik Valve | DevX Engineer