GEE JS教程(2):自定义地图样式

本文介绍了如何在Google Earth Engine中自定义地图样式,包括改变底图的色调、亮度、饱和度和伽马,以及控制地图元素如几何图形、标签和图标。此外,还提到了使用Snazzy Maps和mapstyle工具来快速创建独特的地图样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Earth Engine 中的默认地图

Earth Engine 的基本地图是 Google Map API 中的地图。默认选项包括:

  • 路线图,显示默认路线图视图,
  • 卫星,显示谷歌地球卫星图像,
  • 混合,显示正常和卫星视图的混合,
  • 地形,根据地形信息显示物理地图。

更改基本地图样式

我们可以从改变底图的样式开始。一个简单的解决方法是反转亮度以获得更暗的背景,如下所示:

<span style="color:var(--devsite-code-color)"><code><span style="color:var(--devsite-code-keywords-color)">var</span> baseChange = [{featureType: <span style="color:var(--devsite-code-strings-color)">'all'</span>, stylers: [{invert_lightness: <span style="color:var(--devsite-code-keywords-color)">true</span>}]}];

<span style="color:var(--devsite-code-types-color)">Map</span>.setOptions(<span style="color:var(--devsite-code-strings-color)">'baseChange'</span>, {<span style="color:var(--devsite-code-strings-color)">'baseChange'</span>: baseChange});
</code></span>

主要的造型器选项包括:

  • 色调:表示基本颜色
  • 亮度:表示元素亮度的百分比变化
  • 饱和度:表示元素基本颜色的百分比变化
  • 伽马:元素的伽马校正(0.01 和 10.0)
  • 反转亮度:反转现有亮度
  • 可见性:更改元素的可见性选项(打开、关闭或简化)
  • 颜色:设置元素的颜色(使用 RGB 十六进制字符串)
  • 权重:以像素为单位设置特征的权重

更改地图元素

Google Maps API(以及扩展的 Earth Engine)使您能够控制大量地图功能和元素。

您可以在 Google 地图文档中找到可以修改的完整元素列表:https://developers.google.com/maps/documentation/javascript/style-reference

完整的功能列表(也在上面链接的 Google Maps API 文档中)包括几何图形、标签、图标等。所有样式器选项都适用于这些功能中的每一个。

例如,要删除图标和自定义路线图样式,可以按如下方式定义样式:

<span style="color:var(--devsite-code-color)"><code><span style="color:var(--devsite-code-comments-color)">// Remove icons.</span>
<span style="color:var(--devsite-code-keywords-color)">var</span> iconChange = [
  {
    <span style="color:var(--devsite-code-comments-color)">// Change map saturation.</span>
    stylers: [{gamma: <span style="color:var(--devsite-code-numbers-color)">0.2</span>}]
  },
  {
    <span style="color:var(--devsite-code-comments-color)">// Change label properties.</span>
    elementType: <span style="color:var(--devsite-code-strings-color)">'labels'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>, color: <span style="color:var(--devsite-code-strings-color)">'#000055'</span>}]
  },
  {
    <span style="color:var(--devsite-code-comments-color)">// Change road properties.</span>
    featureType: <span style="color:var(--devsite-code-strings-color)">'road'</span>,
    elementType: <span style="color:var(--devsite-code-strings-color)">'geometry'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>, color: <span style="color:var(--devsite-code-strings-color)">'#000055'</span>}]
  },
  {
    <span style="color:var(--devsite-code-comments-color)">// Change road labels.</span>
    featureType: <span style="color:var(--devsite-code-strings-color)">'road'</span>,
    elementType: <span style="color:var(--devsite-code-strings-color)">'labels'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>}]
  },
  {
    <span style="color:var(--devsite-code-comments-color)">// Change icon properties.</span>
    elementType: <span style="color:var(--devsite-code-strings-color)">'labels.icon'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>}]
  },
  {
    <span style="color:var(--devsite-code-comments-color)">// Change POI options.</span>
    featureType: <span style="color:var(--devsite-code-strings-color)">'poi'</span>,
    elementType: <span style="color:var(--devsite-code-strings-color)">'all'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>}]
  },
  {
    featureType: <span style="color:var(--devsite-code-strings-color)">'administrative'</span>,
    elementType: <span style="color:var(--devsite-code-strings-color)">'geometry.fill'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>}]
  },
  {
    featureType: <span style="color:var(--devsite-code-strings-color)">'administrative'</span>,
    elementType: <span style="color:var(--devsite-code-strings-color)">'geometry.stroke'</span>,
    stylers: [{visibility: <span style="color:var(--devsite-code-strings-color)">'off'</span>}]
  }
];

