ee.FeatureCollection.runBigQuery

Chạy truy vấn BigQuery, tìm nạp kết quả và trình bày kết quả dưới dạng FeatureCollection.

Cách sử dụngGiá trị trả về
ee.FeatureCollection.runBigQuery(query, geometryColumn, maxBytesBilled)FeatureCollection
Đối sốLoạiThông tin chi tiết
queryChuỗiTruy vấn GoogleSQL để thực hiện trên các tài nguyên BigQuery.
geometryColumnChuỗi, mặc định: rỗngTên của cột sẽ dùng làm hình dạng đặc điểm chính. Nếu bạn không chỉ định, cột hình học đầu tiên sẽ được sử dụng.
maxBytesBilledDài, mặc định: 100000000000Số byte tối đa được tính phí trong khi xử lý truy vấn. Mọi công việc BigQuery vượt quá hạn mức này sẽ không thành công và không được tính phí.

Ví dụ

Trình soạn thảo mã (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'));

Thiết lập Python

Hãy xem trang Môi trường Python để biết thông tin về API Python và cách sử dụng geemap cho hoạt động phát triển tương tác.

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)