Weryfikowanie danych Statystyk miejsc za pomocą przykładowych identyfikatorów miejsc

Z tego dokumentu dowiesz się, jak korzystać z przykładowych danych identyfikatorów miejscPlaces Insights za pomocą funkcji zliczania miejsc oraz ukierunkowanych wyszukiwań szczegółów miejsc, aby zwiększyć wiarygodność wyników.

Mapa termiczna gęstości miejsc w Londynie z nałożonymi na nią pojedynczymi znacznikami, które służą do weryfikacji danych statystycznych.

Wzór architektoniczny

Ten wzorzec architektury zapewnia powtarzalny przepływ pracy, który pozwala wypełnić lukę między analizą statystyczną wysokiego poziomu a weryfikacją danych podstawowych. Łącząc skalę BigQuery z precyzją interfejsu Places API, możesz z pewnością weryfikować wyniki analiz. Jest to szczególnie przydatne w przypadku wyboru lokalizacji, analizy konkurencji i badań rynku, w których zaufanie do danych ma kluczowe znaczenie.

Podstawą tego wzorca są 4 kluczowe kroki:

  1. Przeprowadzanie analiz na dużą skalę: użyj funkcji zliczania miejscStatystyk miejsc w BigQuery, aby analizować dane o miejscach na dużym obszarze geograficznym, np. w całym mieście lub regionie.
  2. Izolowanie i wyodrębnianie próbek: identyfikowanie obszarów zainteresowania (np. „hotspotów” o dużej gęstości) z zagregowanych wyników i wyodrębnij sample_place_ids podane przez funkcję.
  3. Pobieranie szczegółów rzeczywistych: użyj wyodrębnionych identyfikatorów miejsc, aby wykonywać ukierunkowane wywołania interfejsu Place Details API i pobierać szczegółowe informacje o każdym miejscu.
  4. Utwórz wizualizację łączoną: nałóż szczegółowe dane o miejscach na początkową mapę statystyczną wysokiego poziomu, aby wizualnie sprawdzić, czy zagregowane liczby odzwierciedlają rzeczywistość.

Przepływ pracy rozwiązania

Ten proces umożliwia połączenie trendów na poziomie makro z faktami na poziomie mikro. Zaczynasz od ogólnego widoku statystycznego, a następnie strategicznie przechodzisz do szczegółów, aby zweryfikować dane na podstawie konkretnych przykładów z życia.

Analizowanie gęstości miejsc na dużą skalę za pomocą statystyk miejsc

Pierwszym krokiem jest ogólne zapoznanie się z sytuacją. Zamiast pobierać tysiące pojedynczych punktów orientacyjnych, możesz uruchomić jedno zapytanie, aby uzyskać podsumowanie statystyczne.

Idealnie nadaje się do tego PLACES_COUNT_PER_H3funkcja Places Insights. Agreguje liczbę punktów POI w systemie siatki sześciokątnej (H3), co pozwala szybko identyfikować obszary o wysokiej lub niskiej gęstości na podstawie określonych kryteriów (np. restauracje o wysokiej ocenie, które są otwarte).

Przykładowe zapytanie: Pamiętaj, że musisz podać obszar wyszukiwania. Otwarty zbiór danych, taki jak Overture Maps Data, publiczny zbiór danych BigQuery, może służyć do pobierania danych o granicach geograficznych.

W przypadku często używanych granic otwartych zbiorów danych zalecamy zapisanie ich w tabeli we własnym projekcie. Znacząco obniża to koszty BigQuery i zwiększa wydajność zapytań.

-- 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
    )
  );

Wynikiem tego zapytania jest tabela komórek H3 i liczba miejsc w każdej z nich, która stanowi podstawę mapy gęstości.

Tabela wyników zapytania BigQuery z kolumnami h3_cell_index, count i sample_place_ids.

Izolowanie ognisk zakażeń i wyodrębnianie przykładowych identyfikatorów miejsc

Wynik funkcji PLACES_COUNT_PER_H3 zwraca też tablicę sample_place_ids, która zawiera maksymalnie 250 identyfikatorów miejsca w każdym elemencie odpowiedzi. Te identyfikatory są powiązane ze statystykami zbiorczymi i poszczególnymi miejscami, które się do nich przyczyniają.

