速來圍觀!中國版谷歌地球引擎 —PIE-Engine,橫空出世~

1、PIE-Engine介紹
工業(yè)革命以來,人口增長、城市化、工業(yè)化帶來的全球環(huán)境變化深刻影響著人類的福祉和生態(tài)安全,遙感技術(shù)由于具備長時間、大尺度、周期性、多樣化監(jiān)測地球表面的能力,已成為刻畫全球和區(qū)域變化的重要手段。近幾年來我國已發(fā)射多種不同系列的遙感衛(wèi)星,形成了多分辨率、多類型、高覆蓋度的海量遙感數(shù)據(jù)庫,而如何從這些數(shù)據(jù)資源中挖掘出有效的信息,為我國經(jīng)濟(jì)發(fā)展、生態(tài)保護(hù)和國防建設(shè)做出應(yīng)有貢獻(xiàn)是目前最為緊迫的事情。面對越來越多的遙感數(shù)據(jù),傳統(tǒng)手段已逐漸無法滿足人們信息高效化處理和服務(wù)的需求,而云計算、大數(shù)據(jù)、人工智能等新興IT技術(shù)為解決當(dāng)前數(shù)據(jù)的大規(guī)模自動化處理及智能信息提取提供了創(chuàng)新性的技術(shù)手段。因此從本質(zhì)上說,遙感云計算服務(wù)就是基于現(xiàn)代云計算架構(gòu),整合各種遙感數(shù)據(jù)、信息產(chǎn)品、處理技術(shù)與計算資源,通過網(wǎng)絡(luò)提供給用戶隨時隨地按需使用,解決遙感應(yīng)用中的數(shù)據(jù)、技術(shù)、設(shè)備和人員等難題,大幅度降低遙感應(yīng)用的成本和技術(shù)門檻,實現(xiàn)遙感技術(shù)在政府和公眾日常生活中的普及應(yīng)用。
美國Google公司的GEE歷經(jīng)十幾年發(fā)展,是目前世界上較為成熟的遙感云計算平臺,全球用戶達(dá)數(shù)百萬,在此領(lǐng)域已經(jīng)處于壟斷地位。隨著西方國家技術(shù)封鎖的進(jìn)一步升級,國內(nèi)用戶想正常使用GEE越來越難,這對于國內(nèi)遙感技術(shù)的發(fā)展產(chǎn)生了相當(dāng)大的負(fù)面影響。
航天宏圖信息技術(shù)股份有限公司(股票代碼:688066)成立于2008年,是國內(nèi)領(lǐng)先的遙感和北斗導(dǎo)航衛(wèi)星應(yīng)用服務(wù)商,致力于衛(wèi)星應(yīng)用軟件國產(chǎn)化、行業(yè)應(yīng)用產(chǎn)業(yè)化、應(yīng)用 服務(wù)商業(yè)化,研發(fā)并掌握了具有完全自主知識產(chǎn)權(quán)的PIE(Pixel Information Expert)系列產(chǎn)品和核心技術(shù),為政府、企業(yè)、高校以及其他有關(guān)部門提供基礎(chǔ)軟件產(chǎn)品、系統(tǒng)設(shè)計開發(fā)和數(shù)據(jù)分析應(yīng)用服務(wù)等空間信息應(yīng)用整體解決方案。公司于2019年7月在科創(chuàng)板上市,并且是首批科創(chuàng)板上市企業(yè)中唯一的遙感應(yīng)用企業(yè)。航天宏圖為打破國外技術(shù)壟斷與封鎖,自主研發(fā)了安全可控的開放式遙感云計算產(chǎn)品:PIE-Engine(Pixel Information Expert Engine,像素專家引擎)。PIE-Engine致力于加速我國自主可控遙感云計算服務(wù)的發(fā)展,是國內(nèi)唯一的在數(shù)據(jù)、算法以及算力方面能與GEE進(jìn)行對比的云計算產(chǎn)品,并且在國產(chǎn)衛(wèi)星數(shù)據(jù)服務(wù)方面獨具特色。PIE-Engine目前已經(jīng)實現(xiàn)了遙感數(shù)據(jù)按需獲取、按需運算以及專題信息聚焦服務(wù),初步滿足了對地觀測數(shù)據(jù)獲取能力飛速增長后帶來的信息高效化處理和服務(wù)需求。
從技術(shù)層面說,PIE-Engine是一套基于容器云技術(shù)構(gòu)建的面向地球科學(xué)領(lǐng)域的專業(yè)PaaS/SaaS遙感云計算服務(wù)平臺,內(nèi)部包含自動管理的彈性大數(shù)據(jù)環(huán)境,集成了多源遙感數(shù)據(jù)處理、分布式資源調(diào)度、實時計算、批量計算和深度學(xué)習(xí)框架等技術(shù),在此基礎(chǔ)上構(gòu)建了遙感/測繪專業(yè)處理平臺、遙感實時分析計算平臺、人工智能解譯平臺,為大眾用戶進(jìn)行大規(guī)模地理數(shù)據(jù)分析和科學(xué)研究提供了一體化的服務(wù)平臺。作為構(gòu)建在云計算之上的地理空間數(shù)據(jù)分析和計算平臺,PIE-Engine通過結(jié)合海量衛(wèi)星遙感影像以及地理要素數(shù)據(jù),用戶可以在任意尺度上研究算法模型并采取交互式編程驗證,實現(xiàn)快速探索地表特征,發(fā)現(xiàn)變化和趨勢,為大規(guī)模的地理數(shù)據(jù)分析和科學(xué)研究提供了免費、靈活和彈性的計算服務(wù)。
PIE-Engine主要特點:
⑴ 按需計算、動態(tài)分析,基于云端彈性算力實現(xiàn)大范圍、長時間序列遙感影像的高效快速計算與實時分析;
⑵ 提供PB級的海量免費遙感數(shù)據(jù),涵蓋覆蓋全球的光學(xué)影像數(shù)據(jù)、雷達(dá)影像數(shù)據(jù)、氣象數(shù)據(jù)、海洋數(shù)據(jù)、地球物理數(shù)據(jù)、矢量數(shù)據(jù)等共計80種數(shù)據(jù)集,包括美國的Landsat系列與MODIS系列及其相關(guān)產(chǎn)品、歐洲的哨兵1/2系列、日本的葵花8號數(shù)據(jù)以及國產(chǎn)的GF-1/2、FY-3D/4A、HY-1C/2A/2B等,平臺目前數(shù)據(jù)總量已達(dá)1.5PB,日數(shù)據(jù)更新量10-14TB;
⑶ 提供基于平臺開發(fā)的多種交互式應(yīng)用及SaaS底層支撐服務(wù),可通過標(biāo)準(zhǔn)Web協(xié)議將遙感數(shù)據(jù)和彈性算力無縫嵌入到行業(yè)業(yè)務(wù)系統(tǒng)中,實現(xiàn)遙感給行業(yè)賦能;
⑷ 內(nèi)置端到端的人工智能平臺,包含多種機(jī)器學(xué)習(xí)模型,可快速實現(xiàn)遙感處理與人工智能技術(shù)的結(jié)合,達(dá)到遙感數(shù)據(jù)到信息知識的自動轉(zhuǎn)化;
⑸ 支持30多種國內(nèi)外主流衛(wèi)星遙感數(shù)據(jù)的標(biāo)準(zhǔn)產(chǎn)品生產(chǎn),內(nèi)置近300種處理算法,可按用戶需求定制或編排生產(chǎn)流程;
⑹ 支持JavaScript、Python等開發(fā)語言,支持多種擴(kuò)展方式,滿足企業(yè)、科研人員、教育工作者等不同用戶的需求;
⑺ 采用微服務(wù)架構(gòu),靈活部署,可適應(yīng)公有云、私有云和混合云部署形態(tài)。
在線訪問地址:
https://engine.piesat.cn

