Get started with geospatial analytics Stay organized with collections Save and categorize content based on your preferences.
This tutorial introduces you to geospatial analytics.Geospatial analytics lets you analyze and visualize geospatial data inBigQuery.
Objectives
In this tutorial, you:
- Use a geospatial analytics function to convert latitude and longitude columnsinto geographical points
- Run a query that finds all the Citi Bike stations with more than 30 bikesavailable for rental
- Visualize your results in BigQuery
- Visualize your results inBigQuery Geo Viz
Costs
This tutorial uses billable components of Google Cloud, includingBigQuery.
You incur charges for:
- Querying data in theBigQuery public datasets.
- The first 1 TB is free each month.
- If you are usingcapacity-based pricing,query costs are included in the capacity-based price.
Before you begin
- 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.
Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- Create a project: To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission.Learn how to grant roles.
Verify that billing is enabled for your Google Cloud project.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- Create a project: To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission.Learn how to grant roles.
Verify that billing is enabled for your Google Cloud project.
- BigQuery is automatically enabled in new projects. To activate BigQuery in an existing project, go to
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission.Learn how to grant roles.
Explore the sample data
This tutorial uses a dataset available through theGoogle Cloud Public Dataset Program.A public dataset is any dataset that is stored in BigQuery andmade available to the general public. Thepublic datasets are datasets that BigQuery hosts foryou to access and integrate into your applications. Google pays for the storageof these datasets and provides public access to the data by using aproject. You pay only for the queries thatyou perform on the data (the first 1 TB per month is free, subject toquery pricing details.)
The NYC Citi Bike Trips dataset
Citi Bike is the nation's largest bike share program, with 10,000 bikes and 600stations across Manhattan, Brooklyn, Queens, and Jersey City. This datasetincludes Citi Bike trips since Citi Bike launched in September 2013 and isupdated daily. The data is processed by Citi Bike to remove trips that aretaken by staff to service and inspect the system and any trips that are lessthan 60 seconds in duration, which are considered false starts.
You can start exploring this data in the BigQuery console byviewing the details of thecitibike_stations table:
Go to citibike_stations schema
Three columns in this table are relevant to this tutorial:
bike_stations.longitude: the longitude of a station. The values arevalid WGS 84 longitudes in decimal degrees format.bike_stations.latitude: the latitude of a station. The values arevalid WGS 84 latitudes in decimal degrees format.num_bikes_available: the number of bikes available for rental.
Query the bike stations with more than 30 bikes available
In this section of the tutorial, you run a GoogleSQL query that finds all theCiti Bike stations in New York City with more than 30 bikes available to rent.
Query details
The following GoogleSQL query is used to find the Citi Bike stations withmore than 30 bikes.
SELECTST_GeogPoint(longitude,latitude)ASWKT,num_bikes_availableFROM`bigquery-public-data.new_york.citibike_stations`WHEREnum_bikes_available>30
The query clauses do the following:
SELECT ST_GeogPoint(longitude, latitude) AS WKT, num_bikes_available- The
SELECTclause selects thenum_bikes_availablecolumn and uses theST_GeogPointfunction to convert the values in thelatitudeandlongitudecolumns toGEOGRAPHYtypes (points).
FROM `bigquery-public-data.new_york.citibike_stations`- The
FROMclause specifies the table being queried:citibike_stations.
WHERE num_bikes_available > 30- The
WHEREclause filters the values in thenum_bikes_availablecolumn tojust those stations with more than 30 bikes.
Run the query
To run the query by using the Google Cloud console:
Go to the BigQuery page in the Google Cloud console.
Enter the following GoogleSQL query in theQuery editor text area.
-- Finds Citi Bike stations with > 30 bikesSELECTST_GeogPoint(longitude,latitude)ASWKT,num_bikes_availableFROM`bigquery-public-data.new_york.citibike_stations`WHEREnum_bikes_available>30
ClickRun.
The query takes a moment to complete. After the query runs, your resultsappear in theQuery results pane.

Visualize the results in BigQuery
To visualize the results in an interactive map, follow these steps:
In theQuery results pane, clickVisualization.

The points on the map show the locations of each bike station.
You can apply uniform or data driven styling to your map.To visualize how many bikes are available at each station, forData column select
num_bikes_available.To improve visibility, try adjusting theOpacity,Color, orPoint size. If your data contains outliers, you can adjust theMinandMax values. Geographies with values outside this range are stilldisplayed on the map, but no color is applied.
To view the properties of a geography, click it.
To view the map in satellite mode, clickSatellite.