System może najpierw zidentyfikować najbardziej trafne komórki z pierwszego zapytania. Możesz na przykład wybrać 20 komórek o najwyższych wartościach. Następnie z tych hotspotów konsolidujesz sample_place_ids w jedną listę. Ta lista zawiera wyselekcjonowane przykłady najciekawszych miejsc z najbardziej istotnych obszarów, które przygotują Cię do ukierunkowanej weryfikacji.

Jeśli przetwarzasz wyniki BigQuery w Pythonie za pomocą pandas DataFrame, logika wyodrębniania tych identyfikatorów jest prosta:

# 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.")

Podobną logikę można zastosować w przypadku innych języków programowania.

Pobieranie szczegółów rzeczywistych za pomocą interfejsu Places API

Po utworzeniu skonsolidowanej listy identyfikatorów miejsc możesz przejść od analizy na dużą skalę do pobierania konkretnych danych. Będziesz używać tych identyfikatorów do wysyłania zapytań do interfejsu Place Details API w celu uzyskania szczegółowych informacji o każdej przykładowej lokalizacji.

To jest kluczowy etap weryfikacji. Usługa Places Insights informowała o liczbie restauracji w danym obszarze, a interfejs Places API podaje które to restauracje, udostępniając ich nazwę, dokładny adres, szerokość i długość geograficzną, ocenę użytkowników, a nawet bezpośredni link do ich lokalizacji w Mapach Google. Wzbogaca to dane próbne, przekształcając abstrakcyjne identyfikatory w konkretne, weryfikowalne miejsca.

Pełną listę danych dostępnych w interfejsie Place Details API oraz kosztów związanych z ich pobieraniem znajdziesz w dokumentacji interfejsu API. Parametr FieldMask jest ustawiany w żądaniu, aby kontrolować dane zwracane przez interfejs API.

Żądanie do interfejsu Places API dotyczące konkretnego identyfikatora przy użyciu biblioteki klienta w języku Python wyglądałoby tak:

# 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)]
)

Więcej informacji znajdziesz w przykładach biblioteki klienta interfejsu Places API (nowego).

Tworzenie połączonej wizualizacji na potrzeby weryfikacji

Ostatni krok to połączenie obu zbiorów danych w jednym widoku. Dzięki temu możesz szybko i intuicyjnie sprawdzić wstępną analizę. Wizualizacja powinna mieć 2 warstwy:

  1. Warstwa podstawowa: kartogram lub mapa cieplna wygenerowane na podstawie wstępnych wynikówPLACES_COUNT_PER_H3, pokazujące ogólną gęstość miejsc w Twojej lokalizacji.
  2. Najwyższa warstwa: zestaw pojedynczych znaczników dla każdego przykładowego punktu POI, wykreślonych na podstawie dokładnych współrzędnych pobranych z interfejsu Places API w poprzednim kroku.

Logika tworzenia tego widoku łączonego jest wyrażona w tym przykładzie pseudokodu:

# 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)

Nakładając konkretne znaczniki danych podstawowych na mapę gęstości ogólnej, możesz od razu potwierdzić, że obszary zidentyfikowane jako hotspoty rzeczywiście zawierają dużą koncentrację analizowanych miejsc. Wizualne potwierdzenie zwiększa zaufanie do wniosków opartych na danych.

Podsumowanie

Ten wzorzec architektury zapewnia niezawodną i wydajną metodę weryfikacji wniosków geoprzestrzennych na dużą skalę. Korzystając z Places Insights do przeprowadzania szerokiej analizy na dużą skalę oraz z interfejsu Place Details API do ukierunkowanej weryfikacji w terenie, możesz stworzyć wydajną pętlę informacji zwrotnych. Dzięki temu Twoje decyzje strategiczne, czy to dotyczące wyboru lokalizacji sklepu, czy planowania logistyki, będą oparte na danych, które są nie tylko istotne statystycznie, ale też weryfikowalnie dokładne.

Dalsze kroki

Współtwórcy

Henrik Valve | Inżynier DevX