Stay organized with collectionsSave and categorize content based on your preferences.
Interpolation from vector to raster in Earth Engine creates anImagefrom aFeatureCollection. Specifically, Earth Engine uses numeric data
stored in a property of the features to interpolate values at new locations outside
of the features. The interpolation results in a continuousImageof
interpolated values up to the distance specified.
Inverse Distance Weighted Interpolation
The inverse distance weighting (IDW) function in Earth Engine is based on the method
described byBasso
et al. (1999). An additional control parameter is added in the form of a
decay factor (gamma) on the inverse distance. Other parameters include the
mean and standard deviation of the property to interpolate and the maximum range
distance over which to interpolate. The following example creates an interpolated surface ofmethane concentrationto fill spatial gaps in the original raster dataset. TheFeatureCollectionis generated by sampling a two-week methane composite.
Note that, as specified by therangeparameter, the interpolation only
exists up to 70 kilometers from the nearest measurement station.
Kriging
Krigingis an interpolation method
that uses a modeled estimate ofsemi-varianceto create an image
of interpolated values that is an optimal combination of the values at known locations.
The Kriging estimator requires parameters that describe the shape of asemi-variogramfit to the known data
points. These parameters are illustrated by Figure 1.
Figure 1. Thenugget,sillandrangeparameters illustrated on a idealized variogram function.
The following example samples a sea surface temperature (SST) image at random locations,
then interpolates SST from the sample using Kriging:
The size of the neighborhood in which to perform the interpolation is specified by themaxDistanceparameter. Larger sizes will result in smoother output but
slower computations.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2021-05-26 UTC."],[[["\u003cp\u003eEarth Engine interpolates numeric data from vector features to create continuous raster images.\u003c/p\u003e\n"],["\u003cp\u003eInverse Distance Weighting (IDW) interpolation estimates values based on the distance and decay factor from known data points.\u003c/p\u003e\n"],["\u003cp\u003eKriging utilizes a semi-variogram model to produce an optimal interpolation based on spatial relationships of known values.\u003c/p\u003e\n"],["\u003cp\u003eBoth methods offer customizable parameters to control the interpolation process, like range, maximum distance, and model-specific settings.\u003c/p\u003e\n"]]],["Earth Engine interpolates numeric data from a `FeatureCollection` to create a continuous `Image`. Inverse Distance Weighted (IDW) interpolation uses a decay factor (`gamma`) and distance parameters to estimate values, demonstrated by interpolating methane concentration data. Kriging interpolation, another method, uses semi-variance estimates (`nugget`, `sill`, `range`) to generate interpolated values, exemplified through sea surface temperature interpolation. Both methods sample raster data to create `FeatureCollections` for interpolation. The `maxDistance` parameter determines the interpolation neighborhood's size in Kriging.\n"],null,["# Vector to Raster Interpolation\n\nInterpolation from vector to raster in Earth Engine creates an `Image`\nfrom a `FeatureCollection`. Specifically, Earth Engine uses numeric data\nstored in a property of the features to interpolate values at new locations outside\nof the features. The interpolation results in a continuous `Image` of\ninterpolated values up to the distance specified.\n\nInverse Distance Weighted Interpolation\n---------------------------------------\n\nThe inverse distance weighting (IDW) function in Earth Engine is based on the method\ndescribed by\n[Basso\net al. (1999)](https://ieeexplore.ieee.org/abstract/document/805606). An additional control parameter is added in the form of a\ndecay factor (`gamma`) on the inverse distance. Other parameters include the\nmean and standard deviation of the property to interpolate and the maximum range\ndistance over which to interpolate. The following example creates an interpolated surface of\n[methane concentration](https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S5P_OFFL_L3_CH4) to fill spatial gaps in the original raster dataset. The\n`FeatureCollection` is generated by sampling a two-week methane composite. \n\n```gdscript\n// Import two weeks of S5P methane and composite by mean.\nvar ch4 = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_CH4')\n .select('CH4_column_volume_mixing_ratio_dry_air')\n .filterDate('2019-08-01', '2019-08-15')\n .mean()\n .rename('ch4');\n\n// Define an area to perform interpolation over.\nvar aoi =\n ee.Geometry.Polygon(\n [[[-95.68487605978851, 43.09844605027055],\n [-95.68487605978851, 37.39358590079781],\n [-87.96148738791351, 37.39358590079781],\n [-87.96148738791351, 43.09844605027055]]], null, false);\n\n// Sample the methane composite to generate a FeatureCollection.\nvar samples = ch4.addBands(ee.Image.pixelLonLat())\n .sample({region: aoi, numPixels: 1500,\n scale:1000, projection: 'EPSG:4326'})\n .map(function(sample) {\n var lat = sample.get('latitude');\n var lon = sample.get('longitude');\n var ch4 = sample.get('ch4');\n return ee.Feature(ee.Geometry.Point([lon, lat]), {ch4: ch4});\n });\n\n// Combine mean and standard deviation reducers for efficiency.\nvar combinedReducer = ee.Reducer.mean().combine({\n reducer2: ee.Reducer.stdDev(),\n sharedInputs: true});\n\n// Estimate global mean and standard deviation from the points.\nvar stats = samples.reduceColumns({\n reducer: combinedReducer,\n selectors: ['ch4']});\n\n// Do the interpolation, valid to 70 kilometers.\nvar interpolated = samples.inverseDistance({\n range: 7e4,\n propertyName: 'ch4',\n mean: stats.get('mean'),\n stdDev: stats.get('stdDev'),\n gamma: 0.3});\n\n// Define visualization arguments.\nvar band_viz = {\n min: 1800,\n max: 1900,\n palette: ['0D0887', '5B02A3', '9A179B', 'CB4678',\n 'EB7852', 'FBB32F', 'F0F921']};\n\n// Display to map.\nMap.centerObject(aoi, 7);\nMap.addLayer(ch4, band_viz, 'CH4');\nMap.addLayer(interpolated, band_viz, 'CH4 Interpolated');\n```\n\nNote that, as specified by the `range` parameter, the interpolation only\nexists up to 70 kilometers from the nearest measurement station.\n\nKriging\n-------\n\n[Kriging](https://en.wikipedia.org/wiki/Kriging) is an interpolation method\nthat uses a modeled estimate of\n[semi-variance](https://en.wikipedia.org/wiki/Semivariance) to create an image\nof interpolated values that is an optimal combination of the values at known locations.\nThe Kriging estimator requires parameters that describe the shape of a\n[semi-variogram](https://en.wikipedia.org/wiki/Variogram) fit to the known data\npoints. These parameters are illustrated by Figure 1.\nFigure 1. The `nugget`, `sill` and `range` parameters illustrated on a idealized variogram function.\n\nThe following example samples a sea surface temperature (SST) image at random locations,\nthen interpolates SST from the sample using Kriging: \n\n```cplint\n// Load an image of sea surface temperature (SST).\nvar sst = ee.Image('NOAA/AVHRR_Pathfinder_V52_L3/20120802025048')\n .select('sea_surface_temperature')\n .rename('sst')\n .divide(100);\n\n// Define a geometry in which to sample points\nvar geometry = ee.Geometry.Rectangle([-65.60, 31.75, -52.18, 43.12]);\n\n// Sample the SST image at 1000 random locations.\nvar samples = sst.addBands(ee.Image.pixelLonLat())\n .sample({region: geometry, numPixels: 1000})\n .map(function(sample) {\n var lat = sample.get('latitude');\n var lon = sample.get('longitude');\n var sst = sample.get('sst');\n return ee.Feature(ee.Geometry.Point([lon, lat]), {sst: sst});\n });\n\n// Interpolate SST from the sampled points.\nvar interpolated = samples.kriging({\n propertyName: 'sst',\n shape: 'exponential',\n range: 100 * 1000,\n sill: 1.0,\n nugget: 0.1,\n maxDistance: 100 * 1000,\n reducer: 'mean',\n});\n\nvar colors = ['00007F', '0000FF', '0074FF',\n '0DFFEA', '8CFF41', 'FFDD00',\n 'FF3700', 'C30000', '790000'];\nvar vis = {min:-3, max:40, palette: colors};\n\nMap.setCenter(-60.029, 36.457, 5);\nMap.addLayer(interpolated, vis, 'Interpolated');\nMap.addLayer(sst, vis, 'Raw SST');\nMap.addLayer(samples, {}, 'Samples', false);\n```\n\nThe size of the neighborhood in which to perform the interpolation is specified by the\n`maxDistance` parameter. Larger sizes will result in smoother output but\nslower computations."]]