Visualize the query results in Geo Viz
You can also visualize your results using BigQuery Geo Viz: aweb tool for visualization of geospatial data in BigQuery usingGoogle Maps APIs.
Launch Geo Viz and authenticate
Before using Geo Viz, you must authenticate and grant access to data inBigQuery.
To set up Geo Viz:
Open the Geo Viz web tool.
You might need to enable cookies to authorize and use this tool.
Under step one,Query, clickAuthorize.

In theChoose an account dialog, click your Google Account.

In the access dialog, clickAllow to give Geo Viz access to yourBigQuery data.

Run a GoogleSQL query on geospatial data
After you authenticate and grant access, the next step is to run the query inGeo Viz.
To run the query:
For step one,Select data, enter your project ID in theProject IDfield.
In the query window, enter the following GoogleSQL query.
-- Finds Citi Bike stations with > 30 bikesSELECTST_GeogPoint(longitude,latitude)ASWKT,num_bikes_availableFROM`bigquery-public-data.new_york.citibike_stations`WHEREnum_bikes_available>30
ClickRun.
When the query completes, clickShow results. You can also click step twoDefine columns.

This moves you to step two. In step two, forGeometry column, chooseWKT. This plots the points corresponding to the bike stations on yourmap.

Format your visualization
The Style section provides a list of visual styles for customization. Certainproperties apply only to certain types of data. For example,circleRadiusaffects only points.
Supported style properties include:
- fillColor. The fill color of a polygon or point. For example,"linear" or "interval" functions can be used to map numeric values to a colorgradient.
- fillOpacity. The fill opacity of a polygon or point. Values must bein the range 0 to 1, where
0= transparent and1= opaque. - strokeColor. The stroke or outline color of a polygon or line.
- strokeOpacity. The stroke or outline opacity of polygon or line.Values must be in the range 0 to 1, where
0= transparent and1= opaque. - strokeWeight. The stroke or outline width in pixels of a polygon orline.
- circleRadius. The radius of the circle representing a point inpixels. For example, a "linear" function can be used to map numeric valuesto point sizes to create a scatterplot style.
Each style can be given either a global value (applied to every result) or adata-driven value (applied in different ways depending on data in each resultrow). For data-driven values, the following are used to determine the result:
- function. A function used to compute a style value from a field'svalues.
- identity. The data value of each field is used as the stylingvalue.
- categorical. The data values of each field listed in the domain aremapped one to one with corresponding styles in the range.
- interval. Data values of each field are rounded down to the nearestvalue in the domain and are then styled with the corresponding style in therange.
- linear. Data values of each field are interpolated linearly acrossvalues in the domain and are then styled with a blend of the correspondingstyles in the range.
- field. The specified field in the data is used as the input to thestyling function.
- domain. An ordered list of sample input values from a field. Sampleinputs (domain) are paired with sample outputs (range) based on the givenfunction and are used to infer style values for all inputs (even those notlisted in the domain). Values in the domain must have the same type (text,number, and so on) as the values of the field you are visualizing.
- range. A list of sample output values for the style rule. Values inthe range must have the same type (color or number) as the style property youare controlling. For example, the range of the
fillColorproperty shouldcontain only colors.
To format your map:
ClickAdd styles in step two or click step 3Style.
Change the color of your points. ClickfillColor.
In theValue field, enter
#0000FF, the HTML color code for blue.ClickApply Style.

Examine your map. If you click one of your points, the value is displayed.

ClickfillOpacity.
In theValue field, enter
0.5and clickApply Style.
Examine your map. The fill color of the points is now semi-transparent.

Change the size of the points based on the number of bikes available. ClickcircleRadius.
In thecircleRadius panel:
- ClickData driven.
- ForFunction, chooselinear.
- ForField, choose
num_bikes_available. - ForDomain, enter
30in the first box and60in thesecond. ForRange, enter
5in the first box and20in the second.
Examine your map. The radius of each circle now corresponds to the number ofbikes available at that location.

Close Geo Viz.
Clean up
To avoid incurring charges to your Google Cloud account for the resources used in this tutorial, either delete the project that contains the resources, or keep the project and delete the individual resources.
- You can delete the project you created.
- Or you can keep the project for future use.
To delete the project:
What's next
- To learn more about visualization options for geospatial analytics, seeVisualizing geospatial data.
- To learn more about working with geospatial analytics data, seeWorking with geospatial data.
- For a tutorial on using geospatial analytics, seeUsing geospatial analytics to plot a hurricane's path.
- For documentation on GoogleSQL functions in geospatial analytics, seeGeography functions in GoogleSQL.
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-15 UTC.