2、北京市1985-2017年人口城鎮(zhèn)化
動態(tài)監(jiān)測
城鎮(zhèn)化是指隨著一個國家或地區(qū)社會生產(chǎn)力的發(fā)展、科學(xué)技術(shù)的進(jìn)步以及產(chǎn)業(yè)結(jié)構(gòu)的調(diào)整,其社會由以農(nóng)業(yè)為主的傳統(tǒng)鄉(xiāng)村型社會向以工業(yè)(第二產(chǎn)業(yè))和服務(wù)業(yè)(第三產(chǎn)業(yè))等非農(nóng)產(chǎn)業(yè)為主的現(xiàn)代城市型社會逐漸轉(zhuǎn)變的歷史過程。而城鎮(zhèn)化的概念也不盡相同,人口學(xué)把城鎮(zhèn)化定義為農(nóng)村人口轉(zhuǎn)化為城鎮(zhèn)人口的過程,地理學(xué)角度來看城鎮(zhèn)化是農(nóng)村地區(qū)或者自然區(qū)域轉(zhuǎn)變?yōu)槌鞘械貐^(qū)的過程,經(jīng)濟(jì)學(xué)上則是從經(jīng)濟(jì)模式和生產(chǎn)方式的角度來定義城鎮(zhèn)化,生態(tài)學(xué)認(rèn)為城鎮(zhèn)化過程就是生態(tài)系統(tǒng)的演變過程,社會學(xué)家從社會關(guān)系與組織變遷的角度定義城鎮(zhèn)化。
總的來說,城鎮(zhèn)化是經(jīng)濟(jì)和社會發(fā)展的必然趨勢,是社會進(jìn)步的重要標(biāo)志。工業(yè)化是推動一個國家實現(xiàn)現(xiàn)代化的重要引擎,而城鎮(zhèn)化是繼工業(yè)化之后拉動經(jīng)濟(jì)社會發(fā)展的最強(qiáng)大力量。100多年前,馬克思就指出:“現(xiàn)代化的歷史就是鄉(xiāng)村城鎮(zhèn)化的歷史?!边M(jìn)入21世紀(jì)的第二個十年之初,我國經(jīng)歷了兩個重大變化,一個是我國人均國民總收入為6100美元,已經(jīng)由“下中等收入”經(jīng)濟(jì)體轉(zhuǎn)變?yōu)椤吧现械仁杖搿苯?jīng)濟(jì)體。一個是我國城鎮(zhèn)常住人口在2011年超過農(nóng)村人口,城鎮(zhèn)化率達(dá)到51.27%。這兩個重大轉(zhuǎn)變出現(xiàn)的意義重大,昭示著我國社會經(jīng)濟(jì)發(fā)展進(jìn)入到由鄉(xiāng)村中國向城市中國轉(zhuǎn)變的經(jīng)濟(jì)社會和城鎮(zhèn)化發(fā)展的新階段。
目前,基于PIE-Engine可以快速的從城市建筑用地及人口總量變化兩個方面進(jìn)行分析,代碼運行時間能夠以“秒”來計算,極大提高了我們的工作效率。下面請看小編為大家分享的第一個應(yīng)用案例:


