AI-generated Key Takeaways
-
The
ee.FeatureCollection.runBigQuery
function executes a BigQuery query and returns the results as a FeatureCollection. -
Arguments for the function include the SQL
query
string, an optionalgeometryColumn
to specify the geometry column, and an optionalmaxBytesBilled
to set a limit on billed bytes. -
The examples demonstrate how to use
runBigQuery
in both JavaScript and Python to fetch data from BigQuery and visualize or analyze it.
Usage | Returns |
---|---|
ee.FeatureCollection.runBigQuery(query, geometryColumn, maxBytesBilled) | FeatureCollection |
Argument | Type | Details |
---|---|---|
query | String | GoogleSQL query to perform on the BigQuery resources. |
geometryColumn | String, default: null | The name of the column to use as the main feature geometry. If not specified, the first geometry column will be used. |
maxBytesBilled | Long, default: 100000000000 | Maximum number of bytes billed while processing the query. Any BigQuery job that exceeds this limit will fail and won't be billed. |
Examples
Code Editor (JavaScript)
// Get places from Overture Maps Dataset in BigQuery public data. Map.setCenter(-3.69, 40.41, 12) var mapGeometry= ee.Geometry(Map.getBounds(true)).toGeoJSONString(); var sql = "SELECT geometry, names.primary as name, categories.primary as category " + " FROM bigquery-public-data.overture_maps.place " + " WHERE ST_INTERSECTS(geometry, ST_GEOGFROMGEOJSON('" + mapGeometry+ "'))"; var features = ee.FeatureCollection.runBigQuery({ query: sql, geometryColumn: 'geometry' }); // Display all relevant features on the map. Map.addLayer(features, {'color': 'black'}, 'Places from Overture Maps Dataset'); // Create a histogram of the categories and print it. var propertyOfInterest = 'category'; var histogram = features.filter(ee.Filter.notNull([propertyOfInterest])) .aggregate_histogram(propertyOfInterest); print(histogram); // Create a frequency chart for the histogram. var categories = histogram.keys().map(function(k) { return ee.Feature(null, { key: k, value: histogram.get(k) }); }); var sortedCategories = ee.FeatureCollection(categories).sort('value', false); print(ui.Chart.feature.byFeature(sortedCategories).setChartType('Table'));
import ee import geemap.core as geemap
Colab (Python)
import json import pandas as pd # Get places from Overture Maps Dataset in BigQuery public data. location = ee.Geometry.Point(-3.69, 40.41) map_geometry = json.dumps(location.buffer(5e3).getInfo()) sql = f"""SELECT geometry, names.primary as name, categories.primary as category FROM bigquery-public-data.overture_maps.place WHERE ST_INTERSECTS(geometry, ST_GEOGFROMGEOJSON('{map_geometry}'))""" features = ee.FeatureCollection.runBigQuery( query=sql, geometryColumn="geometry" ) # Display all relevant features on the map. m = geemap.Map() m.center_object(location, 13) m.add_layer(features, {'color': 'black'}, 'Places from Overture Maps Dataset') display(m) # Create a histogram of the place categories. property_of_interest = 'category' histogram = ( features.filter( ee.Filter.notNull([property_of_interest]) ).aggregate_histogram(property_of_interest) ).getInfo() # Display the histogram as a pandas DataFrame. df = pd.DataFrame(list(histogram.items()), columns=['category', 'frequency']) df = df.sort_values(by=['frequency'], ascending=False, ignore_index=True) display(df)