Bei der Interpolation von Vektor- zu Rasterdaten in Earth Engine wird ein Image
aus einem FeatureCollection
erstellt. Insbesondere verwendet Earth Engine numerische Daten, die in einem Attribut der Features gespeichert sind, um Werte an neuen Orten außerhalb der Features zu interpolieren. Die Interpolation führt zu einem kontinuierlichen Image
aus interpolierten Werten bis zur angegebenen Entfernung.
gewichtete Interpolation inverser Entfernung
Die Funktion „Inverse Distanzgewichtung“ (IDW) in Earth Engine basiert auf der von Basso et al. (1999) beschriebenen Methode. Ein zusätzlicher Steuerparameter wird in Form eines Abnahmefaktors (gamma
) auf die inverse Entfernung angewendet. Weitere Parameter sind der Mittelwert und die Standardabweichung der zu interpolierenden Property sowie die maximale Entfernung, über die interpoliert werden soll. Im folgenden Beispiel wird eine interpolierte Oberfläche der
Methankonzentration erstellt, um räumliche Lücken im ursprünglichen Rasterdatensatz zu schließen. Die FeatureCollection
wird durch die Stichprobenerhebung eines zweiwöchigen Methan-Mittelwerts generiert.
// 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');
Wie durch den Parameter range
angegeben, erfolgt die Interpolation nur bis zu 70 Kilometer von der nächsten Messstation entfernt.
Kriging
Kriging ist eine Interpolationsmethode, bei der eine modellierte Schätzung der Semivarianz verwendet wird, um ein Bild mit interpolierten Werten zu erstellen, das eine optimale Kombination der Werte an bekannten Orten darstellt. Für die Kriging-Schätzung sind Parameter erforderlich, die die Form eines Semivariogramms beschreiben, das an die bekannten Datenpunkte angepasst ist. Diese Parameter sind in Abbildung 1 dargestellt.

nugget
, sill
und range
in einer idealisierten Variogrammfunktion.
Im folgenden Beispiel wird ein Bild der Meeresoberflächentemperatur (SST) an zufälligen Stellen abgetastet und dann die SST aus dem Sample mithilfe von Kriging interpoliert:
// 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);
Die Größe des Radius, in dem die Interpolation durchgeführt werden soll, wird durch den Parameter maxDistance
angegeben. Größere Größen führen zu einer flüssigeren Ausgabe, aber zu langsameren Berechnungen.