Interpolasi dari vektor ke raster di Earth Engine akan membuat Image
dari FeatureCollection
. Secara khusus, Earth Engine menggunakan data numerik yang disimpan di properti fitur untuk melakukan interpolasi nilai di lokasi baru di luar fitur. Interpolasi menghasilkan Image
berkelanjutan dari
nilai yang diinterpolasi hingga jarak yang ditentukan.
Interpolasi Berbobot Jarak Invers
Fungsi inverse distance weighting (IDW) di Earth Engine didasarkan pada metode yang dijelaskan oleh Basso et al. (1999). Parameter kontrol tambahan ditambahkan dalam bentuk
faktor peluruhan (gamma
) pada jarak terbalik. Parameter lainnya mencakup
rata-rata dan simpangan baku properti yang akan diinterpolasi dan jarak rentang maksimum
yang akan diinterpolasi. Contoh berikut membuat permukaan interpolasi dari
konsentrasi metana untuk mengisi celah spasial dalam set data raster asli. FeatureCollection
dihasilkan dengan mengambil sampel komposit metana selama dua minggu.
// Import two weeks of S5P methane and composite by mean. var ch4 = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_CH4') .select('CH4_column_volume_mixing_ratio_dry_air') .filterDate('2019-08-01', '2019-08-15') .mean() .rename('ch4'); // Define an area to perform interpolation over. var aoi = ee.Geometry.Polygon( [[[-95.68487605978851, 43.09844605027055], [-95.68487605978851, 37.39358590079781], [-87.96148738791351, 37.39358590079781], [-87.96148738791351, 43.09844605027055]]], null, false); // Sample the methane composite to generate a FeatureCollection. var samples = ch4.addBands(ee.Image.pixelLonLat()) .sample({region: aoi, numPixels: 1500, scale:1000, projection: 'EPSG:4326'}) .map(function(sample) { var lat = sample.get('latitude'); var lon = sample.get('longitude'); var ch4 = sample.get('ch4'); return ee.Feature(ee.Geometry.Point([lon, lat]), {ch4: ch4}); }); // Combine mean and standard deviation reducers for efficiency. var combinedReducer = ee.Reducer.mean().combine({ reducer2: ee.Reducer.stdDev(), sharedInputs: true}); // Estimate global mean and standard deviation from the points. var stats = samples.reduceColumns({ reducer: combinedReducer, selectors: ['ch4']}); // Do the interpolation, valid to 70 kilometers. var interpolated = samples.inverseDistance({ range: 7e4, propertyName: 'ch4', mean: stats.get('mean'), stdDev: stats.get('stdDev'), gamma: 0.3}); // Define visualization arguments. var band_viz = { min: 1800, max: 1900, palette: ['0D0887', '5B02A3', '9A179B', 'CB4678', 'EB7852', 'FBB32F', 'F0F921']}; // Display to map. Map.centerObject(aoi, 7); Map.addLayer(ch4, band_viz, 'CH4'); Map.addLayer(interpolated, band_viz, 'CH4 Interpolated');
Perhatikan bahwa, seperti yang ditentukan oleh parameter range
, interpolasi hanya
ada hingga 70 kilometer dari stasiun pengukuran terdekat.
Kriging
Kriging adalah metode interpolasi yang menggunakan estimasi semi-varian yang dimodelkan untuk membuat gambar nilai interpolasi yang merupakan kombinasi optimal dari nilai di lokasi yang diketahui. Estimator Kriging memerlukan parameter yang menjelaskan bentuk semi-variogram yang sesuai dengan titik data yang diketahui. Parameter ini diilustrasikan oleh Gambar 1.

nugget
, sill
, dan range
diilustrasikan pada fungsi variogram yang diidealkan.
Contoh berikut mengambil sampel gambar suhu permukaan laut (SST) di lokasi acak, lalu melakukan interpolasi SST dari sampel menggunakan Kriging:
// Load an image of sea surface temperature (SST). var sst = ee.Image('NOAA/AVHRR_Pathfinder_V52_L3/20120802025048') .select('sea_surface_temperature') .rename('sst') .divide(100); // Define a geometry in which to sample points var geometry = ee.Geometry.Rectangle([-65.60, 31.75, -52.18, 43.12]); // Sample the SST image at 1000 random locations. var samples = sst.addBands(ee.Image.pixelLonLat()) .sample({region: geometry, numPixels: 1000}) .map(function(sample) { var lat = sample.get('latitude'); var lon = sample.get('longitude'); var sst = sample.get('sst'); return ee.Feature(ee.Geometry.Point([lon, lat]), {sst: sst}); }); // Interpolate SST from the sampled points. var interpolated = samples.kriging({ propertyName: 'sst', shape: 'exponential', range: 100 * 1000, sill: 1.0, nugget: 0.1, maxDistance: 100 * 1000, reducer: 'mean', }); var colors = ['00007F', '0000FF', '0074FF', '0DFFEA', '8CFF41', 'FFDD00', 'FF3700', 'C30000', '790000']; var vis = {min:-3, max:40, palette: colors}; Map.setCenter(-60.029, 36.457, 5); Map.addLayer(interpolated, vis, 'Interpolated'); Map.addLayer(sst, vis, 'Raw SST'); Map.addLayer(samples, {}, 'Samples', false);
Ukuran lingkungan tempat melakukan interpolasi ditentukan oleh parameter maxDistance
. Ukuran yang lebih besar akan menghasilkan output yang lebih lancar, tetapi
komputasi yang lebih lambat.