[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6997YQ6VG2M1T8T3CDBFHVV":3,"skill-same:01M6997YQ6VG2M1T8T3CDBFHVV":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":32,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M6997YQ6VG2M1T8T3CDBFHVV","alphaearth_foundations_change_detection",null,"Use AlphaEarth Foundations Satellite Embeddings in Google Earth Engine (GEE) for change detection.","google\u002Fearthengine-community","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M6997W32FKD4P5MP8C7JC6W5",832,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fearthengine-community\u002Fblob\u002Fmaster\u002Fskills\u002Falphaearth_foundations_change_detection\u002FSKILL.md",[],[19,9],"alphaearth foundations change detection","2026-11-10 10:12:30",false,"---\nname: alphaearth_foundations_change_detection\ndescription: >-\n  Use AlphaEarth Foundations Satellite Embeddings in Google Earth Engine (GEE)\n  for change detection.\n---\n\nSee introduction in `alphaearth_foundations_core`.\n\n---\n\n## 1. Basic Dot Product (Cosine Similarity) & Visualization\n\nBecause the bands in `GOOGLE\u002FSATELLITE_EMBEDDING\u002FV1\u002FANNUAL` are already unit vectors, their cosine similarity (dot product) is calculated simply by element-wise multiplication followed by a band sum.\n\nTo select input, use `.first()` for point-based queries or `.mosaic()` for\nlarger geographic regions.\n\n```python\ndataset = ee.ImageCollection('GOOGLE\u002FSATELLITE_EMBEDDING\u002FV1\u002FANNUAL')\n\n# --- OPTION A: For a Point of Interest (POI) ---\npoint = ee.Geometry.Point([-121.8036, 39.0372])\n\nimage1 = dataset.filterDate('2023-01-01', '2024-01-01') \\\n                .filterBounds(point) \\\n                .first()\n\nimage2 = dataset.filterDate('2024-01-01', '2025-01-01') \\\n                .filterBounds(point) \\\n                .first()\n\n# --- OPTION B: For a Large Area of Interest (AOI) ---\n# image1 = dataset.filterDate('2023-01-01', '2024-01-01').mosaic()\n# image2 = dataset.filterDate('2024-01-01', '2025-01-01').mosaic()\n\n# 1. Qualitative Visualization (Pseudo-RGB parameters)\n# Three specific axes of the 64D embedding space provide qualitative surface context.\nvis_params = {'min': -0.3, 'max': 0.3, 'bands': ['A01', 'A16', 'A09']}\n\n# 2. Quantitative Similarity (Dot Product)\n# Calculates a single-band similarity map from -1.0 to 1.0.\ndot_product = image1.multiply(image2).reduce(ee.Reducer.sum())\n```\n\n## 2. Vectorizing and Filtering Change Polygons\n\nTo extract change polygons:\n\n```python\nsimilarity_threshold = 0.8\narea_threshold = 20000\nscale = 100\n\n# Mask out pixels that did not undergo change (similarity above threshold)\nchange_mask = dot_product.lt(similarity_threshold).selfMask()\n\n# Convert changed pixels to polygons\n# aoi: User-supplied ee.Geometry Area of Interest\nchange_vectors = change_mask.reduceToVectors(\n    reducer=ee.Reducer.countEvery(),\n    geometry=aoi,\n    scale=scale,\n    maxPixels=1e13\n)\n\n# Filter by minimum area threshold\nfiltered_vectors = change_vectors.map(\n    lambda feature: ee.Feature(feature).set('area', ee.Feature(feature).geometry().area(1))\n).filter(ee.Filter.gt('area', area_threshold))\n\n\n\n```\n","See introduction in `alphaearth_foundations_core`.\n\n---\n\n## 1. Basic Dot Product (Cosine Similarity) & Visualization\n\nBecause the bands in `GOOGLE\u002FSATELLITE_EMBEDDING\u002FV1\u002FANNUAL` are already unit vectors, their cosine similarity (dot product) is calculated simply by element-wise multiplication followed by a band sum.\n\nTo select input, use `.first()` for point-based queries or `.mosaic()` for\nlarger geographic regions.\n\n```python\ndataset = ee.ImageCollection('GOOGLE\u002FSATELLITE_EMBEDDING\u002FV1\u002FANNUAL')\n\n# --- OPTION A: For a Point of Interest (POI) ---\npoint = ee.Geometry.Point([-121.8036, 39.0372])\n\nimage1 = dataset.filterDate('2023-01-01', '2024-01-01') \\\n                .filterBounds(point) \\\n                .first()\n\nimage2 = dataset.filterDate('2024-01-01', '2025-01-01') \\\n                .filterBounds(point) \\\n                .first()\n\n# --- OPTION B: For a Large Area of Interest (AOI) ---\n# image1 = dataset.filterDate('2023-01-01', '2024-01-01').mosaic()\n# image2 = dataset.filterDate('2024-01-01', '2025-01-01').mosaic()\n\n# 1. Qualitative Visualization (Pseudo-RGB parameters)\n# Three specific axes of the 64D embedding space provide qualitative surface context.\nvis_params = {'min': -0.3, 'max': 0.3, 'bands': ['A01', 'A16', 'A09']}\n\n# 2. Quantitative Similarity (Dot Product)\n# Calculates a single-band similarity map from -1.0 to 1.0.\ndot_product = image1.multiply(image2).reduce(ee.Reducer.sum())\n```\n\n## 2. Vectorizing and Filtering Change Polygons\n\nTo extract change polygons:\n\n```python\nsimilarity_threshold = 0.8\narea_threshold = 20000\nscale = 100\n\n# Mask out pixels that did not undergo change (similarity above threshold)\nchange_mask = dot_product.lt(similarity_threshold).selfMask()\n\n# Convert changed pixels to polygons\n# aoi: User-supplied ee.Geometry Area of Interest\nchange_vectors = change_mask.reduceToVectors(\n    reducer=ee.Reducer.countEvery(),\n    geometry=aoi,\n    scale=scale,\n    maxPixels=1e13\n)\n\n# Filter by minimum area threshold\nfiltered_vectors = change_vectors.map(\n    lambda feature: ee.Feature(feature).set('area', ee.Feature(feature).geometry().area(1))\n).filter(ee.Filter.gt('area', area_threshold))\n\n\n\n```\n",{"name":5,"description":7},"master","2762b03fc5b4451ef4a820ebdf533479755df530","skills\u002Falphaearth_foundations_change_detection",916,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fearthengine-community","https:\u002F\u002Fearthengine.google.com\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-12 06:51:25",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add google\u002Fearthengine-community --skill alphaearth_foundations_change_detection",{"tool":41,"command":42},"bunx","bunx skills add google\u002Fearthengine-community --skill alphaearth_foundations_change_detection",{"tool":44,"command":45},"pnpm","pnpm dlx skills add google\u002Fearthengine-community --skill alphaearth_foundations_change_detection","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fearthengine-community\u002Fblob\u002Fmaster\u002Fskills\u002Falphaearth_foundations_change_detection\u002FSKILL.md",true,[49,55,59,63,67,71,75,79],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"steps\u002Fstep-01-document-discovery.md","REFERENCE","参考文档",4956,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fsteps\u002Fstep-01-document-discovery.md",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"steps\u002Fstep-02-prd-analysis.md",4461,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fsteps\u002Fstep-02-prd-analysis.md",{"path":60,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":61,"sourceHtmlUrl":62},"steps\u002Fstep-03-epic-coverage-validation.md",4075,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fsteps\u002Fstep-03-epic-coverage-validation.md",{"path":64,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":65,"sourceHtmlUrl":66},"steps\u002Fstep-04-ux-alignment.md",3306,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fsteps\u002Fstep-04-ux-alignment.md",{"path":68,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":69,"sourceHtmlUrl":70},"steps\u002Fstep-05-epic-quality-review.md",6716,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fsteps\u002Fstep-05-epic-quality-review.md",{"path":72,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":73,"sourceHtmlUrl":74},"steps\u002Fstep-06-final-assessment.md",3304,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fsteps\u002Fstep-06-final-assessment.md",{"path":76,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":77,"sourceHtmlUrl":78},"templates\u002Freadiness-report-template.md",95,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Ftemplates\u002Freadiness-report-template.md",{"path":80,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":81,"sourceHtmlUrl":82},"workflow.md",2826,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-check-implementation-readiness\u002Fworkflow.md",[84,92],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":20},"01M699819RSPSPZTRA0VY14SAD","gee-adhoc-maps","Build quick interactive HTML maps to inspect Earth Engine results. Use layered overlays on a satellite basemap with per-layer opacity, clear\u002Fshow-all, and a click-to-get-coordinates tool. Use when you need to eyeball \"where \u002F what\" (coverage gaps, disagreement, masks) when interacting with Earth Engine outside of the Code Editor or Colab.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fearthengine-community\u002Fblob\u002Fmaster\u002Fskills\u002Fgee_adhoc_maps\u002FSKILL.md",[],[91],"gee adhoc maps",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":20},"01M699801H56ZXBXRNN94VEFZC","alphaearth_foundations_core","Core information for AlphaEarth Foundations Satellite Embeddings in Google Earth Engine (GEE).","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fearthengine-community\u002Fblob\u002Fmaster\u002Fskills\u002Falphaearth_foundations_core\u002FSKILL.md",[],[99,9],"alphaearth foundations core"]