Announcement: All noncommercial projects registered to use Earth Engine before April 15, 2025 must verify noncommercial eligibility to maintain Earth Engine access.
[[["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 2023-10-06 UTC."],[[["\u003cp\u003eComputes the distance to the nearest non-zero pixel for each band in an image, using a specified distance kernel (Chebyshev, Euclidean, or Manhattan).\u003c/p\u003e\n"],["\u003cp\u003eAccepts an input image, a distance kernel, and an optional parameter to mask output pixels corresponding to masked input pixels.\u003c/p\u003e\n"],["\u003cp\u003eReturns an image where pixel values represent the distance to the nearest non-zero pixel in the input.\u003c/p\u003e\n"],["\u003cp\u003eOffers flexibility in defining the distance kernel and handling masked pixels.\u003c/p\u003e\n"],["\u003cp\u003eCan be used to analyze proximity to specific features in images, such as determining the distance to water bodies in a land cover map.\u003c/p\u003e\n"]]],[],null,["Computes the distance to the nearest non-zero pixel in each band, using the specified distance kernel.\n\n\u003cbr /\u003e\n\n| Usage | Returns |\n|-----------------------------------------------|---------|\n| Image.distance`(`*kernel* `, `*skipMasked*`)` | Image |\n\n| Argument | Type | Details |\n|---------------|------------------------|-----------------------------------------------------------------|\n| this: `image` | Image | The input image. |\n| `kernel` | Kernel, default: null | The distance kernel. One of chebyshev, euclidean, or manhattan. |\n| `skipMasked` | Boolean, default: true | Mask output pixels if the corresponding input pixel is masked. |\n\nExamples\n\nCode Editor (JavaScript) \n\n```javascript\n// The objective is to determine the per-pixel distance to a target\n// feature (pixel value). In this example, the target feature is water in a\n// land cover map.\n\n// Import a Dynamic World land cover image and subset the 'label' band.\nvar lcImg = ee.Image(\n 'GOOGLE/DYNAMICWORLD/V1/20210726T171859_20210726T172345_T14TQS')\n .select('label');\n\n// Create a binary image where the target feature is value 1, all else 0.\n// In the Dynamic World map, water is represented as value 0, so we use the\n// ee.Image.eq() relational operator to set it to 1.\nvar targetImg = lcImg.eq(0);\n\n// Set a max distance from target pixels to consider in the analysis. Pixels\n// with distance greater than this value from target pixels will be masked out.\n// Here, we are using units of meters, but the distance kernels also accept\n// units of pixels.\nvar maxDistM = 10000; // 10 km\n\n// Calculate distance to target pixels. Several distance kernels are provided.\n\n// Euclidean distance.\nvar euclideanKernel = ee.Kernel.euclidean(maxDistM, 'meters');\nvar euclideanDist = targetImg.distance(euclideanKernel);\nvar vis = {min: 0, max: maxDistM};\nMap.setCenter(-95.68, 46.46, 9);\nMap.addLayer(euclideanDist, vis, 'Euclidean distance to target pixels');\n\n// Manhattan distance.\nvar manhattanKernel = ee.Kernel.manhattan(maxDistM, 'meters');\nvar manhattanDist = targetImg.distance(manhattanKernel);\nMap.addLayer(manhattanDist, vis, 'Manhattan distance to target pixels', false);\n\n// Chebyshev distance.\nvar chebyshevKernel = ee.Kernel.chebyshev(maxDistM, 'meters');\nvar chebyshevDist = targetImg.distance(chebyshevKernel);\nMap.addLayer(chebyshevDist, vis, 'Chebyshev distance to target pixels', false);\n\n// Add the target layer to the map; water is blue, all else masked out.\nMap.addLayer(targetImg.mask(targetImg), {palette: 'blue'}, 'Target pixels');\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\nColab (Python) \n\n```python\n# The objective is to determine the per-pixel distance to a target\n# feature (pixel value). In this example, the target feature is water in a\n# land cover map.\n\n# Import a Dynamic World land cover image and subset the 'label' band.\nlc_img = ee.Image(\n 'GOOGLE/DYNAMICWORLD/V1/20210726T171859_20210726T172345_T14TQS'\n).select('label')\n\n# Create a binary image where the target feature is value 1, all else 0.\n# In the Dynamic World map, water is represented as value 0, so we use the\n# ee.Image.eq() relational operator to set it to 1.\ntarget_img = lc_img.eq(0)\n\n# Set a max distance from target pixels to consider in the analysis. Pixels\n# with distance greater than this value from target pixels will be masked out.\n# Here, we are using units of meters, but the distance kernels also accept\n# units of pixels.\nmax_dist_m = 10000 # 10 km\n\n# Calculate distance to target pixels. Several distance kernels are provided.\n\n# Euclidean distance.\neuclidean_kernel = ee.Kernel.euclidean(max_dist_m, 'meters')\neuclidean_dist = target_img.distance(euclidean_kernel)\nvis = {'min': 0, 'max': max_dist_m}\nm = geemap.Map()\nm.set_center(-95.68, 46.46, 9)\nm.add_layer(euclidean_dist, vis, 'Euclidean distance to target pixels')\n\n# Manhattan distance.\nmanhattan_kernel = ee.Kernel.manhattan(max_dist_m, 'meters')\nmanhattan_dist = target_img.distance(manhattan_kernel)\nm.add_layer(\n manhattan_dist, vis, 'Manhattan distance to target pixels', False\n)\n\n# Chebyshev distance.\nchebyshev_kernel = ee.Kernel.chebyshev(max_dist_m, 'meters')\nchebyshev_dist = target_img.distance(chebyshev_kernel)\nm.add_layer(\n chebyshev_dist, vis, 'Chebyshev distance to target pixels', False\n)\n\n# Add the target layer to the map water is blue, all else masked out.\nm.add_layer(\n target_img.mask(target_img), {'palette': 'blue'}, 'Target pixels'\n)\nm\n```"]]