?示例代碼:
1./**?
2. * @File? ? :? ?基于PIE-Engine反演北京市1985-2017年人口城鎮(zhèn)化進(jìn)程?
3. * @Time? ? :? ?2021/1/1?
4. * @Author? :? ?Shiwei Li & Yangyang Liu?
5. * @Version :? ?1.0?
6. * @Contact :? ?400-890-0662?
7. * @License :? ?(C)Copyright 航天宏圖信息技術(shù)股份有限公司?
8. * @Desc? ? :? ?人口城鎮(zhèn)化應(yīng)用案例分享?
9. */??
10.??
11.//加載中國城市行政區(qū)劃邊界數(shù)據(jù)集??
12.var beijing = pie.FeatureCollection('NGCC/CHINA_PROVINCE_BOUNDARY')??
13.? ? ? ? ? ? ? ? ?.filter(pie.Filter.eq("name", "北京市"))??
14.? ? ? ? ? ? ? ? ?.getAt(0).geometr
15.//加載顯示矢量數(shù)據(jù)??
16.var vis = {color: "#fffd00", fillColor: "00000000", width: 1};??
17.Map.addLayer(beijing, vis, "北京市");??
18.//定位地圖中心??
19.Map.centerObject(beijing, 6);??
20.??
21.//加載城市建筑用地數(shù)據(jù)??
22.var img = pie.Image('user/101/public/Raster/UrbanFreq_1978_2017_Beijing')??
23.? ? ? ? ? ? ?.select("B1");??
24.//循環(huán)計算每年建筑用地總面積??
25.var areaInfo = {};??
26.var layerNames = [];??
27.for (var i = 33; i > 0; i--) {??
28.? ? ?var year = 2018 - i;??
29.? ? ?layerNames.push(
30.? Map.addLayer(img.updateMask(img.gte(i)), {palette: "FF0000"}, year + "");??
31. var areaImg = img.pixelArea().multiply(img.gte(i));??
32.? ? ?var data = areaImg.reduceRegion(pie.Reducer.sum(), beijing, null);??
33.? ? ?var area = data.getInfo().constant/1000000;??
34.? ? ?areaInfo[year + ""] = area;}??
35.//設(shè)定繪制折線圖的參數(shù)??
36.var xAxis = [];??
37.var series = [];??
38.for (var year = 1985; year <= 2017; year++) {??
39.? ? xAxis.push(year);??
40.? ? series.push(areaInfo[yea
41.//繪制北京市建筑用地面積時間序列變化曲線??
42.var line_options = {??
43.? ? title: '北京市1985年-2017年城鎮(zhèn)化進(jìn)度',??
44.? ? legend: ['建筑用地'],??
45.? ? xAxis: xAxis,??
46.? ? xAxisName: "年",??
47.? ? yAxisName: "平方公里",??
48.? ? series: [series],??
49.? ? chartType: "line"};??
50.//繪制折線圖??
51.ChartArray(line_options);??
52.Map.playLayersAnimation(layerNames, 0.5, 100);??
53.??
54.//輸入北京市每年人口總量??
55.series = [0981.0, 1028.0, 1047.0, 1061.0, 1075.0, 1086.0, 1094.0,??
56.? ? ? ? ? 1102.0, 1112.
57.? ? ? ? ? 1257.2, 1363.6, 1383.3, 1423.2, 1456.4, 1492.7, 1538.0,??
58.? ? ? ? ? 1581.0, 1633.0, 1695.0, 1755.0, 1961.9, 2018.6, 2069.3,??
59.? ? ? ? ? 2114.8, 2151.6, 2170.5, 2172.9, 2170.7];??
60.//繪制人口總量時序變化曲線??
61.line_options = {??
62.? ? title: '北京市1985年-2017年人口變化',??
63.? ? legend: ['人口'],??
64.? ? xAxis: xAxis,??
65.? ? xAxisName: "年",??
66.? ? yAxisName: "萬",??
67.? ? series: [series],??
68.? ? chartType: "line",??
69.? ? smooth: true??
70.};??
71.ChartAr
72.??
73.//設(shè)定圖例繪制參數(shù)??
74.var data = {??
75.? ? title: "城市人口",??
76.? ? colors: ['#FF0000'],??
77.? ? step: 1};??
78.var style = {??
79.? ? left: "60%",??
80.? ? top: "65%",??
81.? ? height: "60px",??
82.? ? width: "70px"};??
83.var legend = ui.Legend(data, style);??
84.Map.addUI(legend);
3、太湖水質(zhì)動態(tài)變化監(jiān)測
太湖是我國第三大淡水湖,地跨江浙兩省,水域面積達(dá)2338km2,平均水深2m左右。上世紀(jì)80年代以來,太湖水體營養(yǎng)化愈加嚴(yán)重,頻繁爆發(fā)的藍(lán)藻水華現(xiàn)象即為一種非常典型的二類水體(Case 2 Waters,光學(xué)性質(zhì)變化受浮游植物及其附屬物、外生的粒子和外生有色可溶有機(jī)物等其他物質(zhì)影響的水體)。懸浮物(Suspended Solids,懸浮在水中的固體物質(zhì),包括不溶于水的無機(jī)物、有機(jī)物及泥砂、黏土、微生物等)作為造成水體渾濁的主要影響因素,是衡量水體污染程度的重要指標(biāo)。利用遙感技術(shù)準(zhǔn)確獲取區(qū)域面狀水域懸浮物濃度信息,是遙感水質(zhì)參數(shù)監(jiān)測的一項重要任務(wù)。傳統(tǒng)的利用遙感手段監(jiān)測水質(zhì)的方法大多基于時序遙感影像及地表水質(zhì)監(jiān)測數(shù)據(jù)構(gòu)建地物信息模型來完成,但受限于本地設(shè)備存儲、運算能力的限制,當(dāng)前的監(jiān)測尺度已逐漸無法滿足日益提升的大尺度、長時序遙感應(yīng)用研究需求,且需要消耗大量人力物力和時間。接下來請看小編為大家分享的第二個應(yīng)用案例:
水體藍(lán)藻密度及渾濁度計算公式如下,其中,B3、B4、B5分別為綠光、紅光、近紅外波段的反射率。

3.1藍(lán)藻密度


示例代碼:
1./**?
2. * @File? ? :? ?基于PIE-Engine反演太湖2013-2020年水域藍(lán)藻密度變化情況?
3. * @Time? ? :? ?2021/1/1?
4. * @Author? :? ?Haoying Cui & Yangyang Liu?
5. * @Version :? ?1.0?
6. * @Contact :? ?400-890-0662?
7. * @License :? ?航天宏圖研究院云服務(wù)產(chǎn)品研發(fā)部?
8. * @Desc? ? :? ?水質(zhì)監(jiān)測應(yīng)用案例分享?
9. */??
10.??
11.//輸入太湖邊界矢量??
12.var taihu = pie.FeatureCollection('user/101/public/shape/TaiHuShuiYu')??
13.? ? ? ? ? ? ? ?.first()??
14.? ? ? ? ? ? ? ?.geometry();??
15.??
16.Map.centerObject(taihu, 8);??
17.
18.//加載Landsat 8 SR??
19.var ImGCol = pie.ImageCollection("LC08/01/T1_SR")??
20.? ? ? ? ? ? .filterDate("2013-01-01", "2021-01-01")??
21.? ? ? ? ? ? .filterBounds(taihu)??
22.? ? ? ? ? ? .filter(pie.Filter.lte('cloudCover', 5));??
23.//print(ImGCol.size());??
24.??
25.//設(shè)置圖層顯示屬性??
26.var visalg = {min: 200, max: 50000,??
27.? ? ? ? ? ? ? ? palette: ['040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6',
28.? ? ? ? ? ? ? ? ? ? ? ? ? '0602ff', '235cb1', '307ef3', '269db1', '30c8e2', '32d3ef',??
29.? ? ? ? ? ? ? ? ? ? ? ? ? '3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f',??
30.? ? ? ? ? ? ? ? ? ? ? ? ? 'fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d',??
31.? ? ? ? ? ? ? ? ? ? ? ? ? 'ff0000', 'de0101', 'c21301', 'a71001', '911003']};??
32.??
33.var count = ImGCol.size().getInfo();??
34.var dates = [];??
35.var alg_images = [];??
36.??
37.for(var index = 0; in
38.? ? ?var image = ImGCol.getAt(index).select(["B4", "B5"]).clip(taihu);??
39.? ? var date =image.get("date").getInfo();??
40.? ? var b4 = image.select("B4");??
41.? ? var b5 = image.select("B5");??
42.? ? //計算藍(lán)藻密度??
43.? ? var alg = ((((b5.divide(b4)).power(2)).multiply(1352)).subtract??
44.? ? ? ? ? ? ? ? ((b5.divide(b4)).multiply(159.08))).add(192.87);??
45.? ? //print("太湖水域藍(lán)藻密度", date, alg);??
46.? ? Map.addLayer(alg, visalg, date, true);??
47.? ? var alg_mean = alg.reduceRegion(pie.Reducer.mean(), taihu, 1);??
48.? ? //print("太湖水域藍(lán)藻密度平均值", date, alg_mean);??
49.? ? var alg_max = alg.reduceRegion(pie.Reducer.max(), taihu, 1);??
50.? ? //print("太湖水域藍(lán)藻密度最大值", date, alg_max);??
51.? ? var alg_min = alg.reduceRegion(pie.Reducer.min(), taihu, 1);??
52.? ? //print("太湖水域藍(lán)藻密度最小值", date, alg_min);??
53.? ? dates.push(date);??
54.? ? alg_images.push(alg_mean);??
55.};??
56.??
57.// 設(shè)置圖表屬性??
58.var line_a = {title: '太湖水
59.? ? ? ? ? ? ? ?legend: ['藍(lán)藻密度'],??
60.? ? ? ? ? ? ? xAxisName: "日期",??
61.? ? ? ? ? ? ? yAxisName: "藍(lán)藻密度(萬/L)",??
62.? ? ? ? ? ? ? chartType: "line",??
63.? ? ? ? ? ? ? yMin: 0,??
64.? ? ? ? ? ? ? yMax: 2500,??
65.? ? ? ? ? ? ? smooth: true};??
66.??
67.// 顯示折線圖??
68.ChartImage(alg_images, dates, line_a);??
69.??
70.//動畫顯示??
71.Map.playLayersAnimation(dates, 0.5, 100);??
72.??
73.// 圖例??
74.var data = {title: "藍(lán)藻密度",??
75.? ? ? ? ? ? ? ? colors: ['#040274', '#040281', '#0502a3', '#0502b8', '#0502ce', '#0502e6',??
76.? ? ? ? ? ? ? ? ? ? ?'#0602ff', '#235cb1', '#307ef3', '#269db1', '#30c8e2', '#32d3ef',??
77.? ? ? ? ? ? ? ? ? ? ?'#3be285', '#3ff38f', '#86e26f', '#3ae237', '#b5e22e', '#d6e21f',??
78.? ? ? ? ? ? ? ? ? ? ?'#fff705', '#ffd611', '#ffb613', '#ff8b13', '#ff6e08', '#ff500d',??
79.? ? ? ? ? ? ? ? ? ? ?'#ff0000', '#de0101', '#c21301', '#a71001', '#911003'],??
80.? ? ? ? ? ? labels: ["200(萬個/L)", "2000(萬個/L)"],??
81.? ? ? ? ? ? step: 30};??
82.??
83.??
84.var style = {??
85.? ? top
86.? ? left: "40%",??
87.? ? width: "350px",??
88.? ? height: "70px"??
89.};??
90.var legend = ui.Legend(data, style);??
91.Map.addUI(legend);
3.2渾濁度


示例代碼:
1./**?
2. * @File? ? :? ?基于PIE-Engine反演太湖2013-2020年水域渾濁度變化情況?
3. * @Time? ? :? ?2021/1/1?
4. * @Author? :? ?Haoying Cui & Yangyang Liu?
5. * @Version :? ?1.0?
6. * @Contact :? ?400-890-0662?
7. * @License :? ?航天宏圖研究院云服務(wù)產(chǎn)品研發(fā)部?
8. * @Desc? ? :? ?水質(zhì)監(jiān)測應(yīng)用案例分享?
9. */??
10.??
11.//輸入太湖邊界矢量??
12.var taihu = pie.FeatureCollection('user/101/public/shape/TaiHuShuiYu')??
13.? ? ? ? ? ? ? ?.first()??
14.? ? ? ? ? ? ? ?.geometry();??
15.??
16.Map.centerObject(taihu, 8);??
17.?
18.//加載Landsat 8 SR??
19.var ImGCol = pie.ImageCollection("LC08/01/T1_SR")??
20.? ? ? ? ? ? .filterDate("2013-01-01", "2021-01-01")??
21.? ? ? ? ? ? .filterBounds(taihu)??
22.? ? ? ? ? ? .filter(pie.Filter.lte('cloudCover', 5));??
23.//print(ImGCol.size());??
24.??
25.//設(shè)置水域預(yù)覽顏色組合??
26.var vistbd = {min: 100, max: 800,??
27.? ? ? ? ? ? ? palette: ['040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6',??
28.? ? ? ? ? ? ? ? ? ? ? ? '0602ff', '235cb1', '307ef3', '269db1',?
29.? ? ? ? ? ? ? ? ? ? ? ? '3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f',??
30.? ? ? ? ? ? ? ? ? ? ? ? 'fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d',??
31.? ? ? ? ? ? ? ? ? ? ? ? 'ff0000', 'de0101', 'c21301', 'a71001', '911003']};??
32.??
33.var count = ImGCol.size().getInfo();??
34.var dates = [];??
35.var tbd_images = [];??
36.for(var index = 0; index < count; index ++){??
37.? ? var image = ImGCol.getAt(index).select(["B4", "B3"]).clip(taihu);??
38.? ? ?var date = image.get("date").getInfo();??
39.? ? var b3 = image.select("B3");??
40.? ? var b4 = image.select("B4");??
41.? ? // 計算太湖水域渾濁度??
42.? ? var tbd = (((b4.subtract(b3)).divide(b4.add(b3)).power(2)).multiply(3117.4)).add??
43.? ? ? ? ? ? ? (((b4.subtract(b3)).divide(b4.add(b3)).power(2)).multiply(1083.6)).add(106.17);??
44.? ? //print("太湖水域渾濁度", date, tbd);??
45.? ? Map.addLayer(tbd, vistbd, date, true);??
46.? ? ?var tbd_mean = tbd . reduceRegion (pie.Reducer.mean(), taihu, 1);??
47.? ? //print("太湖水域渾濁度平均值", date, tbd_mean);??
48.? ? var tbd_max = tbd.reduceRegion(pie.Reducer.max(), taihu, 1);??
49.? ? //print("太湖水域渾濁度最大值", date, tbd_max);??
50.? ? var tbd_min = tbd.reduceRegion(pie.Reducer.min(), taihu, 1);??
51.? ? //print("太湖水域渾濁度最小值", date, tbd_min);??
52.? ? dates.push(date);??
53.? ? tbd_images.push(tbd_mean);??
54.};??
55.??
56.//設(shè)置圖表屬性??
57.var line_t = {title: '太湖水域渾濁度動態(tài)變化',??
58.? ? ? ? ? ? ? legend: ['渾濁度'],??
59.? ? ? ? ? ? ? xAxisName: "日期",??
60.? ? ? ? ? ? ? yAxisName: "渾濁度",??
61.? ? ? ? ? ? ? chartType: "line",??
62.? ? ? ? ? ? ? yMin: 0,??
63.? ? ? ? ? ? ? yMax: 400,??
64.? ? ? ? ? ? ? smooth: true};??
65.??
66.//顯示折線圖??
67.ChartImage(tbd_images, dates, line_t);??
68.??
69.//動畫顯示??
70.Map.playLayersAnimation(dates, 0.5, 100);??
71.??
72.//圖例??
73.var data = {title: "渾濁度",??
74.? ? ? ?colors: ['#040274', '#040281', '#0502a3', '#0502b8', '#0502ce', '#0502e6',??
75.? ? ? ? ? ? ? ? ? ? ?'#0602ff', '#235cb1', '#307ef3', '#269db1', '#30c8e2', '#32d3ef',??
76.? ? ? ? ? ? ? ? ? ? ?'#3be285', '#3ff38f', '#86e26f', '#3ae237', '#b5e22e', '#d6e21f',??
77.? ? ? ? ? ? ? ? ? ? ?'#fff705', '#ffd611', '#ffb613', '#ff8b13', '#ff6e08', '#ff500d',??
78.? ? ? ? ? ? ? ? ? ? ?'#ff0000', '#de0101', '#c21301', '#a71001', '#911003'],??
79.? ? ? ? ? ? labels: ["清澈", "輕度渾濁", "中度渾濁", "重度渾濁"
80.? ? ? ? ? ? step: 30};
81.??
82.var style = {top: "75%",??
83.? ? ? ? ? ? ?left: "40%",??
84.? ? ? ? ? ? ?width: "350px",??
85.? ? ? ? ? ? ?height: "70px"};??
86.??
87.var legend = ui.Legend(data, style);??
88.Map.addUI(legend);?