Map
# 简介
Map 是PIE-Engine中的地图对象,用于添加矢量或栅格数据,并允许用户进行显示操作。
# addLayer
对象作为一个图层添加到地图中,返回一个Layer对象。
函数 | 返回值 |
---|---|
addLayer(image, style =null,name = null,visible= true) | Layer |
参数 | 类型 | 说明 |
---|---|---|
image | Image|FeatureCollection | 要添加到地图中的对象 |
style | Json对象 | 数据可视化样式,默认无,参考测试用例 |
name | String | 图层的名称,默认无 |
visible | Boolean | 图层是否可见,默认不可见 |
style参数 | 类型 | 说明 |
---|---|---|
bands | List | 选择性可视化的波段列表 |
min | Number | 可视化影像的像素值的值域的最小值 |
max | Number | 可视化影像的像素值的值域的最大值 |
palette | String | 十六进制颜色码 |
opacity | Number | 图层的不透明度,0为完全不透明,1为完全透明 |
classify | String | 自定义分级渲染的等级梯度 |
uniqueValue | String | 选择性可视化的属性值 |
# 默认样式(矢量数据) (opens new window)
// 矢量数据选择
var featureCollection = pie.FeatureCollection("NGCC/CHINA_PROVINCE_BOUNDARY")
.filter(pie.Filter.eq("name","河北省"));
// 矢量数据可视化显示
Map.addLayer(featureCollection);
Map.setCenter(118,39.7,6);
# 默认样式(影像单波段数据)
var geometry0 = pie.Geometry.Polygon([
[
[
116.95693622965467,
39.43993976311614
],
[
117.08503764517741,
39.43993976311614
],
[
117.08503764517741,
39.366285732754505
],
[
116.95693622965467,
39.366285732754505
],
[
116.95693622965467,
39.43993976311614
]
]
], null);
var image = pie.ImageCollection("GF1/L1A/BCD_FUSION")
.filterBounds(geometry0)
.select("B1")
.mean()
.clip(geometry0);
Map.addLayer(image,{min:0,max:3000},"GF1");
Map.setCenter(117.02,39.40,13);// 矢量边界
var geometry0 = pie.Geometry.Polygon([[[116.95,39.43],[117.08,39.43],[117.08,39.36],
[116.95,39.36],[116.95,39.43]]], null);
var image = pie.ImageCollection("GF1/L1A/BCD_FUSION")
.filterBounds(geometry0)
.select("B1")
.mean()
.clip(geometry0);
// 影像可视化显示
Map.addLayer(image,{min:0,max:3000},"GF1"); //min与max:可视化影像的像素值的值域。
Map.setCenter(117.02,39.40,13); //点击代码编辑栏右侧信息查询栏即可查询相应像数值大小
# 默认样式(影像多波段数据)
// 矢量边界
var geometry0 = pie.Geometry.Polygon([[[116.95,39.43],[117.08,39.43],[117.08,39.36],
[116.95,39.36],[116.95,39.43]]], null);
var image = pie.ImageCollection("GF1/L1A/BCD_FUSION")
.filterBounds(geometry0)
.select(["B1","B2","B3"])
.mean()
.clip(geometry0);
// 影像可视化显示
Map.addLayer(image.select(["B1","B2","B3"]),{min:0,max:3000},"GF1");
Map.setCenter(117.02,39.40,13);
# 自定义样式(矢量数据)
// 矢量数据选择
var featureCollection = pie.FeatureCollection('NGCC/CHINA_PROVINCE_BOUNDARY');
// 矢量数据可视化显示
Map.addLayer(featureCollection,{color:'FFFF00FF',width:2,fillColor:'00FFFF00'},"CHINA", true);
Map.setCenter(110,30,4);
# 自定义样式(影像多波段数据)
// 矢量边界
var geometry0 = pie.Geometry.Polygon([[[116.95,39.43],[117.08,39.43],[117.08,39.36],
[116.95,39.36],[116.95,39.43]]], null);
var image = pie.ImageCollection("GF1/L1A/BCD_FUSION")
.filterBounds(geometry0)
.select(["B1","B2","B3"])
.mean()
.clip(geometry0);
// 可视化参数
var visParam = {
min: 0,
max: [2500,3000,3000],
opacity:0.9,
bands:["B1","B2","B3"]
};
// 影像可视化显示
Map.addLayer(image, visParam, "Layer", true);
Map.setCenter(117.02,39.40,13);
# 默认分级渲染(影像单波段数据)
// 矢量边界
var geometry0 = pie.Geometry.Polygon([[[116.95,39.43],[117.08,39.43],[117.08,39.36],
[116.95,39.36],[116.95,39.43]]], null);
var image = pie.ImageCollection("GF1/L1A/BCD_FUSION")
.filterBounds(geometry0)
.select("B1")
.mean()
.clip(geometry0);
// 可视化参数
var visParam = {
min: 200,
max: 4000,
opacity:1,
palette: 'FF0000,00FFFF,00FF00,FF00FF,0000FF,FFFF00,FF8000,00AAFF'
};
// 影像可视化显示
Map.addLayer(image, visParam, "Layer", true);
Map.setCenter(117.02,39.40,13);
# 自定义分级渲染(影像单波段数据)
// 可视化参数
var visParam = {
opacity:1,
classify:'1,2,3,4,5,6,7,8', //classify:自定义分级渲染的等级梯度
palette: 'FF0000,00FFFF,00FF00,FF00FF,0000FF,FFFF00,FF8000,00AAFF'
};
var image = pie.Image("user/pieadmin/public/Raster/GF1Classify_Clip").select('B1');
// 影像可视化显示
Map.addLayer(image, visParam, "Layer", true);
Map.setCenter(116.7,39.51,12);
# 唯一值渲染(影像单波段数据)
// 可视化参数
var visParam = {
opacity:0.8,
uniqueValue:'1,2,3,4,5,6,7,8', //uniqueValue:选择可视化的属性值
palette: 'FF0000,00FFFF,00FF00,FF00FF,0000FF,FFFF00,FF8000,00AAFF'
};
// 范例影像
var image = pie.Image("user/pieadmin/public/Raster/GF1Classify_Clip").select('B1');
// 影像可视化显示
Map.addLayer(image, visParam, "Layer", true);
Map.setCenter(116.7,39.51,12);
# addUI
在地图上显示自定义ui。
函数 | 返回值 |
---|---|
addUI(ui) | Object |
参数 | 类型 | 说明 |
---|---|---|
ui | Object | ui引入的方法 |
// 添加图例
var data = {
title: "蓝藻密度",
colors: ['#040274', '#040281', '#0502a3', '#0502b8', '#0502ce', '#0502e6',
'#0602ff', '#235cb1', '#307ef3', '#269db1', '#30c8e2', '#32d3ef',
'#3be285', '#3ff38f', '#86e26f', '#3ae237', '#b5e22e', '#d6e21f',
'#fff705', '#ffd611', '#ffb613', '#ff8b13', '#ff6e08', '#ff500d',
'#ff0000', '#de0101', '#c21301', '#a71001', '#911003'],
labels: ["200(万个/L)", "2000(万个/L)"],
step: 30
};
var style = {
right: "150px",
bottom: "10px",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# animateAlongLine
矢量点沿着指定的路径运动动画。
函数 | 返回值 |
---|---|
animateAlongLine(icon,path,speed,loop,isShowRoute,callFunc) | Null |
参数 | 类型 | 说明 |
---|---|---|
icon | String | 图标名称,可选项参数。 |
path | List|Geometry|Feature|FeatureCollection | 路径点列表或者是路径线矢量数据,必选项参数。 |
speed | Number | 点运动速度,默认1秒,可选项参数。 |
loop | Number | 动画循环次数,默认-1是无限循环,可选项参数。 |
isShowRoute | Boolean | 是否显示路径,默认false,可选项参数。 |
callFunc | Function | 动画启动后的回调方法,返回值是动画运行参数,可选项参数。 |
//台风路径展示
var typhoon = pie.FeatureCollection("TYPHOON/CMABST")
.filter(pie.Filter.eq("Year", 2018))
.filter(pie.Filter.eq("TLName", "BEBINCA"));
Map.centerObject(typhoon, 4);
Map.animateAlongLine({
path:typhoon,
speed: 0.5,
loop: 1,
isShowRoute: true
});
# animateLine
矢量线运动动画。
函数 | 返回值 |
---|---|
animateLine(route,speed,loop,callFunc) | Null |
参数 | 类型 | 说明 |
---|---|---|
route | List|Geometry|Feature|FeatureCollection | 线的点坐标列表或者是路径线矢量数据,必选项参数。 |
speed | Number | 线运动速度,默认1秒,可选项参数。 |
loop | Number | 动画循环次数,默认-1是无限循环,可选项参数。 |
callFunc | Function | 动画启动后的回调方法,返回值是动画运行参数,可选项参数。 |
var path = pie.Geometry.LineString([
[
115.85541650391605,
39.88635618041721
],
[
116.07514306641696,
39.95165759320176
],
[
116.22620507813735,
39.92849325213615
],
[
116.4541713867306,
39.85684481089862
],
[
116.78376123047912,
39.920067911253426
],
[
116.95404931641485,
40.00217075121145
],
[
117.2891323242306,
40.03582544434863
],
[
117.59400292969656,
39.92638701411701
]
], null);
Map.animateLine({
route:path,
speed: 0.5,
loop: 10
})
# animatePulsing
矢量点闪烁动画。
函数 | 返回值 |
---|---|
animatePulsing(icon,point,duration,radius,loop,count,callFunc) | Null |
参数 | 类型 | 说明 |
---|---|---|
icon | String | 图标名称,可选项参数。 |
point | List|Geometry|Feature|FeatureCollection | 点坐标数组或者是点矢量数据,必选项参数。 |
duration | Number | 点运动持续时间,默认3秒,可选项参数。 |
radius | Number | 点最大闪烁半径,默认10,可选项参数。 |
loop | Number | 动画循环次数,默认-1是无限循环,可选项参数。 |
count | Number | 同一时间最多显示点的数量,默认3,可选项参数。 |
callFunc | Function | 动画启动后的回调方法,返回值是动画运行参数,可选项参数。 |
//单点例子
var point = [116.416, 39.911];
Map.animatePulsing({
icon: "airport-15",
point: point,
duration: 2,
radius: 30
});
//多点例子
var points = pie.Geometry.MultiPoint([
[
115.98696498974698,
39.85218624100571
],
[
116.36923454406406,
39.966217943920725
],
[
116.72318783510332,
39.74612975079967
],
[
116.8860063489804,
39.92551412715338
],
[
116.45418333391228,
39.75157252349317
],
[
116.71610876928384,
40.06651712327812
],
[
117.27181543620719,
39.66443657056004
],
[
116.13208583907539,
39.65898691991325
],
[
116.1745602339995,
40.05297179515071
],
[
117.47710834500833,
39.94993932332841
],
[
117.20456431090759,
40.080059758585435
],
[
117.18332711344925,
39.833162505307484
]
], null);
Map.animatePulsing({
// icon: "airport-15",
point: points,
duration: 2,
radius: 30,
loop:100,
count: 5
})
# animateRoute
指定图标或者点从起始点运动到截止点的矢量动画。
函数 | 返回值 |
---|---|
animateRoute(icon,origin,destination,steps,loop,isShowRoute) | Object |
参数 | 类型 | 说明 |
---|---|---|
icon | String | 图标名称,可选项参数。 |
origin | List | 运动起始点位置,经纬度数组列表,必选项参数。 |
destination | List | 运动终止点位置,经纬度数组列表,必选项参数。 |
steps | Number | 从起始点到终止点运行需要多少步,默认500,可选项参数。 |
loop | Number | 动画循环次数,默认-1是无限循环,可选项参数。 |
isShowRoute | Boolean | 是否显示路径,默认false,可选项参数。 |
//显示动画
var origin = [103.488, 36.869]
var destination = [117.847, 39.945]
Map.animateRoute({
icon: "airport-15",
origin: origin,
destination: destination,
steps: 500,
loop:10,
isShowRoute: true
});
# centerObject
设置地图以图形为中心显示。
函数 | 返回值 |
---|---|
centerObject(geometry,zoom) | Void |
参数 | 类型 | 说明 |
---|---|---|
geometry | Geometry | 地图显示的几何图形范围 |
zoom | Int | 地图显示的瓦片的层级编号 |
var polygon = pie.Geometry.Polygon([[[118, 31.1], [119, 31.1], [119, 32.1], [118, 32.1],[118, 31.1]]], null);
Map.centerObject(polygon,7);
# getMaxZoom
获得地图最大显示级别。
函数 | 返回值 |
---|---|
getMaxZoom() | Int |
var zoom = Map.getMaxZoom();
# getMinZoom
获得地图最小显示级别。
函数 | 返回值 |
---|---|
getMinZoom() | Int |
var zoom = Map.getMinZoom();
# getZoom
获得地图当前显示级别。
函数 | 返回值 |
---|---|
getZoom() | Int |
var zoom = Map.getZoom();
# getZoomScale
获得对应级别地图显示比例尺。
函数 | 返回值 |
---|---|
getZoomScale(zoom) | Double |
参数 | 类型 | 说明 |
---|---|---|
zoom | int | 地图显示的瓦片的层级编号 |
var scale = Map.getZoomScale(9);
# pauseLayersAnimation
暂停播放图层动画。
函数 | 返回值 |
---|---|
pauseLayersAnimation() | Null |
var roi = pie.Geometry.Polygon([
[
[
121.39569077003858,
39.321525470976724
],
[
121.95838538332868,
39.321525470976724
],
[
121.95838538332868,
38.969949379129645
],
[
121.39569077003858,
38.969949379129645
],
[
121.39569077003858,
39.321525470976724
]
]
], null);
//研究区域
Map.addLayer(roi, {color: "red", fillColor:"00000000"}, "roi");
Map.centerObject(roi, 8);
var layers = [];
var vis = {
min:0,
max:0.3,
bands: ["B4","B3","B2"]
};
for (var year=2013; year<=2021; year++) {
//加载Landsat 8 SR
var l8Col = pie.ImageCollection("LC08/02/SR")
.filterDate(year+"-01-01", year+"-12-31")
.filterBounds(roi)
.filter(pie.Filter.lte('cloud_cover', 10));
var image = l8Col.select(["B4","B3","B2"]).median().clip(roi);
image = image.select(["B4","B3","B2"]).multiply(0.0000275).subtract(0.2);
layers.push({
layer: image,
name: year.toString(),
style: vis
})
}
//动画显示
Map.playLayersAnimation(layers, 1, -1);
function clickPauseBtn() {
Map.pauseLayersAnimation();
}
var pause = ui.Button({
label: "暂停",
type: "info",
onClick: clickPauseBtn,
});
print(pause);
# pauseAnimation
暂停播放指定的矢量动画。
函数 | 返回值 |
---|---|
pauseAnimation(info) | Null |
参数 | 类型 | 说明 |
---|---|---|
info | Object | 播放的动画返回的参数 |
//控制动画
var point = [116.416, 39.911];
var info;
Map.animatePulsing({
icon: "airport-15",
point: point,
duration: 2,
radius: 30,
loop: -1,
callFunc: function(data) {
info = data;
}
});
var btn1 = ui.Button({
label: "暂停",
type: "warning",
onClick: function() {
Map.pauseAnimation(info)
}
})
var btn2 = ui.Button({
label: "启动",
type: "success",
onClick: function() {
Map.restartAnimation(info)
}
})
var btn3 = ui.Button({
label: "删除",
type: "error",
onClick: function() {
Map.removeAnimation(info)
}
})
print(btn1);
print(btn2);
print(btn3);
# percentile
创建一个Reducer来计算指定的百分比,例如给定[0,50,100]将产生名为“p0”、“p50”和“p100”的输出,分别具有最小值、中值和最大值的含义。
函数 | 返回值 |
---|---|
percentile(percentiles, outputNames) | Reducer |
参数 | 类型 | 说明 |
---|---|---|
percentiles | Array | 计算百分比的数字列表,数字范围从0到100,例如:[0, 50, 100] |
outputNames | Array | 输出的名称列表,可以忽略或设置为null来获取默认名称 |
//选择影像集合
var image = pie.Image("LC08/01/T1/LC08_121031_20181019").select(['B4', 'B5']);
//设置指定区域
var geometry = pie.Geometry.Polygon([[
[
119.86992966731788,
41.70662213762725
],
[
120.7568919467418,
41.70662213762725
],
[
120.7568919467418,
41.08232587372922
],
[
119.86992966731788,
41.08232587372922
],
[
119.86992966731788,
41.70662213762725
]
]], null);
//统计计算指定区域geometry中对应的百分比的值
var result = image.reduceRegion(pie.Reducer.percentile([0, 50, 100], ["min", "median", "max"]), geometry, 500);
//输出计算结果
print("result", result);
# playLayersAnimation
播放生成的图层动画。
函数 | 返回值 |
---|---|
playLayersAnimation(data,time,loop,callFunc) | Null |
参数 | 类型 | 说明 |
---|---|---|
data | Object | 动画数据 |
time | Number | 动画循环时间 |
loop | Number | 动画循环次数,-1是无限循环 |
callFunc | Function | 动画每一帧回调方法,回调方法返回参数有两个,分别是:图层名称 name 和 当前帧的索引 index. |
方法一:
var roi = pie.Geometry.Polygon([
[
[
121.39569077003858,
39.321525470976724
],
[
121.95838538332868,
39.321525470976724
],
[
121.95838538332868,
38.969949379129645
],
[
121.39569077003858,
38.969949379129645
],
[
121.39569077003858,
39.321525470976724
]
]
], null);
//研究区域
Map.addLayer(roi, {color: "red", fillColor:"00000000"}, "roi");
Map.centerObject(roi, 8);
var layerNames = [];
var vis = {
min:0,
max:0.3,
bands: ["B4","B3","B2"]
};
for (var year=2013; year<=2021; year++) {
//加载Landsat 8 SR
var l8Col = pie.ImageCollection("LC08/02/SR")
.filterDate(year+"-01-01", year+"-12-31")
.filterBounds(roi)
.filter(pie.Filter.lte('cloud_cover', 10));
var image = l8Col.select(["B4","B3","B2"]).median().clip(roi)
image = image.select(["B4","B3","B2"]).multiply(0.0000275).subtract(0.2);
Map.addLayer(image, vis, year.toString(), false);
layerNames.push(year.toString());
}
var label = ui.Label("")
label = label.setStyle({
backgroundColor: "white"
})
Map.addUI(label);
//动画显示
Map.playLayersAnimation(layerNames, 1, -1, function(name, index) {
label = label.setValue("2013-2021年影像变化:"+name+"年");
});
方法二:
var roi = pie.Geometry.Polygon([
[
[
121.39569077003858,
39.321525470976724
],
[
121.95838538332868,
39.321525470976724
],
[
121.95838538332868,
38.969949379129645
],
[
121.39569077003858,
38.969949379129645
],
[
121.39569077003858,
39.321525470976724
]
]
], null);
//研究区域
Map.addLayer(roi, {color: "red", fillColor:"00000000"}, "roi");
Map.centerObject(roi, 8);
var layers = [];
var vis = {
min:0,
max:0.3,
bands: ["B4","B3","B2"]
};
for (var year=2013; year<=2021; year++) {
//加载Landsat 8 SR
var l8Col = pie.ImageCollection("LC08/02/SR")
.filterDate(year+"-01-01", year+"-12-31")
.filterBounds(roi)
.filter(pie.Filter.lte('cloud_cover', 10));
var image = l8Col.select(["B4","B3","B2"]).median().clip(roi);
image = image.select(["B4","B3","B2"]).multiply(0.0000275).subtract(0.2);
layers.push({
layer: image,
name: year.toString(),
style: vis
})
}
var label = ui.Label("")
label = label.setStyle({
backgroundColor: "white"
})
Map.addUI(label);
//动画显示
Map.playLayersAnimation(layers, 1, -1, function(name, index) {
label = label.setValue("2013-2021年影像变化:"+name+"年");
});
# removeAnimation
移除指定的矢量动画。
函数 | 返回值 |
---|---|
removeAnimation(info) | Null |
参数 | 类型 | 说明 |
---|---|---|
info | Object | 播放的动画返回的参数 |
//控制动画
var point = [116.416, 39.911];
var info;
Map.animatePulsing({
icon: "airport-15",
point: point,
duration: 2,
radius: 30,
loop: -1,
callFunc: function(data) {
info = data;
}
});
var btn1 = ui.Button({
label: "暂停",
type: "warning",
onClick: function() {
Map.pauseAnimation(info)
}
})
var btn2 = ui.Button({
label: "启动",
type: "success",
onClick: function() {
Map.restartAnimation(info)
}
})
var btn3 = ui.Button({
label: "删除",
type: "error",
onClick: function() {
Map.removeAnimation(info)
}
})
print(btn1);
print(btn2);
print(btn3);
# removeLayer
根据addLayer
返回的图层key移除指定的图层
函数 | 返回值 |
---|---|
removeLayer(key) | Null |
参数 | 类型 | 说明 |
---|---|---|
key | String | 由addLayer返回的图层key |
var image = pie.Image("LC08/02/SR/LC08_124032_20210407")
.select(["B4", "B3", "B2"])
.multiply(0.0000275).subtract(0.2);
var vis = {
min: 0,
max: 0.3,
bands: ["B4", "B3", "B2"]
};
Map.centerObject(image, 6);
var key = Map.addLayer(image, vis, "image");
print(key);
Map.removeLayer(key);
# removeLayersAnimation
永久移除图层动画。
函数 | 返回值 |
---|---|
removeLayersAnimation() | Null |
var roi = pie.Geometry.Polygon([
[
[
121.39569077003858,
39.321525470976724
],
[
121.95838538332868,
39.321525470976724
],
[
121.95838538332868,
38.969949379129645
],
[
121.39569077003858,
38.969949379129645
],
[
121.39569077003858,
39.321525470976724
]
]
], null);
//研究区域
Map.addLayer(roi, {color: "red", fillColor:"00000000"}, "roi");
Map.centerObject(roi, 8);
var layers = [];
var vis = {
min:0,
max:0.3,
bands: ["B4","B3","B2"]
};
for (var year=2013; year<=2021; year++) {
//加载Landsat 8 SR
var l8Col = pie.ImageCollection("LC08/02/SR")
.filterDate(year+"-01-01", year+"-12-31")
.filterBounds(roi)
.filter(pie.Filter.lte('cloud_cover', 10));
var image = l8Col.select(["B4","B3","B2"]).median().clip(roi);
image = image.select(["B4","B3","B2"]).multiply(0.0000275).subtract(0.2);
layers.push({
layer: image,
name: year.toString(),
style: vis
})
}
//动画显示
Map.playLayersAnimation(layers, 1, -1);
function clickRemoveBtn() {
Map.pauseLayersAnimation();
}
var remove = ui.Button({
label: "移除",
type: "error",
onClick: clickRemoveBtn,
});
print(remove);
# removeUI
移除地图上的UI组件。
函数 | 返回值 |
---|---|
removeUI(ui) | Null |
参数 | 类型 | 说明 |
---|---|---|
ui | UI | 指定的UI组件 |
var btn = ui.Button({
label: "确定",
type: "success"
})
Map.addUI(btn);
Map.removeUI(btn);
# restartAnimation
重新播放暂停的矢量动画。
函数 | 返回值 |
---|---|
restartAnimation(info) | Null |
参数 | 类型 | 说明 |
---|---|---|
info | Object | 播放的动画返回的参数 |
//控制动画
var point = [116.416, 39.911];
var info;
Map.animatePulsing({
icon: "airport-15",
point: point,
duration: 2,
radius: 30,
loop: -1,
callFunc: function(data) {
info = data;
}
});
var btn1 = ui.Button({
label: "暂停",
type: "warning",
onClick: function() {
Map.pauseAnimation(info)
}
})
var btn2 = ui.Button({
label: "启动",
type: "success",
onClick: function() {
Map.restartAnimation(info)
}
})
var btn3 = ui.Button({
label: "删除",
type: "error",
onClick: function() {
Map.removeAnimation(info)
}
})
print(btn1);
print(btn2);
print(btn3);
# restartLayersAnimation
重新启动播放图层动画。
函数 | 返回值 |
---|---|
restartLayersAnimation() | Null |
var roi = pie.Geometry.Polygon([
[
[
121.39569077003858,
39.321525470976724
],
[
121.95838538332868,
39.321525470976724
],
[
121.95838538332868,
38.969949379129645
],
[
121.39569077003858,
38.969949379129645
],
[
121.39569077003858,
39.321525470976724
]
]
], null);
//研究区域
Map.addLayer(roi, {color: "red", fillColor:"00000000"}, "roi");
Map.centerObject(roi, 8);
var layers = [];
var vis = {
min:0,
max:0.3,
bands: ["B4","B3","B2"]
};
for (var year=2013; year<=2021; year++) {
//加载Landsat 8 SR
var l8Col = pie.ImageCollection("LC08/02/SR")
.filterDate(year+"-01-01", year+"-12-31")
.filterBounds(roi)
.filter(pie.Filter.lte('cloud_cover', 10));
var image = l8Col.select(["B4","B3","B2"]).median().clip(roi);
image = image.select(["B4","B3","B2"]).multiply(0.0000275).subtract(0.2);
layers.push({
layer: image,
name: year.toString(),
style: vis
})
}
//动画显示
Map.playLayersAnimation(layers, 1, -1);
function clickRestartBtn() {
Map.restartLayersAnimation();
}
var restart = ui.Button({
label: "重启",
type: "success",
onClick: clickRestartBtn,
});
print(restart);
# setCenter
设置地图中心显示。
函数 | 返回值 |
---|---|
setCenter(lon,lat,zoom) | Void |
参数 | 类型 | 说明 |
---|---|---|
lon | Double | 地图显示中心点的横坐标 |
lat | Double | 地图显示中心点的纵坐标 |
zoom | int | 地图显示的瓦片的层级编号 |
Map.setCenter(119.5, 33.2, 8);
# setZoom
设置地图显示级别。
函数 | 返回值 |
---|---|
setZoom(zoom) | Void |
参数 | 类型 | 说明 |
---|---|---|
zoom | int | 地图显示的瓦片的层级编号 |
visible | Boolean | 图层是否可见,默认不可见 |
Map.setZoom(8);
# stopLayersAnimation
永久停止播放图层动画。
函数 | 返回值 |
---|---|
stopLayersAnimation() | Null |
var roi = pie.Geometry.Polygon([
[
[
121.39569077003858,
39.321525470976724
],
[
121.95838538332868,
39.321525470976724
],
[
121.95838538332868,
38.969949379129645
],
[
121.39569077003858,
38.969949379129645
],
[
121.39569077003858,
39.321525470976724
]
]
], null);
//研究区域
Map.addLayer(roi, {color: "red", fillColor:"00000000"}, "roi");
Map.centerObject(roi, 8);
var layers = [];
var vis = {
min:0,
max:0.3,
bands: ["B4","B3","B2"]
};
for (var year=2013; year<=2021; year++) {
//加载Landsat 8 SR
var l8Col = pie.ImageCollection("LC08/02/SR")
.filterDate(year+"-01-01", year+"-12-31")
.filterBounds(roi)
.filter(pie.Filter.lte('cloud_cover', 10));
var image = l8Col.select(["B4","B3","B2"]).median().clip(roi);
image = image.select(["B4","B3","B2"]).multiply(0.0000275).subtract(0.2);
layers.push({
layer: image,
name: year.toString(),
style: vis
})
}
//动画显示
Map.playLayersAnimation(layers, 1, -1);
function clickStopBtn() {
Map.stopLayersAnimation();
}
var stop = ui.Button({
label: "停止",
type: "warning",
onClick: clickStopBtn,
});
print(stop);
# zoomIn
地图放大。
函数 | 返回值 |
---|---|
zoomIn() | Void |
Map.zoomIn();
# zoomOut
地图缩小。
函数 | 返回值 |
---|---|
zoomOut() | Void |
Map.zoomOut();
有问题,我来改改 (opens new window)
上次更新: 2022/05/25, 03:27:07