En este instructivo, se usan los siguientes conjuntos de datos públicos de BigQuery:
- San Francisco Ford GoBike Share
- Barrios de San Francisco
- Informes del Departamento de Policía de San Francisco (SFPD)
Para obtener información sobre cómo acceder a estos conjuntos de datos públicos, consulta Accede a conjuntos de datos públicos en la Trusted Cloud by S3NS consola.
Usarás los conjuntos de datos públicos para crear las siguientes visualizaciones:
- Un diagrama de dispersión de todas las estaciones de bicicletas compartidas del conjunto de datos de Ford GoBike Share
- Polígonos en el conjunto de datos de vecindarios de San Francisco
- Un mapa de coropletas de la cantidad de estaciones de bicicletas compartidas por vecindario
- Un mapa de calor de los incidentes del conjunto de datos de denuncias del Departamento de Policía de San Francisco
Objetivos
- Configura la autenticación con Trusted Cloud by S3NS y, de manera opcional, Google Maps.
- Consulta datos en BigQuery y descarga los resultados en Colab.
- Usar herramientas de ciencia de datos de Python para realizar transformaciones y análisis
- Crear visualizaciones, incluidos diagramas de dispersión, polígonos, coropletas y mapas de calor
Costos
En este documento, usarás los siguientes componentes facturables de Trusted Cloud by S3NS:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
Enable the BigQuery and Google Maps JavaScript APIs.
- Asegúrate de tener los permisos necesarios para realizar las tareas de este documento.
- BigQuery User (
roles/bigquery.user
) -
In the Trusted 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.
-
In the Trusted Cloud console, go to the IAM page.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Grant access.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Por lo general, este es el identificador de un usuario en un grupo de Workforce Identity. Para obtener más información, consulta Representa a los usuarios del grupo de personal en políticas de IAM o comunícate con tu administrador.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Abre Colab.
En el cuadro de diálogo Abrir notebook, haz clic en Notebook nuevo.
Haz clic en
Untitled0.ipynb
y cambia el nombre del notebook abigquery-geo.ipynb
.Selecciona File > Save.
Para insertar una celda de código, haz clic en
Código.Para autenticarte con tu proyecto, ingresa el siguiente código:
# 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) # Set GMP_API_KEY to none GMP_API_KEY = None
Reemplaza PROJECT_ID con el ID del proyecto.
Haz clic en
Ejecutar celda.Cuando se te solicite, haz clic en Permitir para otorgar acceso a Colab a tus credenciales, si estás de acuerdo.
En la página Acceder con Google, elige tu cuenta.
En la página Accede al código del notebook creado por terceros, haz clic en Continuar.
En Selecciona a qué puede acceder el código de notebooks creado por terceros, haz clic en Seleccionar todo y, luego, en Continuar.
Después de completar el flujo de autorización, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Sigue las instrucciones de la página Usa claves de API en la documentación de Google Maps para obtener tu clave de API de Google Maps.
Cambia a tu notebook de Colab y, luego, haz clic en
Secrets.Haz clic en Agregar Secret nuevo.
En Nombre, ingresa
GMP_API_KEY
.En Value, ingresa el valor de la clave de la API de Maps que generaste anteriormente.
Cierra el panel Secrets.
Para insertar una celda de código, haz clic en
Código.Para autenticarte con la API de Maps, ingresa el siguiente código:
# 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
Cuando se te solicite, haz clic en Otorgar acceso para que el notebook acceda a tu clave, si estás de acuerdo.
Haz clic en
Ejecutar celda.Después de completar el flujo de autorización, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
geopandas
para extender los tipos de datos que usapandas
y permitir operaciones espaciales en tipos geométricosshapely
para la manipulación y el análisis de objetos geométricos planos individuales.branca
para generar mapas de colores HTML y JavaScript.geemap.deck
para la visualización conpydeck
yearthengine-api
.Para insertar una celda de código, haz clic en
Código.Para instalar los paquetes
pydeck
yh3
, ingresa el siguiente código:# Install pydeck and h3. !pip install pydeck>=0.9 h3>=4.2
Haz clic en
Ejecutar celda.Después de completar la instalación, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para importar las bibliotecas de Python, ingresa el siguiente código:
# Import data science libraries. import branca import geemap.deck as gmdk import h3 import pydeck as pdk import geopandas as gpd import shapely
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para habilitar los DataFrames de
pandas
, ingresa el siguiente código:# Enable displaying pandas data frames as interactive tables by default. from google.colab import data_table data_table.enable_dataframe_formatter()
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para crear una rutina compartida para renderizar capas en un mapa, ingresa el siguiente código:
# 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
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para consultar el conjunto de datos públicos de Ford GoBike Share de San Francisco, ingresa el siguiente código. Este código usa la función mágica
%%bigquery
para ejecutar la consulta y devolver los resultados en 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 gdf_sf_bikestations --project {GCP_PROJECT_ID} --use_geodataframe station_geom SELECT station_id, name, short_name, station_geom FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info`
Haz clic en
Ejecutar celda.El resultado es similar a este:
Job ID 12345-1234-5678-1234-123456789 successfully executed: 100%
Para insertar una celda de código, haz clic en
Código.Para obtener un resumen del DataFrame, incluidas las columnas y los tipos de datos, ingresa el siguiente código:
# Get a summary of the DataFrame gdf_sf_bikestations.info()
Haz clic en
Ejecutar celda.El resultado debe verse de la siguiente manera:
<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
Para insertar una celda de código, haz clic en
Código.Para obtener una vista previa de las primeras cinco filas del DataFrame, ingresa el siguiente código:
# Preview the first five rows gdf_sf_bikestations.head()
Haz clic en
Ejecutar celda.El resultado es similar a este:
Para insertar una celda de código, haz clic en
Código.Para extraer los valores de longitud y latitud de la columna
station_geom
, ingresa el siguiente código:# 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
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para renderizar el diagrama de dispersión de las estaciones de bicicletas compartidas según los valores de longitud y latitud que extrajiste anteriormente, ingresa el siguiente código:
# 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)
Haz clic en
Ejecutar celda.El resultado es similar a este:
- Puntos
- Líneas
- Polígonos
- Multipolígonos
Para insertar una celda de código, haz clic en
Código.Para consultar los datos geográficos de la tabla
bigquery-public-data.san_francisco_neighborhoods.boundaries
en el conjunto de datos San Francisco Neighborhoods, ingresa el siguiente código. Este código usa la función mágica%%bigquery
para ejecutar la consulta y devolver los resultados en un DataFrame:# Query the neighborhood name and geometry from the San Francisco # neighborhoods dataset. %%bigquery gdf_sanfrancisco_neighborhoods --project {GCP_PROJECT_ID} --use_geodataframe geometry SELECT neighborhood, neighborhood_geom AS geometry FROM `bigquery-public-data.san_francisco_neighborhoods.boundaries`
Haz clic en
Ejecutar celda.El resultado es similar a este:
Job ID 12345-1234-5678-1234-123456789 successfully executed: 100%
Para insertar una celda de código, haz clic en
Código.Para obtener un resumen del DataFrame, ingresa el siguiente código:
# Get a summary of the DataFrame gdf_sanfrancisco_neighborhoods.info()
Haz clic en
Ejecutar celda.Los resultados deberían verse así:
<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
Para obtener una vista previa de la primera fila del DataFrame, ingresa el siguiente código:
# Preview the first row gdf_sanfrancisco_neighborhoods.head(1)
Haz clic en
Ejecutar celda.El resultado es similar a este:
En los resultados, observa que los datos son un polígono.
Para insertar una celda de código, haz clic en
Código.Para visualizar los polígonos, ingresa el siguiente código.
pydeck
se usa para convertir cada instancia del objetoshapely
en la columna de geometría al 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)
Haz clic en
Ejecutar celda.El resultado es similar a este:
Para insertar una celda de código, haz clic en
Código.Para agregar y contar la cantidad de estaciones por vecindario, y crear una columna
polygon
que contenga un array de puntos, ingresa el siguiente código:# 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))
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para agregar una columna
fill_color
para cada uno de los polígonos, ingresa el siguiente código:# 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
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para renderizar la capa de polígonos, ingresa el siguiente código:
# 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)
Haz clic en
Ejecutar celda.El resultado es similar a este:
Para insertar una celda de código, haz clic en
Código.Para consultar los datos del conjunto de datos de denuncias del Departamento de Policía de San Francisco (SFPD), ingresa el siguiente código. Este código usa la función mágica
%%bigquery
para ejecutar la consulta y devolver los resultados en un DataFrame:# Query the incident key and location data from the SFPD reports dataset. %%bigquery gdf_incidents --project {GCP_PROJECT_ID} --use_geodataframe location_geography SELECT unique_key, location_geography FROM ( SELECT unique_key, SAFE.ST_GEOGFROMTEXT(location) AS location_geography, # WKT string to GEOMETRY EXTRACT(YEAR FROM timestamp) AS year, FROM `bigquery-public-data.san_francisco_sfpd_incidents.sfpd_incidents` incidents ) WHERE year = 2015
Haz clic en
Ejecutar celda.El resultado es similar a este:
Job ID 12345-1234-5678-1234-123456789 successfully executed: 100%
Para insertar una celda de código, haz clic en
Código.Para calcular la celda de la latitud y la longitud de cada incidente, agrega los incidentes de cada celda, construye un DataFrame de
geopandas
y agrega el centro de cada hexágono para la capa del mapa de calor, ingresa el siguiente código:# Compute the cell for each incident's latitude and longitude. H3_RESOLUTION = 9 gdf_incidents['h3_cell'] = gdf_incidents.geometry.apply( lambda geom: h3.latlng_to_cell(geom.y, geom.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()
Haz clic en
Ejecutar celda.El resultado es similar a este:
<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
Para insertar una celda de código, haz clic en
Código.Para obtener una vista previa de las primeras cinco filas del DataFrame, ingresa el siguiente código:
# Preview the first five rows. gdf_incidents_x_cell.head()
Haz clic en
Ejecutar celda.El resultado es similar a este:
Para insertar una celda de código, haz clic en
Código.Para convertir los datos a un formato JSON que pueda usar
HeatmapLayer
, ingresa el siguiente código:# 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()
Haz clic en
Ejecutar celda.Después de ejecutar el código, no se generará ningún resultado en tu notebook de Colab. La marca de verificación junto a la celda indica que el código se ejecutó correctamente.
Para insertar una celda de código, haz clic en
Código.Para renderizar el mapa de calor, ingresa el siguiente código:
# 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)
Haz clic en
Ejecutar celda.El resultado es similar a este:
- In the Trusted 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.
- In the Trusted 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.
En tu Colab, haz clic en
Secretos.Al final de la fila
GMP_API_KEY
, haz clic en Borrar.Opcional: Para borrar el notebook, haz clic en Archivo > Mover a la papelera.
- Para obtener más información sobre las estadísticas geoespaciales en BigQuery, consulta Introducción a las estadísticas geoespaciales en BigQuery.
- Para obtener una introducción a la visualización de datos geoespaciales en BigQuery, consulta Visualiza datos geoespaciales.
- Para obtener más información sobre
pydeck
y otros tipos de gráficos dedeck.gl
, puedes encontrar ejemplos en la Galería depydeck
, el Catálogo de capas dedeck.gl
y el código fuente dedeck.gl
en GitHub. - Para obtener más información sobre cómo trabajar con datos geoespaciales en marcos de datos, consulta la página de introducción de GeoPandas y la Guía del usuario de GeoPandas.
- Para obtener más información sobre la manipulación de objetos geométricos, consulta el manual del usuario de Shapely.
- Para explorar el uso de datos de Google Earth Engine en BigQuery, consulta Exporta a BigQuery en la documentación de Google Earth Engine.
Roles obligatorios
Si creas un proyecto nuevo, serás el propietario y se te otorgarán todos los permisos de IAM necesarios para completar este instructivo.
Si usas un proyecto existente, necesitas el siguiente rol a nivel del proyecto para ejecutar trabajos de consulta.
Make sure that you have the following role or roles on the project:
Check for the roles
Grant the roles
Para obtener más información sobre los roles en BigQuery, consulta Roles de IAM predefinidos.
Crea un notebook de Colab
En este instructivo, se compila un notebook de Colab para visualizar datos de análisis geoespaciales. Para abrir una versión prediseñada del notebook en Colab, Colab Enterprise o BigQuery Studio, haz clic en los vínculos que se encuentran en la parte superior de la versión del instructivo en GitHub: BigQuery Geospatial Visualization in Colab.
Autentícate con Trusted Cloud by S3NS y Google Maps
En este instructivo, se consultan conjuntos de datos de BigQuery y se usa la API de JavaScript de Google Maps. Para usar estos recursos, debes autenticar el tiempo de ejecución de Colab con Trusted Cloud by S3NS y la API de Maps.
Autentícate con Trusted Cloud by S3NS
Opcional: Autenticación con Google Maps
Si usas Google Maps Platform como proveedor de mapas base, debes proporcionar una clave de API de Google Maps Platform. El notebook recupera la clave de tus Colab Secrets.
Este paso solo es necesario si usas la API de Maps. Si no te autenticas con Google Maps Platform, pydeck
usa el mapa carto
.
Instala paquetes de Python y bibliotecas de ciencia de datos
Además de los módulos de Python colabtools
(google.colab
), en este instructivo se usan varios otros paquetes de Python y bibliotecas de ciencia de datos.
En esta sección, instalarás los paquetes pydeck
y h3
. pydeck
proporciona renderización espacial a gran escala en Python, con la tecnología de deck.gl
.
h3-py
proporciona el sistema de indexación geoespacial jerárquico hexagonal H3 de Uber en Python.
Luego, importa las bibliotecas h3
y pydeck
, y las siguientes bibliotecas geoespaciales de Python:
Después de importar las bibliotecas, habilitas las tablas interactivas para los DataFrames de pandas
en Colab.
Instala los paquetes pydeck
y h3
.
Importa las bibliotecas de Python
Habilita tablas interactivas para DataFrames de Pandas
Cómo crear una rutina compartida
En esta sección, crearás una rutina compartida que renderiza capas en un mapa base.
Crea un diagrama de dispersión
En esta sección, crearás un diagrama de dispersión de todas las estaciones de bicicletas compartidas en el conjunto de datos públicos de bicicletas compartidas de Ford GoBike de San Francisco recuperando datos de la tabla bigquery-public-data.san_francisco_bikeshare.bikeshare_station_info
. El diagrama de dispersión se crea con una capa y una capa de diagrama de dispersión del framework de deck.gl
.
Los diagramas de dispersión son útiles cuando necesitas revisar un subconjunto de puntos individuales (también conocido como verificación puntual).
En el siguiente ejemplo, se muestra cómo usar una capa y una capa de diagrama de dispersión para renderizar puntos individuales como círculos.
Para renderizar los puntos, debes extraer la longitud y la latitud como coordenadas X e Y de la columna station_geom
en el conjunto de datos de bicicletas compartidas.
Como gdf_sf_bikestations
es un geopandas.GeoDataFrame
, se accede a las coordenadas directamente desde su columna de geometría station_geom
. Puedes recuperar la longitud con el atributo .x
de la columna y la latitud con su atributo .y
. Luego, puedes almacenarlos en columnas nuevas de longitud y latitud.
Visualiza polígonos
Las estadísticas geoespaciales te permiten analizar y visualizar datos geoespaciales en BigQuery con tipos de datos GEOGRAPHY
y funciones geográficas de GoogleSQL.
El tipo de datos GEOGRAPHY
en el análisis geoespacial es una colección de puntos, linestrings y polígonos que se representa como un conjunto de puntos o un subconjunto de la superficie de la Tierra. Un tipo GEOGRAPHY
puede contener objetos como los siguientes:
Para obtener una lista de todos los objetos admitidos, consulta la documentación del tipo GEOGRAPHY
.
Si se te proporcionan datos geoespaciales sin conocer las formas esperadas, puedes visualizarlos para descubrirlas. Puedes visualizar formas convirtiendo los datos geográficos al formato GeoJSON
. Luego, puedes visualizar los datos de GeoJSON
con una capa de GeoJSON
del framework de deck.gl
.
En esta sección, consultarás datos geográficos en el conjunto de datos de vecindarios de San Francisco y, luego, visualizarás los polígonos.
Crea un mapa de coropletas
Si exploras datos con polígonos que son difíciles de convertir al formato GeoJSON
, puedes usar una capa de polígonos del framework de deck.gl
. Una capa de polígonos puede procesar datos de entrada de tipos específicos, como un array de puntos.
En esta sección, usarás una capa de polígonos para renderizar un array de puntos y usarás los resultados para renderizar un mapa de coropletas. El mapa coropletas muestra la densidad de las estaciones de bicicletas de uso compartido por vecindario. Para ello, se combinan los datos del conjunto de datos de vecindarios de San Francisco con los del conjunto de datos de bicicletas de uso compartido de Ford GoBike de San Francisco.
Crea un mapa de calor
Los coropletos son útiles cuando tienes límites significativos que se conocen. Si tienes datos sin límites significativos conocidos, puedes usar una capa de mapa de calor para renderizar su densidad continua.
En el siguiente ejemplo, consultarás datos en la tabla bigquery-public-data.san_francisco_sfpd_incidents.sfpd_incidents
del conjunto de datos de informes del Departamento de Policía de San Francisco (SFPD). Los datos se usan para visualizar la distribución de los incidentes en 2015.
En el caso de los mapas de calor, se recomienda que cuantifiques y agregues los datos antes de renderizarlos. En este ejemplo, los datos se cuantifican y agregan con la indexación espacial H3 de Carto.
El mapa de calor se crea con una capa de mapa de calor del framework de deck.gl
.
En este ejemplo, la cuantificación se realiza con la biblioteca de Python h3
para agregar los puntos de incidentes en hexágonos. La función h3.latlng_to_cell
se usa para asignar la posición del incidente (latitud y longitud) a un índice de celda H3. Una resolución de H3 de nueve proporciona suficientes hexágonos agregados para el mapa de calor.
La función h3.cell_to_latlng
se usa para determinar el centro de cada hexágono.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
Console
gcloud
Borra tu clave de API de Google Maps y tu notebook
Después de borrar el proyecto Trusted Cloud , si usaste la API de Google Maps, borra la clave de la API de Google Maps de tus Colab Secrets y, luego, borra el notebook de forma opcional.