亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Hadoop的氣象大數(shù)據(jù)分析GIS平臺(tái)設(shè)計(jì)與試驗(yàn)

        2019-02-15 07:24:52馮仲科孫素芬程文生

        李 濤 馮仲科 孫素芬 程文生

        (1.北京林業(yè)大學(xué)精準(zhǔn)林業(yè)北京市重點(diǎn)實(shí)驗(yàn)室, 北京 100083; 2.北京市農(nóng)林科學(xué)院農(nóng)業(yè)科技信息研究所, 北京 100097)

        0 引言

        海量的氣象數(shù)據(jù)可以通過(guò)物聯(lián)網(wǎng)天氣傳感器設(shè)備或者網(wǎng)絡(luò)爬蟲(chóng)收集,這些數(shù)據(jù)生成源以連續(xù)的方式生成大量數(shù)據(jù)[1-3],這種氣候數(shù)據(jù)大多是傳統(tǒng)數(shù)據(jù)處理工具和技術(shù)無(wú)法處理的結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)[4-6]。傳統(tǒng)數(shù)據(jù)挖掘算法和統(tǒng)計(jì)方法難以存儲(chǔ)并處理這類(lèi)數(shù)據(jù)[7-9],氣候數(shù)據(jù)需要一個(gè)可擴(kuò)展的分布式框架來(lái)存儲(chǔ)和處理,并在季節(jié)性氣候中獲得更有意義的變化信息[10-11]。雖然國(guó)內(nèi)外有許多氣候氣象WebGIS數(shù)據(jù)管理分析系統(tǒng),但由于氣象站和計(jì)量中心在不間斷地產(chǎn)生新的實(shí)時(shí)數(shù)據(jù),這些數(shù)據(jù)在傳統(tǒng)WebGIS平臺(tái)中是無(wú)法進(jìn)行存儲(chǔ)與計(jì)算的[12-15]。因此,需要可擴(kuò)展的分布式地理空間WebGIS系統(tǒng)來(lái)分析和利用氣象數(shù)據(jù)[16]。本文結(jié)合Hadoop的分布式計(jì)算和存儲(chǔ)技術(shù)、地理信息系統(tǒng)相關(guān)技術(shù)、數(shù)據(jù)庫(kù)技術(shù),以實(shí)際需要的設(shè)計(jì)要求,實(shí)現(xiàn)氣象地理信息的采集、篩選、儲(chǔ)存、分析、顯示應(yīng)用等功能,采用瀏覽器端進(jìn)行數(shù)據(jù)的展示與分析。

        1 平臺(tái)設(shè)計(jì)

        1.1 氣象大數(shù)據(jù)獲取與分析方法

        氣象地理信息主要包括氣象屬性信息以及對(duì)應(yīng)的地理空間信息。隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,如今可以利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)抓取相關(guān)的網(wǎng)絡(luò)平臺(tái)數(shù)據(jù),通過(guò)篩選所需要的數(shù)據(jù)并轉(zhuǎn)換為云計(jì)算可用的數(shù)據(jù)結(jié)構(gòu),便可以積累海量的可進(jìn)行分布式計(jì)算的氣象地理信息數(shù)據(jù)。

        通過(guò)網(wǎng)絡(luò)爬蟲(chóng)或者物聯(lián)網(wǎng)天氣傳感器設(shè)備獲取到的海量氣象地理信息數(shù)據(jù)大多是非結(jié)構(gòu)化的文本格式數(shù)據(jù),也可以通過(guò)其他方式獲取可以用于氣象分析與展示的柵格影像。這些數(shù)據(jù)一般是TB級(jí)以上的數(shù)據(jù)量,由于硬件資源限制,在單機(jī)環(huán)境下是無(wú)法進(jìn)行處理或存儲(chǔ)的[17-21]。為了解決海量氣象數(shù)據(jù)的存儲(chǔ)問(wèn)題,通常情況下是將數(shù)據(jù)分配到多個(gè)操作系統(tǒng)管理磁盤(pán)中,但是該種方式不便于工作人員的管理和維護(hù),因此迫切需要一種能夠同時(shí)管理多臺(tái)機(jī)器上文件的分布式文件管理系統(tǒng)[22-25]。

        分布式文件管理系統(tǒng)種類(lèi)很多,但是所有的系統(tǒng)都是基于一次寫(xiě)入、多次查詢的情況,不支持并發(fā)與寫(xiě)入情況,本文采用Hadoop體系下開(kāi)源的分布式文件管理系統(tǒng)HDFS,其采用主從架構(gòu)來(lái)管理文件,即由一個(gè)名稱節(jié)點(diǎn)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)組成了一個(gè)分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)集群。名稱節(jié)點(diǎn)的作用為:負(fù)責(zé)客戶端請(qǐng)求和響應(yīng);元數(shù)據(jù)的管理,包括查詢和修改。數(shù)據(jù)節(jié)點(diǎn)的作用為:存儲(chǔ)管理用戶文件塊數(shù)據(jù);定期向名稱節(jié)點(diǎn)匯報(bào)自身所持有的塊信息,即通過(guò)心跳信息上報(bào)自身情況。

        在海量氣象數(shù)據(jù)的分析計(jì)算方面,傳統(tǒng)單節(jié)點(diǎn)WebGIS系統(tǒng)通過(guò)擴(kuò)展到集群來(lái)分布式運(yùn)行,將極大地增加程序的復(fù)雜度和開(kāi)發(fā)難度,因此本文引入一個(gè)分布式運(yùn)算程序的MapReduce編程框架,其核心功能是將用戶編寫(xiě)的業(yè)務(wù)邏輯代碼和自帶默認(rèn)組件整合成一個(gè)完整的分布式運(yùn)算程序,并發(fā)運(yùn)行在服務(wù)器集群上。開(kāi)發(fā)人員可以將絕大部分工作集中到業(yè)務(wù)邏輯開(kāi)發(fā)上,而將分布式計(jì)算中的復(fù)雜度交由框架來(lái)處理[26-27]。

        1.2 系統(tǒng)平臺(tái)架構(gòu)設(shè)計(jì)

        本系統(tǒng)基于Hadoop生態(tài)體系進(jìn)行搭建,包括數(shù)據(jù)獲取層、云計(jì)算層、云存儲(chǔ)層和前端顯示層。數(shù)據(jù)獲取層的數(shù)據(jù)來(lái)源于網(wǎng)絡(luò)爬蟲(chóng)爬取的氣象數(shù)據(jù)[28]或者物聯(lián)網(wǎng)天氣傳感器設(shè)備中采集的數(shù)據(jù)。云存儲(chǔ)層、云計(jì)算層分別是Hadoop的分布式存儲(chǔ)框架HDFS和分布式計(jì)算框架MapReduce,主要功能是將當(dāng)前的海量空間數(shù)據(jù)進(jìn)行統(tǒng)一格式化處理,并將其存入到分布式文件系統(tǒng)中,通過(guò)并行處理框架可以對(duì)包含空間屬性的氣象數(shù)據(jù)進(jìn)行大數(shù)據(jù)量的快速分布式計(jì)算得到分析結(jié)果。前端顯示層則是利用Cesium進(jìn)行三維可視化展現(xiàn)。整個(gè)平臺(tái)結(jié)構(gòu)如圖1所示。

        圖1 平臺(tái)結(jié)構(gòu)Fig.1 Platform structure

        1.2.1數(shù)據(jù)獲取模塊

        從物聯(lián)網(wǎng)天氣傳感器設(shè)備獲取數(shù)據(jù),或利用網(wǎng)絡(luò)爬蟲(chóng)抓取氣象相關(guān)網(wǎng)頁(yè)來(lái)獲取相關(guān)數(shù)據(jù)。利用爬蟲(chóng)WebDriver和PhantomJs技術(shù)相應(yīng)接口對(duì)得到的網(wǎng)頁(yè)內(nèi)容進(jìn)行解析,進(jìn)而獲取需要的氣象地理信息。由于得到的信息很多雜亂無(wú)章,為了獲取真實(shí)需要的信息數(shù)據(jù),在獲取元素信息后,還需要利用正則表達(dá)式對(duì)這些屬性信息進(jìn)行篩選判別,同時(shí)進(jìn)行格式統(tǒng)一處理,最后將輸出后的數(shù)據(jù)以GeoJson或者其他文本格式合并保存。

        1.2.2云存儲(chǔ)模塊

        由于HDFS平臺(tái)不適合管理小文件,所以首先對(duì)采集到的大量小文件進(jìn)行合并。

        小文件合并有以下3種方式:①在采集數(shù)據(jù)時(shí),將小文件合并為大文件再上傳至HDFS。②在業(yè)務(wù)處理之前,使用HDFS上的MapReduce程序?qū)π∥募M(jìn)行合并。③在利用MapReduce處理小文件時(shí),采用conbineInputFormat提高效率。

        1.2.3云計(jì)算分析模塊

        由MapReduce的工作流程可知,Hadoop下的空間數(shù)據(jù)并行操作共需要6個(gè)步驟:

        (1)MapReduce程序啟動(dòng)時(shí),最先啟動(dòng)的是MRAppMaster(MapReduce程序啟動(dòng)節(jié)點(diǎn)),MRAppMaster啟動(dòng)后根據(jù)本次作業(yè)的描述信息,計(jì)算出需要的Map任務(wù)實(shí)例數(shù)量,然后向集群申請(qǐng)啟動(dòng)相應(yīng)數(shù)量的Map任務(wù)進(jìn)程。

        (2)利用客戶指定的輸入格式來(lái)獲取RecordReader并讀取數(shù)據(jù),形成輸入鍵值對(duì)。

        (3)將輸入鍵值對(duì)傳遞給客戶定義的Map方法,做邏輯運(yùn)算,并將Map方法輸出的鍵值對(duì)收集到緩存中。

        (4)將緩存中的鍵值對(duì)按照鍵值分區(qū)排序后不斷溢寫(xiě)到磁盤(pán)文件中。

        (5)MRAppMaster監(jiān)控到所有Map任務(wù)完成后,根據(jù)客戶指定的參數(shù)啟動(dòng)相應(yīng)數(shù)量的Reduce任務(wù)進(jìn)程,并告知Reduce任務(wù)進(jìn)程要處理的數(shù)據(jù)范圍,進(jìn)行數(shù)據(jù)分區(qū)。

        (6)Reduce任務(wù)進(jìn)程啟動(dòng)之后,根據(jù)MRAppMaster告知的待處理數(shù)據(jù)所在位置,從若干臺(tái)運(yùn)行Map任務(wù)的機(jī)器上獲取若干個(gè)輸出結(jié)果文件,并在本地進(jìn)行重新歸并排序,然后按照相同鍵值的鍵值對(duì)為一個(gè)組,調(diào)用客戶定義的Reduce方法進(jìn)行邏輯運(yùn)算,并收集運(yùn)算輸出的結(jié)果鍵值對(duì),然后調(diào)用客戶指定的輸出個(gè)數(shù)將結(jié)果數(shù)據(jù)輸出到外部存儲(chǔ),通過(guò)空間數(shù)據(jù)轉(zhuǎn)換接口將結(jié)果保存成GeoJson類(lèi)型數(shù)據(jù)并存儲(chǔ)在各個(gè)HDFS節(jié)點(diǎn)中,整個(gè)并行操作過(guò)程就此結(jié)束。

        氣象數(shù)據(jù)計(jì)算流程圖如圖2所示。

        圖2 氣象數(shù)據(jù)計(jì)算流程圖Fig.2 Flow chart of weather data calculation

        1.2.4海量氣象數(shù)據(jù)結(jié)構(gòu)

        由于云計(jì)算需要的數(shù)據(jù)類(lèi)型應(yīng)該是非格式化的數(shù)據(jù),地理信息常用的格式shp或者dbf都是格式化數(shù)據(jù),因此不滿足云計(jì)算的數(shù)據(jù)要求。在地理空間非格式化數(shù)據(jù)中,GeoJson基于Json(Javascript 對(duì)象簡(jiǎn)譜),數(shù)據(jù)以鍵值對(duì)的形式進(jìn)行存儲(chǔ),可以充分滿足這種數(shù)據(jù)結(jié)構(gòu)要求,也符合開(kāi)放地理空間信息聯(lián)盟(OGC)標(biāo)準(zhǔn)。另一方面,在前端進(jìn)行三維可視化時(shí),通過(guò)AJAX(異步 Javascript和XML)也可以很方便地使用這種格式。GeoJson數(shù)據(jù)的geometry屬性中的type字段包含了點(diǎn)、線、面、多點(diǎn)、多線、多面等常用的地理信息系統(tǒng)幾何類(lèi)型,因此本研究采用GeoJson作為Hadoop中的分布式存儲(chǔ)管理格式。示例數(shù)據(jù)中具有地理實(shí)體的唯一標(biāo)識(shí)符號(hào)id、地理實(shí)體坐標(biāo)信息coordinates、地理實(shí)體的氣象屬性信息數(shù)組properties等。其數(shù)據(jù)格式為:{

        "type": "FeatureCollection",

        "totalFeatures": 1376,∥要素?cái)?shù)量合計(jì)

        "features": [{

        "type": "Feature",∥要素類(lèi)型

        "id": "china_air_quality20171216_0.1",∥要素編號(hào)

        "geometry": {∥幾何屬性

        "type": "Point",∥幾何類(lèi)型為點(diǎn)狀要素

        "coordinates": [116.366, 39.8673]∥要素的經(jīng)緯度坐標(biāo)},

        "geometry_name": "the_geom",

        "properties": {∥要素的屬性表

        "監(jiān)測(cè)點(diǎn)編碼": "1001A","監(jiān)測(cè)點(diǎn)名稱": "YN001","經(jīng)度": 116.366,"緯度": 39.8673,"日期": 20161216,"時(shí)間": 0,"AQI": 41,"PM2_5": 14,"PM2_5_24h": 46,"PM10": 41,"PM10_24h": 41,"SO2": 1,"SO2_24h": 6,"NO2": 7,"NO2_24h": 32,"O3": 60,"O3_24h": 63,"O3_8h": 59,"O3_8h_24h": 60,"CO": 0.2,"CO_24h": 0.7}

        },...],

        "crs": {"type": "name",

        "properties":{"name":"urn:ogc:def:crs:EPSG::4326"}}}

        本文使用網(wǎng)絡(luò)爬蟲(chóng)爬取的氣象數(shù)據(jù)包括逐日監(jiān)測(cè)點(diǎn)編碼、監(jiān)測(cè)點(diǎn)名稱、經(jīng)緯度、獲取日期、AQI、PM2.5含量、PM10含量、SO2含量、NO2含量、O3含量、CO含量、氣溫、降水量、相對(duì)濕度、日照時(shí)數(shù)等參數(shù)。使用的數(shù)據(jù)為從爬取的數(shù)據(jù)中篩選出的2016年云南省氣象臺(tái)站歷史數(shù)據(jù)。

        2 平臺(tái)試驗(yàn)

        系統(tǒng)代碼編寫(xiě)工具為Ecplise,版本為Mars。使用Maven作為項(xiàng)目管理構(gòu)建工具。

        2.1 海量氣象數(shù)據(jù)網(wǎng)絡(luò)爬蟲(chóng)

        獲取PhantomJSDriver的工具類(lèi)實(shí)例代碼如下

        public static WebDriver getPhantomJs() {

        String osname=System.getProperties().getProperty("os.name");

        if (osname.equals("Linux")) {

        System.setProperty("phantomjs.binary.path", "/usr/bin/phantomjs");

        } else {

        System.setProperty("phantomjs.binary.path", "./phantomjs/win/phantomjs.exe");}

        DesiredCapabilities=DesiredCapabilities.phantomjs();

        desiredCapabilities.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");

        desiredCapabilities.setCapability("phantomjs.page.customHeaders.User-Agent", "Mozilla/5.0 (Windows NT 6.3; Win64;x64;rv:50.0)Gecko/20100101 Firefox/50.0");

        if (Constant.isProxy) {

        org.openqa.selenium.Proxy proxy=new org.openqa.selenium.Proxy(); proxy.setProxyType(org.openqa.selenium.Proxy.ProxyType.MANUAL);

        proxy.setAutodetect(false);

        String proxyStr="";

        do {

        proxyStr=ProxyUtil.getProxy();

        } while (proxyStr.length()==0);

        proxy.setHttpProxy(proxyStr);

        desiredCapabilities.setCapability(CapabilityType.PROXY, proxy);

        }

        return new PhantomJSDriver(desiredCapabilities);

        }try{

        WebDriver=PhantomJsUtil.getPhantomJs();

        webDriver.get(url);

        SleepUtil.sleep(Constant.SEC_5);

        PhantomJsUtil.screenshot(webDriver);

        WebDriverWait wait=new WebDriverWait(webDriver, 10);

        wait.until(ExpectedConditions.presenceOfElementLocated(By.id(inputId)));

        Document=Jsoup.parse(webDriver.getPageSource());

        }finally{

        if (webDriver != null) {

        webDriver.quit();}}

        2.2 氣象大數(shù)據(jù)云計(jì)算

        針對(duì)海量影像數(shù)據(jù)的存儲(chǔ),利用HDFS技術(shù)對(duì)2TB左右容量的全球柵格地圖進(jìn)行分節(jié)點(diǎn)管理。對(duì)于海量文本格式的氣象地理信息數(shù)據(jù),利用MapReduce框架實(shí)現(xiàn)分布式計(jì)算功能以及云南省空氣質(zhì)量監(jiān)測(cè)站點(diǎn)空間位置及其氣象參數(shù)的快速查詢展示。

        2.2.1集群部署

        Linux環(huán)境下Centos版本為7.4,Hadoop版本為Hadoop3.0,JDK版本為Java 1.8_161。本次試驗(yàn)采用8個(gè)服務(wù)器節(jié)點(diǎn)組成的集群。配置8個(gè)節(jié)點(diǎn)的IP地址、機(jī)器名稱以及其代表的角色、網(wǎng)絡(luò)配置,如表1所示。

        表1 集群各節(jié)點(diǎn)地址及其角色Tab.1 Cluster node addresses and their roles

        在Master節(jié)點(diǎn)上的hosts文件中添加集群中各節(jié)點(diǎn)的主機(jī)名和IP地址。安裝jdk1.8環(huán)境、Hadoop3.0環(huán)境到名稱節(jié)點(diǎn)并遠(yuǎn)程復(fù)制到其余7個(gè)數(shù)據(jù)節(jié)點(diǎn)上。在數(shù)據(jù)節(jié)點(diǎn)上修改Hadoop目錄下的/etc/hadoop/workers為數(shù)據(jù)節(jié)點(diǎn)的機(jī)器名稱。最后配置Hadoop集群環(huán)境:①core-site.xml是Hadoop的核心配置文件,這里需要配置兩個(gè)屬性,fs.default.name配置Hadoop的HDFS系統(tǒng)的名稱,位置為主機(jī)的9000端口。hadoop.tmp.dir配置Hadoop的臨時(shí)目錄根位置。②hdfs-site.xml是HDFS的配置文件,dfs.http.address配置HDFS的http訪問(wèn)位置,dfs.replication配置文件塊的副本數(shù),一般不大于從機(jī)的個(gè)數(shù)。③配置文件mapred-site.xml是MapReduce任務(wù)的配置,由于hadoop2.x使用了Yarn框架,所以要實(shí)現(xiàn)分布式部署,必須在mapreduce.framework.name屬性下配置為Yarn。其中mapred.map.tasks和mapred.reduce.tasks分別為Map和Reduce的任務(wù)數(shù)。④配置節(jié)點(diǎn)yarn-site.xml,該文件為Yarn框架的配置,為一些任務(wù)的啟動(dòng)位置。

        為了方便集群的維護(hù),Hadoop自帶了一個(gè)歷史服務(wù)器,可以通過(guò)歷史服務(wù)器查看已經(jīng)運(yùn)行完的MapReduce作業(yè)記錄,比如用了多少個(gè)Map或者Reduce、作業(yè)提交時(shí)間、作業(yè)啟動(dòng)時(shí)間、作業(yè)完成時(shí)間等信息。默認(rèn)情況下,Hadoop歷史服務(wù)器是沒(méi)有啟動(dòng)的,可以通過(guò)/hadoop-3.0.0/sbin/mr-jobhistory-daemon.sh start historyserver命令來(lái)啟動(dòng)Hadoop歷史服務(wù)器。這樣就可以訪問(wèn)主機(jī)的19888端口,查看已經(jīng)運(yùn)行完的氣象數(shù)據(jù)分析作業(yè)情況。

        2.2.2MapReduce分布式計(jì)算代碼

        (1)Map階段代碼

        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

        String line=value.toString();

        String year=line.substring(15, 19);

        int airTemperature;

        if(line.charAt(14)=='+' )

        {airTemperature=Integer.parseInt(line.substring(11, 12));}

        else{

        airTemperature=Integer.parseInt(line.substring(15, 16));}

        String temperature= line.substring(19, 21); if(airTemperature != MISSING && temperature.matches("[01459]"))

        { context.write(new Text(year), new IntWritable(airTemperature));}}

        (2)Reduce階段代碼

        public void reduce(Text key, Iterable〈IntWritable〉 values, Context context) throws IOException, InterruptedException {

        int minValue=Integer.MAX_VALUE;

        for(IntWritable value:values)

        {minValue=Math.min(minValue, value.get()); } context.write(key, new IntWritable(minValue));}

        MapReduce程序的運(yùn)行步驟為:?jiǎn)?dòng)HDFS和Yarn,然后在集群中的任意一臺(tái)服務(wù)器上啟動(dòng)執(zhí)行程序[hadoop@lt mapreduce]$ hadoop jarhadoop-mapreduce-gis.jar geojson/ncep1979-2017.gz/geojson/out。

        2.3 基于Cesium的三維可視化

        采用Cesium框架的三維可視化進(jìn)行前端結(jié)果展示,實(shí)現(xiàn)如下功能:①海量矢量格式數(shù)據(jù)的查詢渲染展示,利用Cesium的Entity來(lái)實(shí)現(xiàn)任意渲染,有諸多點(diǎn)、線、面渲染形式可供選擇,點(diǎn)擊可查看管理其屬性,也可以利用字段模糊查詢得到結(jié)果,使用Cesium的Infobox模塊可以實(shí)現(xiàn),最終以三維可視化的方式展示給用戶。②發(fā)布分布式文件系統(tǒng)中的影像地圖為Geoserver地圖服務(wù),并加載顯示。③利用Ceisum調(diào)用OpenStreetMap的開(kāi)源興趣點(diǎn)(POI)搜索庫(kù),實(shí)現(xiàn)氣象站點(diǎn)的搜索定位功能。④利用AJAX技術(shù)調(diào)用Geoserver的Web 地圖要素服務(wù)(WFS)、Web地圖服務(wù)(WMS)、地理標(biāo)記語(yǔ)言服務(wù)(GML),可以獲取并發(fā)布通過(guò)云計(jì)算分析得到的矢量數(shù)據(jù)、元數(shù)據(jù)、圖例等信息,用于動(dòng)態(tài)展示。⑤空間分析功能,在查詢輸入框內(nèi)輸入需求可以獲得最終的分析結(jié)果,并且疊加在三維地球上以圖形的形式展示。⑥利用Cesium實(shí)現(xiàn)常用的測(cè)量、標(biāo)繪等功能。⑦其他輔助性功能,如地圖縮放功能支持底圖顯示18個(gè)級(jí)別,點(diǎn)擊三維底圖上的矢量數(shù)據(jù)實(shí)體可以提取出該實(shí)體的所有氣象相關(guān)屬性信息并展示在右上角的小窗口中??梢暬缑嫒鐖D3所示。

        圖3 氣象數(shù)據(jù)三維可視化界面Fig.3 3D visualization interface of meteorological data

        Cesium三維可視化渲染代碼如下

        function ShowAttribute(attribute) {

        viewer.entities.removeAll();

        var coordinate;

        var attributeSizeArray=[];

        for (var i=0; i < shp_data.length; i++) {

        attributeSizeArray.push(shp_data[i].properties[attribute]);

        }

        var minattributeSize=attributeSizeArray.min();

        var maxattributeSize=attributeSizeArray.max();

        for ( var i=0; i < shp_data.length; i++) {

        ∥判斷該屬性如果是負(fù)數(shù),則改為正數(shù),并且渲染為柱狀圖

        var size=((shp_data[i].properties[attribute]-minattributeSize)/(maxattributeSize-minattributeSize)) *100;

        ∥ alert(maxattributeSize);

        if (shp_data[i].geometry.type == "Point") {

        ∥ alert(shp_data[i].geometry.type);

        coordinate=shp_data[i].geometry.coordinates;

        ∥ alert(coordinate);

        }

        if (shp_data[i].geometry.type == "MultiPolygon") {

        ∥ alert(shp_data[i].geometry.type);

        coordinate=shp_data[i].geometry.coordinates[0][0][0];

        ∥ alert(coordinate);

        }

        addentity(coordinate,size,shp_data[i].properties[attribute],shp_data[i].properties.NAME);

        }

        }

        3 試驗(yàn)結(jié)果與分析

        本文主要針對(duì)傳統(tǒng)WebGIS服務(wù)器與Hadoop集群環(huán)境下海量氣象數(shù)據(jù)的存儲(chǔ)與計(jì)算進(jìn)行性能對(duì)比。選擇8臺(tái)服務(wù)器節(jié)點(diǎn)作為集群運(yùn)行環(huán)境,節(jié)點(diǎn)CPU為i5處理器,頻率為2.7 GHz,內(nèi)存均為8 GB,硬盤(pán)容量為500 GB。試驗(yàn)數(shù)據(jù)為1996—2016年云南省氣象信息,數(shù)據(jù)量約為4.6 GB。為了對(duì)比集群中節(jié)點(diǎn)個(gè)數(shù)對(duì)氣象數(shù)據(jù)存儲(chǔ)及管理的影響,使用4種方案配置節(jié)點(diǎn),集群節(jié)點(diǎn)個(gè)數(shù)分別為單節(jié)點(diǎn)、2個(gè)節(jié)點(diǎn)、4個(gè)節(jié)點(diǎn)、8個(gè)節(jié)點(diǎn),集群中部分節(jié)點(diǎn)啟動(dòng)后的頁(yè)面如圖4所示。

        圖4 集群運(yùn)行頁(yè)面Fig.4 Cluster operation page

        3.1 集群隨節(jié)點(diǎn)變化的計(jì)算性能

        隨著節(jié)點(diǎn)數(shù)的變化,數(shù)據(jù)集中的氣溫最大值、最小值、平均值的計(jì)算消耗時(shí)間如圖5所示??梢钥闯觯弘S著節(jié)點(diǎn)數(shù)的增加,計(jì)算性能增加,但是節(jié)點(diǎn)越多,數(shù)據(jù)傳輸通信時(shí)間成本越大,因此計(jì)算性能隨節(jié)點(diǎn)數(shù)的增大速率降低。

        圖5 計(jì)算消耗時(shí)間與節(jié)點(diǎn)數(shù)的關(guān)系Fig.5 Relationship of calculating time with number of nodes

        3.2 集群隨Map任務(wù)并行度變化的計(jì)算性能

        隨Map任務(wù)并行度變化的集群計(jì)算性能試驗(yàn)結(jié)果如圖6所示,通過(guò)試驗(yàn)發(fā)現(xiàn),每個(gè)節(jié)點(diǎn)的最優(yōu)并行度為13~15個(gè)Map任務(wù),每個(gè)Map任務(wù)的執(zhí)行時(shí)間至少1 min。如果每個(gè)作業(yè)的Map任務(wù)或者 Reduce任務(wù)的運(yùn)行時(shí)間都只有30~40 s,那么就減少該作業(yè)的Map任務(wù)或者Reduce任務(wù)數(shù)量。因?yàn)檎{(diào)度器在調(diào)度任務(wù)時(shí),中間過(guò)程可能要花費(fèi)幾秒鐘,如果每個(gè)任務(wù)都非??炀团芡炅?,則會(huì)浪費(fèi)太多中轉(zhuǎn)調(diào)度時(shí)間。

        圖6 計(jì)算消耗時(shí)間與Map任務(wù)數(shù)的關(guān)系Fig.6 Relationship of calculating time with number of Map tasks

        配置作業(yè)的Java虛擬機(jī)重用可以改善上述問(wèn)題,Java虛擬機(jī)重用技術(shù)不是指同一作業(yè)的兩個(gè)或兩個(gè)以上的任務(wù)可以同時(shí)運(yùn)行于同一Java虛擬機(jī)上,而是排隊(duì)按順序執(zhí)行。mapred.job.reuse.jvm.num.task,默認(rèn)是1,表示一個(gè)Java虛擬機(jī)上最多可以順序執(zhí)行的任務(wù)數(shù)目是1,也就是說(shuō)一個(gè)任務(wù)啟用一個(gè)Java虛擬機(jī)。在mapred-default.xml文件中配置塊容量,如果輸入的文件非常大,比如1TB,可以考慮將HDFS上的每個(gè)塊容量設(shè)大,比如設(shè)成256 MB或者512 MB。Reduce任務(wù)的并行度同樣影響整個(gè)作業(yè)的執(zhí)行并發(fā)度和執(zhí)行效率,但與Map任務(wù)的并發(fā)數(shù)由切片數(shù)決定不同,Reduce任務(wù)數(shù)量可以直接手動(dòng)設(shè)置,默認(rèn)值是1,可以手動(dòng)設(shè)置為4,即job.setNumReduceTasks(4)。如果數(shù)據(jù)分布不均勻,就有可能在Reduce任務(wù)階段產(chǎn)生數(shù)據(jù)傾斜,因此要注意Reduce任務(wù)數(shù)量并不是任意設(shè)置,還要考慮業(yè)務(wù)邏輯需求,有些情況下,需要計(jì)算全局匯總結(jié)果,就只能有一個(gè)Reduce任務(wù)。

        3.3 集群量隨節(jié)點(diǎn)變化的存儲(chǔ)性能

        如圖7所示,集群隨著節(jié)點(diǎn)增加,存儲(chǔ)性能變高,最重要的是如果數(shù)據(jù)量超出了單節(jié)點(diǎn)服務(wù)器硬盤(pán)容量,則無(wú)法進(jìn)行存儲(chǔ),而集群多節(jié)點(diǎn)架構(gòu)可以解決這一問(wèn)題。

        圖7 存儲(chǔ)消耗時(shí)間與節(jié)點(diǎn)數(shù)的關(guān)系Fig.7 Relationship of storage time with number of nodes

        4 GIS平臺(tái)在農(nóng)業(yè)上的應(yīng)用

        農(nóng)業(yè)數(shù)據(jù)類(lèi)型包括農(nóng)業(yè)生產(chǎn)數(shù)據(jù)、資源數(shù)據(jù)、技術(shù)數(shù)據(jù)、市場(chǎng)經(jīng)濟(jì)數(shù)據(jù)以及政策法規(guī)數(shù)據(jù)等,分為非結(jié)構(gòu)化數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)。在地理因素和季節(jié)等因素影響下,農(nóng)業(yè)數(shù)據(jù)表現(xiàn)出了特殊的數(shù)據(jù)離散性和實(shí)效性。隨著農(nóng)業(yè)信息化程度不斷提升,我國(guó)農(nóng)業(yè)現(xiàn)代化的步伐也隨之加快,轉(zhuǎn)型升級(jí)在逐步進(jìn)行,農(nóng)業(yè)及其相關(guān)數(shù)據(jù)正在被大量收集、歸納、整理。隨著農(nóng)田中物聯(lián)網(wǎng)設(shè)備的大量布署,農(nóng)業(yè)數(shù)據(jù)源源不斷地產(chǎn)生,形成農(nóng)業(yè)大數(shù)據(jù)。該數(shù)據(jù)有以下特性:①數(shù)據(jù)量非常巨大,并且會(huì)連續(xù)產(chǎn)生。②因?yàn)樽魑锷L(zhǎng)在時(shí)間方面具有季節(jié)性,故農(nóng)業(yè)大數(shù)據(jù)必須具有時(shí)效性,需及時(shí)處理數(shù)據(jù)并且反饋結(jié)果。③農(nóng)業(yè)大數(shù)據(jù)的種類(lèi)繁雜。④數(shù)據(jù)量巨大造成數(shù)據(jù)價(jià)值密度較低,但是價(jià)值量非常大。如果可以有效利用這些數(shù)據(jù),將會(huì)大大加快農(nóng)業(yè)信息化的進(jìn)程。

        4.1 農(nóng)作物生長(zhǎng)區(qū)域大數(shù)據(jù)決策分析

        利用氣象大數(shù)據(jù)分析昆明市種植適宜地,使用ID3決策樹(shù)分類(lèi)方法對(duì)氣象大數(shù)據(jù)信息進(jìn)行分析,決策樹(shù)分類(lèi)是常用的分類(lèi)挖掘模型,本次試驗(yàn)在海量的AQI、PM2.5濃度、降水量、相對(duì)濕度、日照時(shí)數(shù)等大數(shù)據(jù)中挖掘、分析出具體種植適宜地,可以為農(nóng)業(yè)生產(chǎn)適宜區(qū)域的選擇提供決策支持。

        ID3分類(lèi)方法是以信息增益來(lái)評(píng)判屬性,選擇屬性分裂后信息屬性增益最大的進(jìn)行分裂,采用貪心思想遍歷所有決策空間。使用云計(jì)算架構(gòu),分類(lèi)計(jì)算步驟為:

        (1)輸入樣本屬性集A,樣本類(lèi)別集B,樣本訓(xùn)練集C。其中樣本訓(xùn)練集C如表2所示。

        (2)創(chuàng)建樣本節(jié)點(diǎn)R,如果訓(xùn)練集C為空,則返回父節(jié)點(diǎn)中多數(shù)類(lèi)標(biāo)記R;如果訓(xùn)練集C中樣本屬于同一類(lèi)別B,則標(biāo)記類(lèi)B的節(jié)點(diǎn)R為該葉子節(jié)點(diǎn);如果A為空則返回C中的多數(shù)類(lèi)標(biāo)記;如果計(jì)算得出了A中增益率最大的屬性為S,則用S標(biāo)記節(jié)點(diǎn)R。

        (3)根據(jù)計(jì)算出的S的值{si|i=1,2,…,m}將訓(xùn)練集C分成{Ci|i=1,2,…,m}。

        (4)遞歸執(zhí)行ID3TREE(R-S,B,C1), ID3TREE(R-S,B,C2),…,ID3TREE(R-S,B,Cn),直至最終計(jì)算結(jié)果中的元組屬于同一類(lèi),信息增益是原信息和新的需求信息的差,樣本集信息熵的計(jì)算公式為

        (1)

        式中I——信息熵

        Pi——訓(xùn)練集C中任意元組屬于類(lèi)Bi的概率輸入對(duì)應(yīng)的鍵值,通過(guò)文中的云計(jì)算架構(gòu),對(duì)上述數(shù)據(jù)集進(jìn)行分類(lèi)屬性的選擇,建立ID3決策樹(shù),分別得出氣溫、天氣、降水量、相對(duì)濕度等信息的信息增益,依據(jù)上述計(jì)算流程進(jìn)行集群分布式運(yùn)算,前端對(duì)運(yùn)算結(jié)果進(jìn)行可視化展示,該應(yīng)用利用海量氣象信息精準(zhǔn)判斷某種植區(qū)域是否適宜種植作物。

        表2 樣本訓(xùn)練集Tab.2 Agricultural data set

        4.2 氣象災(zāi)害評(píng)估大數(shù)據(jù)分析

        在實(shí)際農(nóng)業(yè)生產(chǎn)中,氣象災(zāi)害評(píng)估的實(shí)時(shí)性和準(zhǔn)確性面臨極大考驗(yàn),氣象災(zāi)害的發(fā)生會(huì)導(dǎo)致農(nóng)作物生長(zhǎng)受到影響,產(chǎn)生巨大的經(jīng)濟(jì)損失。利用大數(shù)據(jù)分析則可以及時(shí)察覺(jué)即將到來(lái)的氣象災(zāi)害,對(duì)災(zāi)害進(jìn)行分類(lèi)和災(zāi)害等級(jí)評(píng)估,提前采取預(yù)防措施,減少經(jīng)濟(jì)損失。對(duì)此參考部分氣象災(zāi)害的等級(jí)指標(biāo),建立其災(zāi)害等級(jí)指標(biāo),利用本平臺(tái)大數(shù)據(jù)計(jì)算分析模塊處理海量農(nóng)業(yè)氣象數(shù)據(jù)集,得到可用于氣象災(zāi)害評(píng)估的信息。試驗(yàn)以影響作物生長(zhǎng)的低溫災(zāi)害指數(shù)為例,利用基于最近鄰法(KNN)組合分類(lèi)器分布式計(jì)算模塊,將溫度數(shù)據(jù)代入低溫災(zāi)害指數(shù)公式中計(jì)算,將其轉(zhuǎn)換為低溫災(zāi)害指數(shù),其低溫災(zāi)害指數(shù)為

        (2)

        式中f——低溫災(zāi)害指數(shù)

        t——當(dāng)前最小溫度,℃

        u、σ——正態(tài)分布參數(shù)

        最后利用分類(lèi)后的低溫災(zāi)害風(fēng)險(xiǎn)指數(shù)進(jìn)行災(zāi)害等級(jí)預(yù)測(cè)以及作物受損程度評(píng)估。利用云南省1996—2016年低溫氣象數(shù)據(jù),通過(guò)計(jì)算得到昆明市的低溫災(zāi)害風(fēng)險(xiǎn)指數(shù),建立低溫災(zāi)害評(píng)估等級(jí),如表3所示,其中1級(jí)災(zāi)害作物受損較輕,還可正常生長(zhǎng),4級(jí)災(zāi)害時(shí),作物生長(zhǎng)停止或者死亡,此時(shí)會(huì)發(fā)出預(yù)警,農(nóng)戶則可及時(shí)做相應(yīng)預(yù)防措施減少損失。

        表3 低溫災(zāi)害評(píng)估Tab.3 Low temperature disaster assessment

        5 結(jié)束語(yǔ)

        基于分布式氣象大數(shù)據(jù)分析的GIS平臺(tái)采用Hadoop體系架構(gòu),利用數(shù)據(jù)爬取技術(shù)在互聯(lián)網(wǎng)上獲取海量氣象數(shù)據(jù),并通過(guò)云存儲(chǔ)技術(shù)進(jìn)行分布式存儲(chǔ),解決了傳統(tǒng)單節(jié)點(diǎn)服務(wù)器WebGIS 系統(tǒng)硬件受限制的問(wèn)題。在氣象大數(shù)據(jù)的分析計(jì)算方面,試驗(yàn)結(jié)果表明,多節(jié)點(diǎn)集群下效率更高,在查詢遍歷性能方面也比傳統(tǒng)WebGIS單節(jié)點(diǎn)服務(wù)器高;通過(guò)對(duì)海量氣象數(shù)據(jù)采用云計(jì)算技術(shù)進(jìn)行分析可以幫助有關(guān)部門(mén)進(jìn)行決策;利用Cesium對(duì)計(jì)算得到的氣象信息進(jìn)行三維可視化,可以直觀看到氣象站點(diǎn)歷史氣象參數(shù)的變化情況和計(jì)算決策結(jié)果,但是在具體分析功能擴(kuò)展方面還需要完善。

        国产一区日韩二区欧美三区| 久久精品国产亚洲av麻豆瑜伽 | 久久亚洲日韩精品一区二区三区| 性色av无码久久一区二区三区| 欧洲中文字幕| 精品人妻一区二区久久| 精品少妇一区二区三区免费| 亚洲av日韩aⅴ无码色老头| 久久婷婷综合色丁香五月| 完整在线视频免费黄片| 一本色道久久亚洲精品| 午夜男女很黄的视频| 人人妻人人添人人爽日韩欧美| 久久亚洲精彩无码天堂| 国产精品亚洲一区二区三区在线看 | 青青青草国产熟女大香蕉| 在线观看一区二区三区在线观看 | 亚洲国产精品日韩av专区| 亚洲an日韩专区在线| 国产日本精品一区二区| 丰满少妇高潮在线观看| 国产精品亚洲一区二区麻豆| 欧美大屁股xxxx高跟欧美黑人| 粗大的内捧猛烈进出在线视频| 日韩一区二区三区中文字幕| 国产黄久色一区2区三区| 疯狂的欧美乱大交| 欧美日韩在线免费看| 美女黄网站永久免费观看网站| 久久精品国产亚洲av蜜点| 国产揄拍国产精品| 97人妻视频妓女网| 日本午夜伦理享色视频| 少妇高潮太爽了在线视频| a级黑人大硬长爽猛出猛进 | 24小时日本在线视频资源| 一二三四在线视频社区3| 亚洲乱码中文字幕综合69堂 | 久久精品女人天堂av免费观看| 婷婷五月综合激情| 久久麻豆精亚洲av品国产蜜臀|