<span style="color:var(--devsit
<think>好的,用户现在的问题是在Google Earth Engine (GEE) 中导入CSV文件后,如何在地图上显示点。之前用户询问过如何选择地理坐标系,现在可能已经按照建议转换到WGS84,现在需要实际操作的步骤。 首先,我需要确认用户是否已经正确处理了CSV文件的坐标系,因为GEE严格要求WGS84。如果他们之前的步骤正确,接下来就是如何在GEE中导入并显示这些点。 接下来,用户可能需要详细的步骤指导,包括如何上传CSV到GEE,如何将CSV转换为要素集合,然后添加到地图中。同时,可能需要代码示例,因为用户可能对GEEJavaScript API不太熟悉。 另外,常见问题也需要考虑,比如数据没有正确显示的可能原因,如坐标系错误、列名不正确、数据格式问题等。需要给出检查建议,比如验证坐标范围、检查列名、使用print语句调试。 用户可能还关心如何设置点的样式,比如颜色、大小,以及如何导出或进一步分析这些点。需要简要提及这些进阶操作,但主要焦点是显示点的基本步骤。 需要确保回答结构清晰,分步骤说明,并提供代码示例和注意事项,帮助用户一步步解决问题,避免常见的坑。同时,语言要简洁明了,适合不同技术水平的用户理解。</think>在Google Earth Engine (GEE) 中导入CSV文件并在地图上显示点,需通过以下步骤操作(以JavaScript API为例): --- ### **1. 准备CSV文件** - **格式要求**: - 必须包含两列:**经度列**(建议命名`lon`或`longitude`)和**纬度列**(建议命名`lat`或`latitude`)。 - 坐标系必须是 **WGS84(EPSG:4326)**,否则显示位置错误。 - **示例CSV内容**: ```csv id,lon,lat,name 1,116.4074,39.9042,北京 2,121.4737,31.2304,上海 ``` --- ### **2. 上传CSV到GEE** 1. **上传至GEE资源库**: - 进入GEE代码编辑器,点击左侧 **Assets** 标签。 - 点击 **New** → **Table Upload** → 选择CSV文件 → 填写名称(如`my_points`)→ **Upload**。 - 等待上传完成(状态变为绿色√)。 2. **验证上传数据**: ```javascript // 加载已上传的CSV数据(替换为你的Asset ID) var points = ee.FeatureCollection('users/your_username/my_points'); print(points); // 控制台打印数据属性,确认列名和坐标范围 ``` --- ### **3. 将CSV点数据添加到地图** #### **方法1:直接可视化** ```javascript // 定义可视化参数(颜色、点大小等) var styleParams = { color: 'red', // 点颜色 pointSize: 5 // 点像素大小 }; // 将点添加到地图 Map.addLayer(points.style(styleParams), {}, 'My Points'); ``` #### **方法2:转换为FeatureCollection后显示** ```javascript // 如果CSV未自动识别为FeatureCollection,手动转换 var points = ee.FeatureCollection(points.map(function(feature) { return feature.setGeometry(ee.Geometry.Point([feature.get('lon'), feature.get('lat')])); })); // 添加带自定义属性的点 Map.addLayer(points, {color: 'blue'}, 'Points with Properties'); ``` --- ### **4. 定位到点所在区域** ```javascript // 获取点集合的几何范围,并缩放到该区域 Map.centerObject(points, 6); // 第二个参数为缩放级别(1~24) ``` --- ### **5. 完整代码示例** ```javascript // 步骤1: 加载CSV数据 var points = ee.FeatureCollection('users/your_username/my_points'); // 步骤2: 打印数据信息(调试用) print('CSV数据示例:', points.first()); print('坐标范围:', points.geometry().bounds()); // 步骤3: 可视化并添加到地图 Map.addLayer(points.style({color: '#FF0000', pointSize: 8}), {}, 'Cities'); // 步骤4: 缩放到点所在区域 Map.centerObject(points, 5); ``` --- ### **6. 常见问题与解决** - **❌ 问题:地图未显示点** - **检查1**:确认CSV的列名是否为`lon`/`lat`(区分大小写)。 - **检查2**:在控制台运行`print(points)`,确认数据已正确加载。 - **检查3**:坐标值是否在合理范围(经度`-180~180`,纬度`-90~90`)。 - **❌ 问题:点位置偏移** - **原因**:CSV未使用WGS84坐标系(如误用GCJ-02)。 - **解决**:返回原始数据,用Python或在线工具转换为WGS84后再上传。 --- ### **7. 进阶操作** - **属性标注**:在点的弹出窗口中显示其他字段(如`name`): ```javascript // 定义弹出窗口内容 var pointsWithPopup = points.map(function(feature) { return feature.set('popup', '城市: ' + feature.get('name')); }); // 添加带标注的点 Map.addLayer(pointsWithPopup, {color: 'green'}, 'Points with Labels'); ``` - **导出为矢量文件**:将点数据导出至Google Drive: ```javascript Export.table.toDrive({ collection: points, description: 'export_points', fileFormat: 'SHP' // 可选格式:CSV、GeoJSON等 }); ``` --- ### **总结** 1. **数据准备**:确保CSV为WGS84坐标系,包含`lon`和`lat`列。 2. **上传与加载**:通过Assets上传,用`ee.FeatureCollection`加载。 3. **可视化**:用`Map.addLayer`添加点图层,自定义颜色和大小。 4. **调试**:利用`print()`和控制台输出验证数据完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值