Announcement: All noncommercial projects registered to use Earth Engine before
April 15, 2025 must
verify noncommercial eligibility to maintain Earth Engine access.
ee.FeatureCollection.runBigQuery
Stay organized with collections
Save and categorize content based on your preferences.
Runs a BigQuery query, fetches the results and presents the them as a FeatureCollection.
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'));
Python setup
See the
Python Environment page for information on the Python API and using
geemap
for interactive development.
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)
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-06-23 UTC.
[null,null,["Last updated 2025-06-23 UTC."],[],[],null,["# ee.FeatureCollection.runBigQuery\n\nRuns a BigQuery query, fetches the results and presents the them as a FeatureCollection.\n\n\u003cbr /\u003e\n\n| Usage | Returns |\n|------------------------------------------------------------------------------------|-------------------|\n| `ee.FeatureCollection.runBigQuery(query, `*geometryColumn* `, `*maxBytesBilled*`)` | FeatureCollection |\n\n| Argument | Type | Details |\n|------------------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------|\n| `query` | String | GoogleSQL query to perform on the BigQuery resources. |\n| `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. |\n| `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. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\n// Get places from Overture Maps Dataset in BigQuery public data.\nMap.setCenter(-3.69, 40.41, 12)\nvar mapGeometry= ee.Geometry(Map.getBounds(true)).toGeoJSONString();\nvar sql =\n \"SELECT geometry, names.primary as name, categories.primary as category \"\n + \" FROM bigquery-public-data.overture_maps.place \"\n + \" WHERE ST_INTERSECTS(geometry, ST_GEOGFROMGEOJSON('\" + mapGeometry+ \"'))\";\n\nvar features = ee.FeatureCollection.runBigQuery({\n query: sql,\n geometryColumn: 'geometry'\n});\n\n// Display all relevant features on the map.\nMap.addLayer(features,\n {'color': 'black'},\n 'Places from Overture Maps Dataset');\n\n\n// Create a histogram of the categories and print it.\nvar propertyOfInterest = 'category';\nvar histogram = features.filter(ee.Filter.notNull([propertyOfInterest]))\n .aggregate_histogram(propertyOfInterest);\nprint(histogram);\n\n// Create a frequency chart for the histogram.\nvar categories = histogram.keys().map(function(k) {\n return ee.Feature(null, {\n key: k,\n value: histogram.get(k)\n });\n});\nvar sortedCategories = ee.FeatureCollection(categories).sort('value', false);\nprint(ui.Chart.feature.byFeature(sortedCategories).setChartType('Table'));\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\nimport json\nimport pandas as pd\n\n# Get places from Overture Maps Dataset in BigQuery public data.\nlocation = ee.Geometry.Point(-3.69, 40.41)\nmap_geometry = json.dumps(location.buffer(5e3).getInfo())\n\nsql = f\"\"\"SELECT geometry, names.primary as name, categories.primary as category\nFROM bigquery-public-data.overture_maps.place\nWHERE ST_INTERSECTS(geometry, ST_GEOGFROMGEOJSON('{map_geometry}'))\"\"\"\n\nfeatures = ee.FeatureCollection.runBigQuery(\n query=sql, geometryColumn=\"geometry\"\n)\n\n# Display all relevant features on the map.\nm = geemap.Map()\nm.center_object(location, 13)\nm.add_layer(features, {'color': 'black'}, 'Places from Overture Maps Dataset')\ndisplay(m)\n\n# Create a histogram of the place categories.\nproperty_of_interest = 'category'\nhistogram = (\n features.filter(\n ee.Filter.notNull([property_of_interest])\n ).aggregate_histogram(property_of_interest)\n).getInfo()\n\n# Display the histogram as a pandas DataFrame.\ndf = pd.DataFrame(list(histogram.items()), columns=['category', 'frequency'])\ndf = df.sort_values(by=['frequency'], ascending=False, ignore_index=True)\ndisplay(df)\n```"]]