Questo tutorial utilizza i seguenti set di dati pubblici di BigQuery:
- Ford GoBike Share di San Francisco
- Quartieri di San Francisco
- Report del Dipartimento di polizia di San Francisco (SFPD)
Per informazioni su come accedere a questi set di dati pubblici, consulta Accedere ai set di dati pubblici nella Google Cloud console.
Utilizza i set di dati pubblici per creare le seguenti visualizzazioni:
- Un grafico a dispersione di tutte le stazioni di bike sharing del set di dati Ford GoBike Share
- Poligoni nel set di dati Quartieri di San Francisco
- Una mappa coropletica del numero di stazioni di bike sharing per quartiere
- Una mappa di calore degli incidenti del set di dati dei report del Dipartimento di Polizia di San Francisco
Obiettivi
- Configura l'autenticazione con Google Cloud e, facoltativamente, Google Maps.
- Esegui query sui dati in BigQuery e scarica i risultati in Colab.
- Utilizza gli strumenti di data science di Python per eseguire trasformazioni e analisi.
- Crea visualizzazioni, tra cui grafici a dispersione, poligoni, mappe coropletiche e mappe di calore.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Google Maps JavaScript APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Google Maps JavaScript APIs.
- Assicurati di disporre delle autorizzazioni necessarie per eseguire le attività descritte in questo documento.
Ruoli obbligatori
Se crei un nuovo progetto, sei il proprietario del progetto e ti vengono concesse tutte le autorizzazioni IAM necessarie per completare questo tutorial.
Se utilizzi un progetto esistente, per eseguire i job di query devi disporre del seguente ruolo a livello di progetto.
Make sure that you have the following role or roles on the project:
- BigQuery User (
roles/bigquery.user
)
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi accesso.
-
Nel campo Nuovi principali, inserisci il tuo identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
Per saperne di più sui ruoli in BigQuery, consulta Ruoli IAM predefiniti.
Creare un notebook di Colab
Questo tutorial crea un blocco note di Colab per visualizzare i dati di analisi geospaziali. Puoi aprire una versione predefinita del notebook in Colab, Colab Enterprise o BigQuery Studio facendo clic sui link nella parte superiore della versione GitHub del tutorial Visualizzazione geospaziale di BigQuery in Colab.
Apri Colab.
Nella finestra di dialogo Apri blocco note, fai clic su Nuovo blocco note.
Fai clic su
Untitled0.ipynb
e modifica il nome del notebook inbigquery-geo.ipynb
.Seleziona File > Salva.
Eseguire l'autenticazione con Google Cloud e Google Maps
Questo tutorial esegue query sui set di dati BigQuery e utilizza l'API JavaScript di Google Maps. Per utilizzare queste risorse, devi autenticare il runtime di Colab con Google Cloud e l'API Maps.
Autentica con Google Cloud
Per inserire una cella di codice, fai clic su
Codice.Per autenticarti con il tuo progetto, inserisci il seguente codice:
# REQUIRED: Authenticate with your project. GCP_PROJECT_ID = "PROJECT_ID" #@param {type:"string"} from google.colab import auth from google.colab import userdata auth.authenticate_user(project_id=GCP_PROJECT_ID)
Sostituisci PROJECT_ID con l'ID progetto.
Fai clic su
Esegui cella.Se accetti, quando richiesto fai clic su Consenti per concedere a Colab l'accesso alle tue credenziali.
Nella pagina Accedi con Google, scegli il tuo account.
Nella pagina Accedi al codice del notebook creato da terze parti, fai clic su Continua.
In Seleziona a cosa può accedere il codice del notebook creato da terze parti, fai clic su Seleziona tutto e poi su Continua.
Dopo aver completato il flusso di autorizzazione, nel tuo blocco note di Colab non viene generato alcun output. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
(Facoltativo) Autentica con Google Maps
Se utilizzi Google Maps Platform come provider di mappe per le mappe di base, devi fornire una chiave API di Google Maps Platform. Il notebook recupera la chiave dai tuoi secret di Colab.
Questo passaggio è necessario solo se utilizzi l'API Maps. Se non ti autentichi con Google Maps Platform, pydeck
utilizza la mappa carto
.
Per ottenere la chiave API di Google Maps, segui le istruzioni riportate nella pagina Utilizzare le chiavi API della documentazione di Google Maps.
Passa al tuo blocco note di Colab e fai clic su
Secrets.Fai clic su Aggiungi nuovo secret.
In Nome, inserisci
GMP_API_KEY
.In Valore, inserisci il valore della chiave API Maps generato in precedenza.
Chiudi il riquadro Secrets.
Per inserire una cella di codice, fai clic su
Codice.Per autenticarti con l'API Maps, inserisci il seguente codice:
# Authenticate with the Google Maps JavaScript API. GMP_API_SECRET_KEY_NAME = "GMP_API_KEY" #@param {type:"string"} if GMP_API_SECRET_KEY_NAME: GMP_API_KEY = userdata.get(GMP_API_SECRET_KEY_NAME) if GMP_API_SECRET_KEY_NAME else None else: GMP_API_KEY = None
Se accetti, quando richiesto fai clic su Concedi l'accesso per concedere al notebook l'accesso alla tua chiave.
Fai clic su
Esegui cella.Dopo aver completato il flusso di autorizzazione, nel tuo blocco note di Colab non viene generato alcun output. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Installa i pacchetti Python e importa le librerie di data science
Oltre ai moduli Python colabtools
(google.colab
), questo tutorial utilizza diversi altri pacchetti e librerie di data science per Python.
In questa sezione, installerai i pacchetti pydeck
e h3
. pydeck
fornisce il rendering spaziale su larga scala in Python, basato su deck.gl
.
h3-py
fornisce il sistema di indicizzazione geospaziale gerarchico esagonale H3 di Uber in Python.
Importa poi le librerie h3
e pydeck
e le seguenti librerie geospaziali Python:
geopandas
per estendere i tipi di dati utilizzati dapandas
in modo da consentire operazioni spaziali sui tipi geometrici.shapely
per la manipolazione e l'analisi di singoli oggetti geometrici piani.branca
per generare mappe di colori HTML e JavaScript.geemap.deck
per la visualizzazione conpydeck
eearthengine-api
.
Dopo aver importato le librerie, attiva le tabelle interattive per i pandas
DataFrame in Colab.
Installa i pacchetti pydeck
e h3
Per inserire una cella di codice, fai clic su
Codice.Per installare i pacchetti
pydeck
eh3
, inserisci il seguente codice:# Install pydeck and h3. !pip install pydeck>=0.9 h3>=4.2
Fai clic su
Esegui cella.Al termine dell'installazione, nel blocco note di Colab non viene generato alcun output. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Importa le librerie Python
Per inserire una cella di codice, fai clic su
Codice.Per importare le librerie Python, inserisci il seguente codice:
# Import data science libraries. import branca import geemap.deck as gmdk import h3 import pydeck as pdk import geopandas as gpd import shapely
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Attivare le tabelle interattive per i DataFrame di Pandas
Per inserire una cella di codice, fai clic su
Codice.Per attivare i DataFrame
pandas
, inserisci il seguente codice:# Enable displaying pandas data frames as interactive tables by default. from google.colab import data_table data_table.enable_dataframe_formatter()
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Creare routine condivise
In questa sezione crei due routine condivise: una routine condivisa che visualizza i livelli su una mappa di base e una routine condivisa che converte un DataFrame pandas
in un DataFrame geopandas
.
Per inserire una cella di codice, fai clic su
Codice.Per creare una routine condivisa per il rendering dei livelli su una mappa, inserisci il seguente codice:
# Set Google Maps as the base map provider. MAP_PROVIDER_GOOGLE = pdk.bindings.base_map_provider.BaseMapProvider.GOOGLE_MAPS.value # Shared routine for rendering layers on a map using geemap.deck. def display_pydeck_map(layers, view_state, **kwargs): deck_kwargs = kwargs.copy() # Use Google Maps as the base map only if the API key is provided. if GMP_API_KEY: deck_kwargs.update({ "map_provider": MAP_PROVIDER_GOOGLE, "map_style": pdk.bindings.map_styles.GOOGLE_ROAD, "api_keys": {MAP_PROVIDER_GOOGLE: GMP_API_KEY}, }) m = gmdk.Map(initial_view_state=view_state, ee_initialize=False, **deck_kwargs) for layer in layers: m.add_layer(layer) return m
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Per inserire una cella di codice, fai clic su
Codice.Per creare una routine condivisa che converta un DataFrame
pandas
in un DataFramegeopandas
, inserisci il seguente codice:# Shared routine for converting a pandas dataframe to a GeoPandas dataframe. def pandas_to_geopandas(df, geometry_column='geometry'): # Use shapely library to parse WKT strings into shapely Geometry based # objects df[geometry_column] = df[geometry_column].dropna().apply(shapely.from_wkt) # Convert to a geopandas Dataframe return gpd.GeoDataFrame(df, geometry=geometry_column, crs='EPSG:4326')
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Creare un grafico a dispersione
In questa sezione, crei un grafico a dispersione di tutte le stazioni di bike sharing nel
set di dati pubblico Ford GoBike Share di San Francisco recuperando i dati dalla tabella
bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info
. Il
grafico a dispersione viene creato utilizzando un livello
e un livello grafico a dispersione
del framework deck.gl
.
I grafici a dispersione sono utili quando devi esaminare un sottoinsieme di singoli punti (noto anche come controllo a campione).
Il seguente esempio mostra come utilizzare un livello e un livello di grafico a dispersione per visualizzare i singoli punti come cerchi. Per eseguire il rendering dei punti, devi estrarre la longitudine e la latitudine come coordinate x e y dalla colonna station_geom
nel set di dati di bike sharing.
Le coordinate vengono estratte convertendo i dati in un geopandas
DataFrame, che converte ogni elemento della colonna station_geom
in un
shapely
oggetto. shapely
fornisce metodi e proprietà Python che ti consentono di
estrarre componenti come x e y.
Per inserire una cella di codice, fai clic su
Codice.Per eseguire una query sul set di dati pubblico Ford GoBike Share di San Francisco, inserisci il seguente codice. Questo codice utilizza la funzione comando magico
%%bigquery
per eseguire la query e restituire i risultati in un DataFrame:# Query the station ID, station name, station short name, and station # geometry from the bike share dataset. # NOTE: In this tutorial, the denormalized 'lat' and 'lon' columns are # ignored. They are decomposed components of the geometry. %%bigquery df_sanfrancisco_bike_stations --project {GCP_PROJECT_ID} SELECT station_id, name, short_name, station_geom FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
Fai clic su
Esegui cella.L'output è simile al seguente:
Job ID 12345-1234-5678-1234-123456789 successfully executed: 100%
Per inserire una cella di codice, fai clic su
Codice.Per convertire i dati in un DataFrame
geopandas
, inserisci il seguente codice:# Convert the data to a geopandas.GeoDataFrame. gdf_sf_bikestations = pandas_to_geopandas(df_sanfrancisco_bike_stations, geometry_column='station_geom') gdf_sf_bikestations.info()
Fai clic su
Esegui cella.L'output dovrebbe essere simile al seguente:
<class 'geopandas.geodataframe.GeoDataFrame'> RangeIndex: 472 entries, 0 to 471 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 station_id 472 non-null object 1 name 472 non-null object 2 short_name 472 non-null object 3 station_geom 472 non-null geometry dtypes: geometry(1), object(3) memory usage: 14.9+ KB
Per inserire una cella di codice, fai clic su
Codice.Per visualizzare l'anteprima delle prime cinque righe del DataFrame, inserisci il seguente codice:
# Preview the first five rows gdf_sf_bikestations.head()
Fai clic su
Esegui cella.L'output è simile al seguente:
Per inserire una cella di codice, fai clic su
Codice.Per estrarre i valori di longitudine e latitudine dalla colonna
station_geom
, inserisci il seguente codice:# Extract the longitude (x) and latitude (y) from station_geom. gdf_sf_bikestations["longitude"] = gdf_sf_bikestations["station_geom"].x gdf_sf_bikestations["latitude"] = gdf_sf_bikestations["station_geom"].y
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Per inserire una cella di codice, fai clic su
Codice.Per visualizzare il grafico a dispersione delle stazioni di bike sharing in base ai valori di longitudine e latitudine estratti in precedenza, inserisci il seguente codice:
# Render a scatter plot using pydeck with the extracted longitude and # latitude columns in the gdf_sf_bikestations geopandas.GeoDataFrame. scatterplot_layer = pdk.Layer( "ScatterplotLayer", id="bike_stations_scatterplot", data=gdf_sf_bikestations, get_position=['longitude', 'latitude'], get_radius=100, get_fill_color=[255, 0, 0, 140], # Adjust color as desired pickable=True, ) view_state = pdk.ViewState(latitude=37.77613, longitude=-122.42284, zoom=12) display_pydeck_map([scatterplot_layer], view_state)
Fai clic su
Esegui cella.L'output è simile al seguente:
Visualizzare i poligoni
L'analisi geospaziale ti consente di analizzare e visualizzare i dati geospaziali in
BigQuery utilizzando i tipi di dati GEOGRAPHY
e le funzioni geografiche di GoogleSQL.
Il tipo di dati GEOGRAPHY
nell'analisi geospaziale è una raccolta di punti, linee e
poligoni, rappresentata come un insieme di punti o un sottoinsieme della superficie della
Terra. Un tipo GEOGRAPHY
può contenere oggetti come:
- Punti
- Righe
- Poligoni
- Multipoligoni
Per un elenco di tutti gli oggetti supportati, consulta la documentazione del tipo GEOGRAPHY
.
Se ti vengono forniti dati geospaziali senza conoscere le forme previste, puoi visualizzare i dati per scoprirle. Puoi visualizzare le forme con la conversione dei dati geografici in formato GeoJSON
. Puoi quindi visualizzare i dati GeoJSON
utilizzando un livello GeoJSON
del framework deck.gl
.
In questa sezione esegui una query sui dati geografici nel set di dati Quartieri di San Francisco e poi visualizzi i poligoni.
Per inserire una cella di codice, fai clic su
Codice.Per eseguire query sui dati geografici della tabella
bigquery-public-data.san_francisco_neighborhoods.boundaries
nel set di dati Quartieri di San Francisco, inserisci il seguente codice. Questo codice utilizza la funzione comando magico%%bigquery
per eseguire la query e restituire i risultati in un DataFrame:# Query the neighborhood name and geometry from the San Francisco # neighborhoods dataset. %%bigquery df_sanfrancisco_neighborhoods --project {GCP_PROJECT_ID} SELECT neighborhood, neighborhood_geom AS geometry FROM `bigquery-public-data.san_francisco_neighborhoods.boundaries`
Fai clic su
Esegui cella.L'output è simile al seguente:
Job ID 12345-1234-5678-1234-123456789 successfully executed: 100%
Per inserire una cella di codice, fai clic su
Codice.Per convertire i risultati in formato
geopandas
, inserisci il seguente codice:# Convert the query results to geopandas format. gdf_sanfrancisco_neighborhoods = pandas_to_geopandas(df_sanfrancisco_neighborhoods) gdf_sanfrancisco_neighborhoods.info()
Fai clic su
Esegui cella.I risultati dovrebbero essere simili ai seguenti:
<class 'geopandas.geodataframe.GeoDataFrame'> RangeIndex: 117 entries, 0 to 116 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 neighborhood 117 non-null object 1 geometry 117 non-null geometry dtypes: geometry(1), object(1) memory usage: 2.0+ KB
Per visualizzare l'anteprima della prima riga del DataFrame, inserisci il seguente codice:
# Preview the first row gdf_sanfrancisco_neighborhoods.head(1)
Fai clic su
Esegui cella.L'output è simile al seguente:
Nei risultati, nota che i dati sono un poligono.
Per inserire una cella di codice, fai clic su
Codice.Per visualizzare i poligoni, inserisci il seguente codice.
pydeck
viene utilizzato per convertire ogni istanza di oggettoshapely
nella colonna della geometria nel formatoGeoJSON
:# Visualize the polygons. geojson_layer = pdk.Layer( 'GeoJsonLayer', id="sf_neighborhoods", data=gdf_sanfrancisco_neighborhoods, get_line_color=[127, 0, 127, 255], get_fill_color=[60, 60, 60, 50], get_line_width=100, pickable=True, stroked=True, filled=True, ) view_state = pdk.ViewState(latitude=37.77613, longitude=-122.42284, zoom=12) display_pydeck_map([geojson_layer], view_state)
Fai clic su
Esegui cella.L'output è simile al seguente:
Creare una mappa coropletica
Se stai esaminando dati con poligoni difficili da convertire in formato GeoJSON
, puoi utilizzare un livello poligono del framework deck.gl
. Un livello poligono può elaborare dati di input di tipi specifici, ad esempio un array di punti.
In questa sezione utilizzerai un livello poligono per eseguire il rendering di un array di punti e utilizzerai i risultati per eseguire il rendering di una mappa di tipo choropleth. La mappa di tipo choropleth mostra la densità delle stazioni di bike sharing per quartiere unendo i dati del set di dati dei quartieri di San Francisco con il set di dati di Ford GoBike Share di San Francisco.
Per inserire una cella di codice, fai clic su
Codice.Per aggregare e conteggiare il numero di stazioni per quartiere e creare una colonna
polygon
contenente un array di punti, inserisci il seguente codice:# Aggregate and count the number of stations per neighborhood. gdf_count_stations = gdf_sanfrancisco_neighborhoods.sjoin(gdf_sf_bikestations, how='left', predicate='contains') gdf_count_stations = gdf_count_stations.groupby(by='neighborhood')['station_id'].count().rename('num_stations') gdf_stations_x_neighborhood = gdf_sanfrancisco_neighborhoods.join(gdf_count_stations, on='neighborhood', how='inner') # To simulate non-GeoJSON input data, create a polygon column that contains # an array of points by using the pandas.Series.map method. gdf_stations_x_neighborhood['polygon'] = gdf_stations_x_neighborhood['geometry'].map(lambda g: list(g.exterior.coords))
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Per inserire una cella di codice, fai clic su
Codice.Per aggiungere una colonna
fill_color
per ciascuno dei poligoni, inserisci il seguente codice:# Create a color map gradient using the branch library, and add a fill_color # column for each of the polygons. colormap = branca.colormap.LinearColormap( colors=["lightblue", "darkred"], vmin=0, vmax=gdf_stations_x_neighborhood['num_stations'].max(), ) gdf_stations_x_neighborhood['fill_color'] = gdf_stations_x_neighborhood['num_stations'] \ .map(lambda c: list(colormap.rgba_bytes_tuple(c)[:3]) + [0.7 * 255]) # force opacity of 0.7
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Per inserire una cella di codice, fai clic su
Codice.Per eseguire il rendering del livello poligono, inserisci il seguente codice:
# Render the polygon layer. polygon_layer = pdk.Layer( 'PolygonLayer', id="bike_stations_choropleth", data=gdf_stations_x_neighborhood, get_polygon='polygon', get_fill_color='fill_color', get_line_color=[0, 0, 0, 255], get_line_width=50, pickable=True, stroked=True, filled=True, ) view_state = pdk.ViewState(latitude=37.77613, longitude=-122.42284, zoom=12) display_pydeck_map([polygon_layer], view_state)
Fai clic su
Esegui cella.L'output è simile al seguente:
Creare una mappa termica
Le mappe choropleth sono utili quando sono noti confini significativi. Se hai dati senza confini significativi noti, puoi utilizzare un livello mappa termica per visualizzarne la densità continua.
Nell'esempio seguente esegui una query sui dati della tabella bigquery-public-data.san_francisco_sfpd_incidents.sfpd_incidents
nel set di dati Report del Dipartimento di polizia di San Francisco (SFPD). I dati vengono utilizzati per visualizzare la distribuzione degli incidenti nel 2015.
Per le mappe di calore, ti consigliamo di quantizzare e aggregare i dati prima del rendering. In questo esempio, i dati vengono quantizzati e aggregati utilizzando
l'indicizzazione spaziale H3 di Carto.
La mappa termica viene creata utilizzando un livello mappa termica
del framework deck.gl
.
In questo esempio, la quantizzazione viene eseguita utilizzando la libreria Python h3
per aggregare
i punti di incidente in esagoni. La funzione h3.latlng_to_cell
viene utilizzata per mappare la posizione dell'incidente (latitudine e longitudine) a un indice di cella H3. Una risoluzione H3 di nove fornisce esagoni aggregati sufficienti per la mappa termica.
La funzione h3.cell_to_latlng
viene utilizzata per determinare il centro di ogni
esagono.
Per inserire una cella di codice, fai clic su
Codice.Per eseguire una query sui dati nel set di dati Report del Dipartimento di Polizia di San Francisco (SFPD), inserisci il seguente codice. Questo codice utilizza la funzione magica
%%bigquery
per eseguire la query e restituire i risultati in un DataFrame:# Query the incident key and location data from the SFPD reports dataset. %%bigquery df_sanfrancisco_incidents_2015 --project {GCP_PROJECT_ID} SELECT unique_key, location FROM ( SELECT unique_key, location, # WKT string EXTRACT(YEAR FROM timestamp) AS year, FROM `bigquery-public-data.san_francisco_sfpd_incidents.sfpd_incidents` incidents ) WHERE year = 2015
Fai clic su
Esegui cella.L'output è simile al seguente:
Job ID 12345-1234-5678-1234-123456789 successfully executed: 100%
Per inserire una cella di codice, fai clic su
Codice.Per convertire i risultati in un DataFrame
geopandas
, inserisci il seguente codice:# Convert the results into a geopandas.GeoDataFrame. gdf_incidents = pandas_to_geopandas(df_sanfrancisco_incidents_2015, geometry_column='location')
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Per inserire una cella di codice, fai clic su
Codice.Per calcolare la cella per la latitudine e la longitudine di ogni incidente, aggrega gli incidenti per ogni cella, crea un
geopandas
DataFrame e aggiungi il centro di ogni esagono per il livello della mappa di calore, inserisci il seguente codice:# Compute the cell for each incident's latitude and longitude. H3_RESOLUTION = 9 gdf_incidents['h3_cell'] = df_sanfrancisco_incidents_2015['location'].apply( lambda location: h3.latlng_to_cell(location.y, location.x, H3_RESOLUTION) ) # Aggregate the incidents for each hexagon cell. count_incidents = gdf_incidents.groupby(by='h3_cell')['unique_key'].count().rename('num_incidents') # Construct a new geopandas.GeoDataFrame with the aggregate results. # Add the center of each hexagon for the HeatmapLayer to render. gdf_incidents_x_cell = gpd.GeoDataFrame(data=count_incidents).reset_index() gdf_incidents_x_cell['h3_center'] = gdf_incidents_x_cell['h3_cell'].apply(h3.cell_to_latlng) gdf_incidents_x_cell.info()
Fai clic su
Esegui cella.L'output è simile al seguente:
<class 'geopandas.geodataframe.GeoDataFrame'> RangeIndex: 969 entries, 0 to 968 Data columns (total 3 columns): # Column Non-Null Count Dtype -- ------ -------------- ----- 0 h3_cell 969 non-null object 1 num_incidents 969 non-null Int64 2 h3_center 969 non-null object dtypes: Int64(1), object(2) memory usage: 23.8+ KB
Per inserire una cella di codice, fai clic su
Codice.Per visualizzare l'anteprima delle prime cinque righe del DataFrame, inserisci il seguente codice:
# Preview the first five rows. gdf_incidents_x_cell.head()
Fai clic su
Esegui cella.L'output è simile al seguente:
Per inserire una cella di codice, fai clic su
Codice.Per convertire i dati in un formato JSON utilizzabile da
HeatmapLayer
, inserisci il seguente codice:# Convert to a JSON format recognized by the HeatmapLayer. def _make_heatmap_datum(row) -> dict: return { "latitude": row['h3_center'][0], "longitude": row['h3_center'][1], "weight": float(row['num_incidents']), } heatmap_data = gdf_incidents_x_cell.apply(_make_heatmap_datum, axis='columns').values.tolist()
Fai clic su
Esegui cella.Dopo aver eseguito il codice, non viene generato alcun output nel tuo notebook Colab. Il segno di spunta accanto alla cella indica che il codice è stato eseguito correttamente.
Per inserire una cella di codice, fai clic su
Codice.Per visualizzare la mappa di calore, inserisci il seguente codice:
# Render the heatmap. heatmap_layer = pdk.Layer( "HeatmapLayer", id="sfpd_heatmap", data=heatmap_data, get_position=['longitude', 'latitude'], get_weight='weight', opacity=0.7, radius_pixels=99, # this limitation can introduce artifacts (see above) aggregation='MEAN', ) view_state = pdk.ViewState(latitude=37.77613, longitude=-122.42284, zoom=12) display_pydeck_map([heatmap_layer], view_state)
Fai clic su
Esegui cella.L'output è simile al seguente:
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Console
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Eliminare la chiave API di Google Maps e il notebook
Dopo aver eliminato il Google Cloud progetto, se hai utilizzato l'API Google Maps, elimina la chiave API Google Maps dai tuoi segreti di Colab e, facoltativamente, elimina il notebook.
In Colab, fai clic su
Secrets.Alla fine della riga
GMP_API_KEY
, fai clic su Elimina.(Facoltativo) Per eliminare il notebook, fai clic su File > Sposta nel casso.
Passaggi successivi
- Per ulteriori informazioni sulle analisi geospaziali in BigQuery, consulta Introduzione alle analisi geospaziali in BigQuery.
- Per un'introduzione alla visualizzazione dei dati geospaziali in BigQuery, consulta Visualizzare i dati geospaziali.
- Per scoprire di più su
pydeck
e su altri tipi di graficideck.gl
, puoi trovare esempi nella Galleriapydeck
, nel Catalogo dei livellideck.gl
e nel codice sorgente dideck.gl
GitHub. - Per ulteriori informazioni sull'utilizzo dei dati geospaziali nei frame di dati, consulta la pagina di GeoPandas per iniziare e la guida dell'utente di GeoPandas.
- Per ulteriori informazioni sulla manipolazione di oggetti geometrici, consulta il manuale dell'utente di Shapely.
- Per scoprire come utilizzare i dati di Google Earth Engine in BigQuery, consulta Esportazione in BigQuery nella documentazione di Google Earth Engine.