
#冲刺创作新星#PIE-Engine凉州火灾边界 原创
这里我们利用凉山州作为火灾边界,同样可以切换我们所需要的区域,可以切换省级代码来进行,需要手动修改。这里我们用到的swith 和case的案例条件判断分析,
语法
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}
实例
显示今天的星期名称。请注意 Sunday=0, Monday=1, Tuesday=2, 等等:
var d=new Date().getDay();
switch (d)
{
case 0:x=“今天是星期日”;
break;
case 1:x=“今天是星期一”;
break;
case 2:x=“今天是星期二”;
break;
case 3:x=“今天是星期三”;
break;
case 4:x=“今天是星期四”;
break;
case 5:x=“今天是星期五”;
break;
case 6:x=“今天是星期六”;
break;
}
这里面所需的函数:
ui.DateSelect(type,placeholder,value,onChange,disabled,style)
时间选择。
方法参数:
- ui(ui)
调用者:ui对象。
- type(String)
日期选择类型,可选值为date|daterange|year|month|datetime|datetimerange。
- placeholder(String)
占位符内容。
- value(String|List)
选择具体的日期,格式为:yyyy-MM-dd|yyyy-MM-dd HH:mm:ss
- onChange(Function)
更新选择日期触发事件。
- disabled(Boolean)
是否禁用日期组件。
- style(Object)
组件样式。
返回值:ui.DateSelect
这里同样可以导出影像:
image(image,description,assetId,pyramidingPolicy,dimensions,region,scale,crs,crsTransform,maxPixels)
导出影像到个人存储空间。
方法参数:
- export(Export)
Export方法。
- image(Image)
要导出的影像。
- description(String, optional)
导出影像任务的描述。
- assetId(String, optional)
导出影像的存储路径。
- pyramidingPolicy(Object, optional)
金字塔规则。
- dimensions(Int, optional)
维度。
- region(Geometry, optional)
导出影像的范围。
- scale(Float, optional)
缩放比例,目前默认都是1。
- crs(Projection, optional)
投影的基准坐标参考系,暂指定为EPSG:4326或EPSG:3857参考系。
- crsTransform(List, optional)
投影坐标系变换值的列表。
- maxPixels(Long, optional)
要导出的最大像素数。
返回值:null
这个代码的还有提升的结果,如果要发布成为APP,那么就不太容易改变我们的研究区,因为在APP中没有code editor的界面,同样此APP的影像导出结果如果要下载,并没有出现在面板上。
代码:
* @Name : 凉山州火灾高发地异常度分析系统
* @Author : 西南大学天生一队
* @Source : 航天宏图第四届 “航天宏图杯”PIE软件二次开发大赛云开发组三等奖获奖作品
*/
//定义程序运行过程需要用到的变量
var date = ["2018-03-20", "2018-04-20"]; //开始日期和结束日期
var mapID = null; //当前图层ID
var maplegend = null; //当前图层图例ID
var roiID = null; //当前研究范围ID
var selectTag = "LST"; //选择的计算项目
var areaCode = "0"; //行政区划代码,默认为0
var roi = null; //研究区,在程序运行时动态变化
var default_roi = null; //默认研究区,凉山州
var sec_year = 2018; //要显示TVDI变化图的年份
var animationlayerID = []; //如果显示了动态图,则用此数组记录动态图的图层ID
var currentImg = null; //当前图层所对应的影像,导出时使用
var exportScale = 500; //导出分辨率
//获得凉山州矢量
roi = pie
.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY")
.filter(pie.Filter.eq("name", "凉山彝族自治州"))
.getAt(0)
.geometry();
default_roi = roi; //将默认研究区设置为凉山彝族自治州
//设置渲染样式(默认拉伸渲染,参数为最小值为最大值)
function setVis(minvalue, maxvalue) {
var newVis = {
min: minvalue,
max: maxvalue,
palette: [
"217303",
"268303",
"2a9203",
"2fa203",
"33b203",
"37c203",
"3bd203",
"40e203",
"44f203",
"4bfc09",
"56fd18",
"6dfe37",
"79fe47",
"8cff05",
"98ff04",
"a5fe04",
"b1fe03",
"befe02",
"cbfe02",
"d7fd02",
"e3fc02",
"effb02",
"faf802",
"f9eb02",
"f7dd03",
"f6cf03",
"f5c203",
"f4b503",
"f3a803",
"f29b04",
"f18e04",
"f08104",
"ef7404",
"ee6804",
"ed5b05",
"ec4f05",
"eb4305",
"e93705",
"e82b05",
"e72006",
"e61406",
"e50906",
],
};
return newVis;
}
//按顺序输入影像集,起始时间、结束时间,要提取的波段名,研究区矢量【仅限单个波段提取】
function loadCol(nameCol, start, end, bandname, roi) {
var rCol = pie
.ImageCollection(nameCol)
.filterDate(start, end)
.filterBounds(roi)
.select(bandname)
.mean()
.clip(roi);
return rCol;
}
//更改行政区划后调用的函数
function getROI(code) {
var new_roi = null;
if (code !== 0) {
var fCol = pie.FeatureCollection("NGCC/CHINA_PROVINCE_BOUNDARY");
new_roi = fCol
.filter(pie.Filter.eq("code", parseInt(code)))
.first()
.geometry();
} else {
new_roi = default_roi;
}
return new_roi;
}
//下载landsat8影像
function l8Col_load(start, end) {
var l8Col = pie
.ImageCollection("LC08/01/T1")
.filterDate(start, end)
.select(["B2", "B3", "B4", "B5", "B6", "BQA"])
.filterBounds(roi)
.map(function (image) {
var qa = image.select("BQA");
var cloudMask = qa.bitwiseAnd(1 << 3).eq(0);
return image.updateMask(cloudMask);
});
return l8Col;
}
//定义Landsat8不同指数计算方式
var landsat8 = {
//NDWI: (B03 - B05)/(B03 + B05)
NDWI: function (image) {
var b3 = image.select("B3");
var b5 = image.select("B5");
var ndvi = b3.subtract(b5).divide(b3.add(b5));
return ndvi.rename("NDVI");
},
//MNDWI: (G - SWIR)/(G + SWIR)
MNDWI: function (image) {
var b3 = image.select("B3");
var b6 = image.select("B6");
var ndvi = b3.subtract(b6).divide(b3.add(b6));
return ndvi.rename("MNDWI");
},
//NDVI: (B05 - B04)/(B05 + B04)
NDVI: function (image) {
var b5 = image.select("B5");
var b4 = image.select("B4");
var ndvi = b5.subtract(b4).divide(b5.add(b4));
return ndvi.rename("NDVI");
},
//EVI: 2.5*(B05 - B04) / (B05 + 6*B04 - 7.5*B02 + 1)
EVI: function (image) {
var nir = image.select("B5").divide(10000);
var red = image.select("B4").divide(10000);
var blue = image.select("B2").divide(10000);
var evi = nir
.subtract(red)
.multiply(2.5)
.divide(nir.add(red.multiply(6)).subtract(blue.multiply(7.5)).add(1));
return evi.rename("EVI");
},
};
//点击“确定”按钮后调用的计算函数,用于计算选择的指标
function calcuate(roi, startDate, endDate, tag) {
//影像集合
var l8Col = pie.ImageCollection("LC08/01/T1");
//通过日期过滤影像集合,并计算
l8Col = l8Col
.filterDate(startDate, endDate)
.select(["B2", "B3", "B4", "B5", "B6", "BQA"])
.filterBounds(roi)
.map(function (image) {
var qa = image.select("BQA");
var cloudMask = qa.bitwiseAnd(1 << 4).eq(0);
return image.updateMask(cloudMask);
});
var image = null;
var vis = null;
switch (tag) {
case "LST":
image = loadCol("USGS/MOD11A1/006", date[0], date[1], "LST_Day_1km", roi)
.multiply(0.02)
.subtract(273.15);
vis = setVis(0, 40);
addLegend("地表温度(°C)", [10, 20, 30, 40]);
break;
case "NDVI":
image = l8Col.map(landsat8.NDVI).mean().clip(roi);
vis = setVis(-0.2, 0.8);
addLegend("NDVI Value", ["0", "0.6"]);
break;
case "NDWI":
image = l8Col.map(landsat8.NDWI).mean().clip(roi);
vis = setVis(-1, 0.3);
addLegend("NDWI Value", ["-0.8", "0.1"]);
break;
case "MNDWI":
image = l8Col.map(landsat8.MNDWI).mean().clip(roi);
vis = setVis(-1, 0.3);
addLegend("MNDWI Value", ["-0.8", "0.1"]);
break;
case "EVI":
image = l8Col.map(landsat8.EVI).mean().clip(roi);
vis = setVis(-0.2, 0.8);
addLegend("EVI Value", ["0", "0.6"]);
break;
case "TVDI": //调用TVDI数据产品
image = loadCol("BNU/GLOBAL_1KM_TVDI", date[0], date[1], "B1", roi);
image = image.divide(10000);
vis = setVis(0, 1);
addLegend("TVDI Value(0~1)", ["0.25", "0.75"]);
break;
case "火点": //调用MODIS数据产品
image = loadCol("USGS/MOD14A2/006", date[0], date[1], "FireMask", roi);
vis = setVis(3, 8);
addLegend("置信等级", ["<3", 4, 5, 6, 7, 8]);
break;
}
if (mapID !== null) {
Map.removeLayer(mapID); //如果有图层ID则将其移除,保证只有1个图层显示
}
mapID = Map.addLayer(image, vis, tag);
currentImg = image;
}
//添加图例样式的函数,作用在于计算的项目发生改变时动态调整图例,参数:1)titile:string;2)labels:object[]
function addLegend(title, labels) {
var data = {
title: title,
colors: [
"#217303",
"#268303",
"#2a9203",
"#2fa203",
"#33b203",
"#37c203",
"#3bd203",
"#40e203",
"#44f203",
"#4bfc09",
"#56fd18",
"#6dfe37",
"#79fe47",
"#8cff05",
"#98ff04",
"#a5fe04",
"#b1fe03",
"#befe02",
"#cbfe02",
"#d7fd02",
"#e3fc02",
"#effb02",
"#faf802",
"#f9eb02",
"#f7dd03",
"#f6cf03",
"#f5c203",
"#f4b503",
"#f3a803",
"#f29b04",
"#f18e04",
"#f08104",
"#ef7404",
"#ee6804",
"#ed5b05",
"#ec4f05",
"#eb4305",
"#e93705",
"#e82b05",
"#e72006",
"#e61406",
"#e50906",
],
labels: labels,
step: 30,
};
var style = {
right: "150px",
bottom: "10px",
height: "70px",
width: "350px",
};
if (maplegend !== null) {
Map.removeUI(maplegend); //如果存在图例则将其移除,保证只有一个图例
}
maplegend = ui.Legend(data, style);
Map.addUI(maplegend);
}
//导出当前图层所对应的影像
function exportCurrentMap(img, description, roi, scale) {
if (currentImg !== null && animationlayerID.length == 0) {
Export.image({
image: img,
description: description,
region: roi,
scale: scale,
});
print("导出成功!");
} else {
print("当前图层为空或图层不唯一!");
}
}
//根据年份计算每个月的TVDI,并显示折线图。TVDI值越大,土壤湿度越低,反之土壤湿度越高
function calculateTVDI(start, end) {
var img = pie
.ImageCollection("BNU/GLOBAL_1KM_TVDI")
.filterDate(start, end)
.select("B1")
.filterBounds(roi)
.mean()
.clip(roi)
.divide(10000);
return img;
}
function showTVDI(year) {
var month = [
"-01",
"-02",
"-03",
"-04",
"-05",
"-06",
"-07",
"-08",
"-09",
"-10",
"-11",
"-12",
];
var day = [
"-31",
"-28",
"-31",
"-30",
"-31",
"-30",
"-31",
"-31",
"-30",
"-31",
"-30",
"-31",
];
var data = [];
for (var i = 0; i < 12; i++) {
var t1 = calculateTVDI(year + month[i] + "-01", year + month[i] + day[i]);
var t2 = t1.reduceRegion(pie.Reducer.mean(), roi, 1000);
data.push(t2);
}
var line_a = {
title: year + "年TVDI变化",
legend: ["TVDI"],
xAxisName: "月份",
yAxisName: "TVDI值",
chartType: "line",
yMin: 0,
yMax: 1,
smooth: true,
};
// 显示折线图
var mark = [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
];
ChartImage(data, mark, line_a);
}
//显示某年动态图的函数
function showAnimation(year) {
var month = [
"-01",
"-02",
"-03",
"-04",
"-05",
"-06",
"-07",
"-08",
"-09",
"-10",
"-11",
"-12",
];
var day = [
"-31",
"-28",
"-31",
"-30",
"-31",
"-30",
"-31",
"-31",
"-30",
"-31",
"-30",
"-31",
];
var data = [];
if (mapID !== null) {
Map.removeLayer(mapID);
}
if (animationlayerID.length > 0) {
for (var i = 0; i < animationlayerID.length; i++) {
Map.removeLayer(animationlayerID[i]);
}
animationlayerID = [];
}
switch (selectTag) {
case "TVDI":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = calculateTVDI(start, end);
var map = Map.addLayer(
img,
setVis(0, 1),
year + month[i] + "TVDI",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "TVDI");
}
addLegend("TVDI Value(0~1)", ["0.25", "0.75"]);
break;
case "LST":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = loadCol("USGS/MOD11A1/006", start, end, "LST_Day_1km", roi)
.multiply(0.02)
.subtract(273.15);
var map = Map.addLayer(
img,
setVis(0, 40),
year + month[i] + "LST",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "LST");
}
addLegend("地表温度(°C)", [10, 20, 30, 40]);
break;
case "火点":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = loadCol("USGS/MOD14A2/006", start, end, "FireMask", roi);
var map = Map.addLayer(
img,
setVis(3, 8),
year + month[i] + "火点",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "火点");
}
addLegend("置信等级", ["<3", 4, 5, 6, 7, 8]);
break;
case "NDVI":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = l8Col_load(start, end).map(landsat8.NDVI).mean().clip(roi);
var map = Map.addLayer(
img,
setVis(-0.2, 0.8),
year + month[i] + "NDVI",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "NDVI");
}
addLegend("NDVI Value", ["0", "0.6"]);
break;
case "NDWI":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = l8Col_load(start, end).map(landsat8.NDWI).mean().clip(roi);
var map = Map.addLayer(
img,
setVis(-1, 0.3),
year + month[i] + "NDWI",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "NDWI");
}
addLegend("NDWI Value", ["-0.8", "0.1"]);
break;
case "MNDWI":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = l8Col_load(start, end).map(landsat8.MNDWI).mean().clip(roi);
var map = Map.addLayer(
img,
setVis(-1, 0.3),
year + month[i] + "MNDWI",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "MNDWI");
}
addLegend("MNDWI Value", ["-0.8", "0.1"]);
break;
case "EVI":
for (var i = 0; i < 12; i++) {
var img = null;
var start = year + month[i] + "-01";
var end = year + month[i] + day[i];
img = l8Col_load(start, end).map(landsat8.EVI).mean().clip(roi);
var map = Map.addLayer(
img,
setVis(-0.2, 0.8),
year + month[i] + "EVI",
false
);
animationlayerID.push(map);
data.push(year + month[i] + "EVI");
}
addLegend("EVI Value", ["0", "0.6"]);
break;
}
Map.playLayersAnimation(data, 1, -1); //动图间隔时间1秒,无限次循环。
}
Map.centerObject(roi, 5); //将地图中心转到研究范围
/* -------------------------以下代码是控件的布局以及事件的绑定等参数设置----------------------------- */
function funDateSelect(value) {
date[0] = value[0];
date[1] = value[1];
}
var dateSelect = ui.DateSelect({
type: "daterange",
placeholder: "请输入数值",
value: ["2018-03-20", "2018-04-20"],
onChange: funDateSelect,
disabled: false,
});
function changeSelect(value) {
selectTag = value;
}
var select1 = ui.Select({
items: ["LST", "TVDI", "火点", "NDVI", "NDWI", "MNDWI", "EVI"],
placeholder: "请选择",
value: selectTag,
multiple: false,
onChange: changeSelect,
});
var selectIndex = ui.Label("选择项目:");
var selectPanel = ui.Panel({
widgets: [selectIndex, select1],
layout: ui.Layout.flow("horizontal"),
});
function inputArea(value) {
areaCode = value;
roi = getROI(areaCode);
}
var textBox3 = ui.TextBox({
placeholder: "请输入行政区划编码",
value: areaCode,
onChange: inputArea,
disabled: false,
});
var textboxName3 = ui.Label("更改行政区划(省级):");
var txtPanel1 = ui.Panel({
widgets: [textboxName3, textBox3],
layout: ui.Layout.flow("horizontal"),
});
var selecDateLabel = ui.Label("选择日期范围:");
var txtPanel2 = ui.Panel({
widgets: [selecDateLabel, dateSelect],
layout: ui.Layout.flow("horizontal"),
});
//点击“确定”按钮调用的函数
function click_BtnOK() {
print("当前计算项目:", selectTag + "," + date[0] + "~" + date[1]);
//调用计算函数计算选择的指标添加到地图
calcuate(roi, date[0], date[1], selectTag);
if (animationlayerID.length > 0) {
for (var i = 0; i < animationlayerID.length; i++) {
Map.removeLayer(animationlayerID[i]);
}
animationlayerID = [];
}
}
var btnOK = ui.Button({
label: "确定",
type: "success",
onClick: click_BtnOK,
style: { left: "50px" },
});
function click_btnExport() {
exportCurrentMap(
currentImg,
date[0] + "-" + date[1] + selectTag,
roi,
exportScale
);
}
var btnExport = ui.Button({
label: "导出当前图层",
type: "success",
onClick: click_btnExport,
style: { left: "50px" },
});
function changeScale(value) {
exportScale = value;
}
var select2 = ui.Select({
items: [30, 50, 100, 200, 500, 1000, 2000],
placeholder: "请选择",
value: exportScale,
multiple: false,
onChange: changeScale,
});
var selectPanel2 = ui.Panel({
widgets: [ui.Label("选择导出分辨率(米):"), select2],
layout: ui.Layout.flow("horizontal"),
});
function click_btnMonthly() {
showAnimation(sec_year);
}
var btnMonthly = ui.Button({
label: "显示当前指标每月动态图",
type: "success",
onClick: click_btnMonthly,
style: { left: "10px" },
});
function click_showBtn() {
//画出选择的年份TVDI变化图
showTVDI(sec_year);
}
var btnShow = ui.Button({
label: "显示TVDI变化折线图",
type: "success",
onClick: click_showBtn,
style: { left: "10px" },
});
var btnPanel1 = ui.Panel({
widgets: [btnOK, btnExport],
layout: ui.Layout.flow("horizontal"),
});
function inputYear(value) {
sec_year = value;
}
var txtBoxyear = ui.TextBox({
placeholder: "请输入年份",
value: sec_year,
onChange: inputYear,
disabled: false,
});
var labelyear = ui.Label("输入年份:");
var txtPanel3 = ui.Panel({
widgets: [labelyear, txtBoxyear],
layout: ui.Layout.flow("horizontal"),
});
var btnPanel2 = ui.Panel({
widgets: [btnShow, btnMonthly],
layout: ui.Layout.flow("horizontal"),
});
var panel = ui.Panel({
widgets: [
ui.Label("凉山彝族自治州火灾异常监测", { "font-size": "18px" }),
ui.Label(
"默认区域为凉山彝族自治州,若想更换区域请输入行政区代码(省级),若输入0则为默认区域",
{ "font-size": "18px" }
),
selectPanel,
txtPanel1,
txtPanel2,
btnPanel1,
selectPanel2,
txtPanel3,
btnPanel2,
],
style: {
width: "400px",
height: "500px",
backgroundColor: "#fff",
},
});
ui.root.add(panel);
/* 以上是网页上的整体框架布局*/
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
- 174.
- 175.
- 176.
- 177.
- 178.
- 179.
- 180.
- 181.
- 182.
- 183.
- 184.
- 185.
- 186.
- 187.
- 188.
- 189.
- 190.
- 191.
- 192.
- 193.
- 194.
- 195.
- 196.
- 197.
- 198.
- 199.
- 200.
- 201.
- 202.
- 203.
- 204.
- 205.
- 206.
- 207.
- 208.
- 209.
- 210.
- 211.
- 212.
- 213.
- 214.
- 215.
- 216.
- 217.
- 218.
- 219.
- 220.
- 221.
- 222.
- 223.
- 224.
- 225.
- 226.
- 227.
- 228.
- 229.
- 230.
- 231.
- 232.
- 233.
- 234.
- 235.
- 236.
- 237.
- 238.
- 239.
- 240.
- 241.
- 242.
- 243.
- 244.
- 245.
- 246.
- 247.
- 248.
- 249.
- 250.
- 251.
- 252.
- 253.
- 254.
- 255.
- 256.
- 257.
- 258.
- 259.
- 260.
- 261.
- 262.
- 263.
- 264.
- 265.
- 266.
- 267.
- 268.
- 269.
- 270.
- 271.
- 272.
- 273.
- 274.
- 275.
- 276.
- 277.
- 278.
- 279.
- 280.
- 281.
- 282.
- 283.
- 284.
- 285.
- 286.
- 287.
- 288.
- 289.
- 290.
- 291.
- 292.
- 293.
- 294.
- 295.
- 296.
- 297.
- 298.
- 299.
- 300.
- 301.
- 302.
- 303.
- 304.
- 305.
- 306.
- 307.
- 308.
- 309.
- 310.
- 311.
- 312.
- 313.
- 314.
- 315.
- 316.
- 317.
- 318.
- 319.
- 320.
- 321.
- 322.
- 323.
- 324.
- 325.
- 326.
- 327.
- 328.
- 329.
- 330.
- 331.
- 332.
- 333.
- 334.
- 335.
- 336.
- 337.
- 338.
- 339.
- 340.
- 341.
- 342.
- 343.
- 344.
- 345.
- 346.
- 347.
- 348.
- 349.
- 350.
- 351.
- 352.
- 353.
- 354.
- 355.
- 356.
- 357.
- 358.
- 359.
- 360.
- 361.
- 362.
- 363.
- 364.
- 365.
- 366.
- 367.
- 368.
- 369.
- 370.
- 371.
- 372.
- 373.
- 374.
- 375.
- 376.
- 377.
- 378.
- 379.
- 380.
- 381.
- 382.
- 383.
- 384.
- 385.
- 386.
- 387.
- 388.
- 389.
- 390.
- 391.
- 392.
- 393.
- 394.
- 395.
- 396.
- 397.
- 398.
- 399.
- 400.
- 401.
- 402.
- 403.
- 404.
- 405.
- 406.
- 407.
- 408.
- 409.
- 410.
- 411.
- 412.
- 413.
- 414.
- 415.
- 416.
- 417.
- 418.
- 419.
- 420.
- 421.
- 422.
- 423.
- 424.
- 425.
- 426.
- 427.
- 428.
- 429.
- 430.
- 431.
- 432.
- 433.
- 434.
- 435.
- 436.
- 437.
- 438.
- 439.
- 440.
- 441.
- 442.
- 443.
- 444.
- 445.
- 446.
- 447.
- 448.
- 449.
- 450.
- 451.
- 452.
- 453.
- 454.
- 455.
- 456.
- 457.
- 458.
- 459.
- 460.
- 461.
- 462.
- 463.
- 464.
- 465.
- 466.
- 467.
- 468.
- 469.
- 470.
- 471.
- 472.
- 473.
- 474.
- 475.
- 476.
- 477.
- 478.
- 479.
- 480.
- 481.
- 482.
- 483.
- 484.
- 485.
- 486.
- 487.
- 488.
- 489.
- 490.
- 491.
- 492.
- 493.
- 494.
- 495.
- 496.
- 497.
- 498.
- 499.
- 500.
- 501.
- 502.
- 503.
- 504.
- 505.
- 506.
- 507.
- 508.
- 509.
- 510.
- 511.
- 512.
- 513.
- 514.
- 515.
- 516.
- 517.
- 518.
- 519.
- 520.
- 521.
- 522.
- 523.
- 524.
- 525.
- 526.
- 527.
- 528.
- 529.
- 530.
- 531.
- 532.
- 533.
- 534.
- 535.
- 536.
- 537.
- 538.
- 539.
- 540.
- 541.
- 542.
- 543.
- 544.
- 545.
- 546.
- 547.
- 548.
- 549.
- 550.
- 551.
- 552.
- 553.
- 554.
- 555.
- 556.
- 557.
- 558.
- 559.
- 560.
- 561.
- 562.
- 563.
- 564.
- 565.
- 566.
- 567.
- 568.
- 569.
- 570.
- 571.
- 572.
- 573.
- 574.
- 575.
- 576.
- 577.
- 578.
- 579.
- 580.
- 581.
- 582.
- 583.
- 584.
- 585.
- 586.
- 587.
- 588.
- 589.
- 590.
- 591.
- 592.
- 593.
- 594.
- 595.
- 596.
- 597.
- 598.
- 599.
- 600.
- 601.
- 602.
- 603.
- 604.
- 605.
- 606.
- 607.
- 608.
- 609.
- 610.
- 611.
- 612.
- 613.
- 614.
- 615.
- 616.
- 617.
- 618.
- 619.
- 620.
- 621.
- 622.
- 623.
- 624.
- 625.
- 626.
- 627.
- 628.
- 629.
- 630.
- 631.
- 632.
- 633.
- 634.
- 635.
- 636.
- 637.
- 638.
- 639.
- 640.
- 641.
- 642.
- 643.
- 644.
- 645.
- 646.
- 647.
- 648.
- 649.
- 650.
- 651.
- 652.
- 653.
- 654.
- 655.
- 656.
- 657.
- 658.
- 659.
- 660.
- 661.
- 662.
- 663.
- 664.
- 665.
- 666.
- 667.
- 668.
- 669.
- 670.
- 671.
- 672.
- 673.
- 674.
- 675.
- 676.
- 677.
- 678.
- 679.
- 680.
- 681.
- 682.
- 683.
- 684.
- 685.
- 686.
- 687.
- 688.
- 689.
- 690.
- 691.
结果:
微信扫码分享
