Bu belgede, sonuçlarınızın güvenilirliğini artırmak için hedeflenen Yer Ayrıntıları aramalarının yanı sıra Yer Sayısı İşlevleri'ni kullanarak Places Insights'tan alınan örnek Yer Kimliği verilerini nasıl kullanacağınızı öğreneceksiniz.
Bu kalıbın ayrıntılı bir referans uygulaması için şu açıklayıcı not defterine bakın:

Mimari Desen
Bu mimari desen, üst düzey istatistiksel analiz ile gerçeklik doğrulama arasındaki boşluğu doldurmak için tekrarlanabilir bir iş akışı sunar. BigQuery'nin ölçeğini Places API'nin hassasiyetiyle birleştirerek analitik bulgularınızı güvenle doğrulayabilirsiniz. Bu özellik, özellikle veri güveninin son derece önemli olduğu site seçimi, rakip analizi ve pazar araştırması için yararlıdır.
Bu kalıbın temelinde dört önemli adım vardır:
- Büyük Ölçekli Analiz Yapma: BigQuery'deki Places Insights'tan Yer Sayısı İşlevi'ni kullanarak yer verilerini büyük bir coğrafi bölgede (ör. bir şehrin veya bölgenin tamamı) analiz edin.
- Örnekleri Ayırın ve Çıkarın: Toplanan sonuçlardan ilgi alanlarını (ör. yüksek yoğunluklu "yoğun noktalar") belirleyin ve işlev tarafından sağlanan
sample_place_idsçıkarın. - Doğru Bilgi Ayrıntılarını Alma: Her yer için zengin ve gerçek dünyayla ilgili ayrıntıları getirmek üzere Yer Kimliklerini kullanarak Yer Ayrıntıları API'ye hedeflenmiş çağrılar yapın.
- Birleşik Görselleştirme Oluşturma: Toplanan sayıların yerdeki gerçekliği yansıttığını görsel olarak doğrulamak için ayrıntılı yer verilerini ilk üst düzey istatistiksel haritanın üzerine yerleştirin.
Çözüm İş Akışı
Bu iş akışı, makro düzeydeki trendler ile mikro düzeydeki gerçekler arasındaki boşluğu kapatmanıza olanak tanır. Geniş bir istatistiksel görünümle başlar ve verileri belirli, gerçek hayattan örneklerle doğrulamak için stratejik olarak ayrıntılara inersiniz.
Places Insights ile yer yoğunluğunu geniş ölçekte analiz etme
İlk adımınız, genel olarak durumu anlamak olmalıdır. Binlerce ayrı önemli yer (ÖY) getirmek yerine, istatistiksel bir özet almak için tek bir sorgu çalıştırabilirsiniz.
Bu amaç için Places Insights PLACES_COUNT_PER_H3
işlevi
idealdir. Bu özellik, önemli yer sayımlarını altıgen ızgara sisteminde
(H3) toplar.Böylece, belirli ölçütlerinize (ör. yüksek puanlı ve hizmet veren restoranlar) göre yüksek veya düşük yoğunluklu alanları hızlıca belirleyebilirsiniz.
Örnek bir sorgu aşağıda verilmiştir. Arama alanı coğrafyanızı sağlamanız gerektiğini unutmayın. Overture Maps Data gibi açık bir veri kümesi, coğrafi sınır verilerini almak için kullanılabilir. Bu amaçla BigQuery herkese açık veri kümesi de kullanılabilir.
Sık kullanılan açık veri kümesi sınırları için bunları kendi projenizdeki bir tabloda somutlaştırmanızı öneririz. Bu, BigQuery maliyetlerini önemli ölçüde azaltır ve sorgu performansını artırır.
-- 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
)
);
Marka kimliğine göre filtreleme ve doğrulama
Belirli markalar için sayıları ve örnek yer kimliklerini doğrulamak istiyorsanız brand_ids filtresini kullanarak marka kimliklerinin bir listesini sağlayın.
Hedef markanın marka kimliğini almak için BigQuery'deki brands tablosunu sorgulayın:
SELECT id, name
FROM `YOUR_PROJECT.places_insights___us.brands`
WHERE LOWER(name) LIKE "%starbucks%";
Hedef marka kimliğini (örneğin, Starbucks için "1413758728321880760"
) aldıktan sonra brand_ids filtre dizisinin içine iletin:
SELECT *
FROM
`places_insights___us.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'brand_ids', ["1413758728321880760"]
)
);
3. adım olan gerçek doğru doğrulama sırasında, bir yerin genel kategorilerle eşleştiğini onaylamak yerine, Yer Ayrıntıları API tarafından döndürülen görünen adı normal ifade eşleşmesi kullanarak beklenen marka adınızla programatik olarak karşılaştırabilirsiniz. Örneğin, response.display_name.text alanını karşılaştırabilirsiniz.
Bu sorgunun çıktısı, her birinde yer sayısının bulunduğu bir H3 hücreleri tablosu oluşturur. Bu tablo, yoğunluk ısı haritasının temelini oluşturur.

Yoğun bölgeleri belirleme ve örnek yer kimliklerini ayıklama
PLACES_COUNT_PER_H3 işlevinin sonucu, yanıtın her öğesi için 250'ye kadar yer kimliği içeren bir dizi
sample_place_ids de döndürür. Bu kimlikler, toplu istatistikten bu istatistiğe katkıda bulunan tek tek yerlere giden bağlantıdır.
Sisteminiz, ilk sorgudaki en alakalı hücreleri önce belirleyebilir.
Örneğin, en yüksek sayıya sahip ilk 20 hücreyi seçebilirsiniz. Ardından, bu önemli noktalardan sample_place_ids tek bir listede birleştirilir.
Bu liste, en alakalı alanlardaki en ilginç ÖY'lerin özel olarak seçilmiş bir örneğini sunarak sizi hedeflenen doğrulamaya hazırlar.
BigQuery sonuçlarınızı pandas DataFrame kullanarak Python'da işliyorsanız bu kimlikleri ayıklama mantığı basittir:
# 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.")
Diğer programlama dilleri kullanılırken de benzer bir mantık uygulanabilir.
Places API ile Doğru Bilgi Ayrıntılarını Alma
Yer kimliklerinin birleştirilmiş listesiyle artık büyük ölçekli analizden belirli veri alma işlemine geçebilirsiniz. Bu kimlikleri, her örnek konumla ilgili ayrıntılı bilgi için Place Details API'yi sorgulamak üzere kullanacaksınız.
Bu, kritik bir doğrulama adımıdır. Places Insights, bir bölgede kaç restoran olduğunu gösterirken Places API, bu restoranların hangileri olduğunu gösterir. Ayrıca restoranların adını, tam adresini, enlem/boylamını, kullanıcı puanını ve hatta Google Haritalar'daki konumlarına doğrudan bağlantı sağlar. Bu, örnek verilerinizi zenginleştirerek soyut kimlikleri somut ve doğrulanabilir yerlere dönüştürür.
Yer Ayrıntıları API'sinden edinilebilen verilerin tam listesi ve bu verilerin alınmasıyla ilişkili maliyet için API belgelerini inceleyin.
Python istemci kitaplığı kullanılarak belirli bir kimlik için Places API'ye yapılan istek şu şekilde görünür. Daha fazla bilgi için Places API (Yeni) istemci kitaplığı örneklerine göz atın.
# 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)]
)
Bu istekteki alanların, iki farklı faturalandırma SKU'sundan veri çektiğini unutmayın.
formattedAddressvelocation, Yer Ayrıntıları Temel Öğeler SKU'suna dahildir.displayNamevegoogleMapsUri, Yer Ayrıntıları Pro SKU'suna dahildir.
Tek bir yer ayrıntıları isteği birden fazla SKU'daki alanları içerdiğinde, isteğin tamamı en yüksek katmanlı SKU'nun ücreti üzerinden faturalandırılır. Bu nedenle, bu özel çağrı, Yer Ayrıntıları Pro isteği olarak faturalandırılır.
Maliyetlerinizi kontrol etmek için uygulamanızın ihtiyaç duyduğu alanları istemek üzere her zaman FieldMask kullanın.
Doğrulama için birleşik görselleştirme oluşturma
Son adım, her iki veri kümesini tek bir görünümde bir araya getirmektir. Bu özellik, ilk analizinizi anında ve sezgisel bir şekilde kontrol etmenizi sağlar. Görselleştirmeniz iki katmandan oluşmalıdır:
- Temel Katman: İlk
PLACES_COUNT_PER_H3sonuçlardan oluşturulan bir koroplet veya ısı haritası. Coğrafyanızdaki yerlerin genel yoğunluğunu gösterir. - En Üst Katman: Önceki adımda Places API'den alınan tam koordinatlar kullanılarak çizilen, her örnek ÖY için ayrı işaretçilerden oluşan bir küme.
Bu birleşik görünümü oluşturma mantığı, aşağıdaki sözde kod örneğinde ifade edilmiştir:
# 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)
Yüksek düzeyli yoğunluk haritasına belirli, gerçeklik işaretçilerini yerleştirerek, sıcak nokta olarak tanımlanan alanların gerçekten de analiz ettiğiniz yerlerin yüksek yoğunlukta olduğu alanlar olduğunu anında doğrulayabilirsiniz. Bu görsel onay, veriye dayalı sonuçlarınıza duyulan güveni önemli ölçüde artırır.
Sonuç
Bu mimari kalıp, büyük ölçekli coğrafi analizleri doğrulamak için sağlam ve verimli bir yöntem sunar. Kapsamlı ve ölçeklenebilir analiz için Places Insights'ı, hedeflenmiş ve gerçek doğru doğrulama için Yer Ayrıntıları API'yi kullanarak güçlü bir geri bildirim döngüsü oluşturursunuz. Bu sayede, perakende sitesi seçimi veya lojistik planlama gibi stratejik kararlarınız yalnızca istatistiksel olarak anlamlı değil, aynı zamanda doğrulanabilir şekilde doğru olan verilere dayanır.
Sonraki adımlar
- Farklı analiz sorularını nasıl yanıtlayabileceklerini görmek için diğer Yer Sayısı İşlevlerini inceleyin.
- Analizinizi daha da zenginleştirmek için isteyebileceğiniz diğer alanları öğrenmek üzere Places API belgelerini inceleyin.
Katkıda bulunanlar
Henrik Valve | DevX Mühendisi
Google Colab'de çalıştır
Kaynağı GitHub'da görüntüle