夏吉品,鄒 濱,楊忠霖,李沈鑫
中南大學(xué) 地球科學(xué)與信息物理學(xué)院,長(zhǎng)沙410083
城市空氣質(zhì)量濃度超標(biāo)事件近年頻繁發(fā)生。截止2016年,全國(guó)338個(gè)地級(jí)及以上城市仍有75.1%的環(huán)境空氣質(zhì)量超標(biāo),平均超標(biāo)天數(shù)比例為21.2%。以PM2.5為首要污染物的超標(biāo)天數(shù)占重度及以上空氣質(zhì)量等級(jí)總天數(shù)的80.3%。研究表明,短期暴露于濃度超標(biāo)的空氣污染會(huì)嚴(yán)重危害公眾、特別是慢性支氣管炎、肺癌等疾病患者敏感人群的健康,引起不同程度的咳嗽、呼吸困難等癥狀[1-2]。相比室內(nèi),室外日常出行空氣污染暴露更難控制,已成為影響公眾健康不可忽視的重要行為。在我國(guó)室外空氣質(zhì)量濃度短期難以達(dá)標(biāo)的當(dāng)下,如何在出行過(guò)程中有效規(guī)避PM2.5高濃度區(qū)域、降低PM2.5暴露強(qiáng)度,已成為公眾當(dāng)前防控大氣污染健康損害的一種新需求。
隨著智能手機(jī)硬件性能的快速提升,路徑規(guī)劃APP當(dāng)前已成為公眾出行的常備工具。在當(dāng)前主流手機(jī)智能平臺(tái)中,Android因開(kāi)放性、開(kāi)源性和完全免費(fèi)性等優(yōu)勢(shì),在移動(dòng)智能終端領(lǐng)域已占據(jù)絕對(duì)優(yōu)勢(shì)[3],出現(xiàn)了以Google地圖、高德地圖為代表的多種基于Android平臺(tái)的路徑規(guī)劃應(yīng)用程序APP[4]。然稍加分析可知,現(xiàn)有各類(lèi)路徑規(guī)劃APP中的路徑選擇方案多局限于出發(fā)點(diǎn)與目的地之間的最短距離[5-6]、最佳路況[7-8]或最少時(shí)間[9-10],對(duì)所選路徑健康與否缺乏考慮,難以滿(mǎn)足指導(dǎo)公眾日常出行過(guò)程中規(guī)避空氣污染健康損害的需要。
截止目前,國(guó)外已有學(xué)者開(kāi)始研究空氣污染低暴露風(fēng)險(xiǎn)路徑搜索算法。在此過(guò)程中,采用空氣污染指數(shù)API(Air Pollution Index)測(cè)度出行路段空氣污染暴露風(fēng)險(xiǎn)[11]。但是,API作為一個(gè)定性或半定量評(píng)估空氣質(zhì)量等級(jí)的指數(shù),無(wú)法用于累積計(jì)算個(gè)體在出行道路上所受的健康損害。在綜合考慮暴露濃度和暴露時(shí)長(zhǎng)的基礎(chǔ)上,有學(xué)者引入暴露劑量這一指標(biāo)開(kāi)啟了以低暴露劑量為標(biāo)準(zhǔn)的最低暴露路徑搜索算法研究[12]。但不容忽視,現(xiàn)已報(bào)道的最低暴露路徑搜索算法多依賴(lài)日均或月均空氣污染物濃度[13-16],忽略了空氣污染濃度在出行過(guò)程時(shí)段間的動(dòng)態(tài)變化,且尚無(wú)面向應(yīng)用的最低暴露路徑服務(wù)產(chǎn)品。
對(duì)此,針對(duì)當(dāng)前我國(guó)城市空氣質(zhì)量超標(biāo)、公眾防控大氣污染健康損害的新需求,以PM2.5為例,本研究擬以動(dòng)態(tài)最低空氣污染暴露劑量健康路徑搜索服務(wù)構(gòu)建為基礎(chǔ),開(kāi)發(fā)基于Android平臺(tái)的公眾健康路徑規(guī)劃APP,通過(guò)對(duì)公眾日常出行的指導(dǎo)、達(dá)到規(guī)避大氣污染暴露健康損害的目的。
健康路徑指出發(fā)點(diǎn)與目的地間出行道路上個(gè)體所受空氣污染暴露劑量累積最低的路徑。健康路徑動(dòng)態(tài)規(guī)劃算法是基于動(dòng)態(tài)Dijkstra路徑規(guī)劃算法的一種目標(biāo)值的優(yōu)化算法。傳統(tǒng)DijKstra算法是以距離最短或時(shí)間最短為目標(biāo)函數(shù)求解最優(yōu)值,而本文提出的健康路徑動(dòng)態(tài)規(guī)劃算法是以空氣污染暴露劑量累積最低為目標(biāo)函數(shù)的Dijkstra算法求解最優(yōu)值。如圖1所示,健康路徑包括PM2.5濃度分布制圖、道路段PM2.5暴露劑量估算、暴露劑量累積最低路徑搜索三部分,分別可借助克里格空間插值、暴露劑量評(píng)估、動(dòng)態(tài)Dijkstra健康路徑搜索方法實(shí)現(xiàn)。
圖1 健康路徑搜索過(guò)程示意圖
PM2.5濃度分布制圖是出行道路段PM2.5暴露劑量估算的基礎(chǔ)。以變異函數(shù)理論及結(jié)構(gòu)分析為基礎(chǔ),克里格空間插值方法不僅可考慮已知點(diǎn)間、已知點(diǎn)與插值點(diǎn)的相對(duì)位置關(guān)系,還可顧及各點(diǎn)間的空間相關(guān)性,是一種可在有限區(qū)域內(nèi)對(duì)變量進(jìn)行無(wú)偏最優(yōu)估計(jì)的空間插值方法[17]。計(jì)算公式為:
式中,Z(χ0)為未知點(diǎn)特征屬性估計(jì)值,Z(χi)為已知點(diǎn)相應(yīng)觀測(cè)值,λi為已知點(diǎn)對(duì)未知點(diǎn)的克里格權(quán)重系數(shù),n為已知點(diǎn)的個(gè)數(shù)。
污染暴露是個(gè)體在某一時(shí)空過(guò)程接觸一種及以上環(huán)境污染物的行為[18]。暴露劑量評(píng)估即指在對(duì)環(huán)境濃度與暴露行為準(zhǔn)確識(shí)別基礎(chǔ)上,應(yīng)用模型定量計(jì)算個(gè)體吸入污染物量的過(guò)程[18]。伴隨當(dāng)前空氣污染環(huán)境健康損害研究對(duì)暴露劑量-反應(yīng)關(guān)系的進(jìn)一步確認(rèn),暴露劑量已成為一種表征PM2.5暴露對(duì)人體健康損害大小的有效指標(biāo)。計(jì)算公式為:
D為個(gè)體沿道路出行累積的PM2.5暴露劑量(μg);Ci為PM2.5濃度(μg/m3);IR為呼吸速率(m3/min)。IR取《中國(guó)人群暴露參數(shù)手冊(cè)》兒童、成年人和老年人輕度運(yùn)動(dòng)狀態(tài)城鄉(xiāng)居民個(gè)體呼吸速率均值(表1);Δt是以Vi速度通過(guò)Li長(zhǎng)度道路段的時(shí)間開(kāi)銷(xiāo)。
作為經(jīng)典最短路徑搜索算法,Dijkstra采用遍歷搜索方式求解最短路徑,可靠性高、魯棒性好[19-20]。與經(jīng)典最短路徑規(guī)劃[21-22]中各道路段物理長(zhǎng)度保持不變相異,健康路徑規(guī)劃中每條道路段的長(zhǎng)度實(shí)際為暴露風(fēng)險(xiǎn)權(quán)重,隨該道路段上PM2.5濃度與出行時(shí)長(zhǎng)的變化而改變。即出發(fā)時(shí)刻規(guī)劃的健康路徑,往往會(huì)在前往目的地的行進(jìn)過(guò)程中因道路段暴露風(fēng)險(xiǎn)的變化需要?jiǎng)討B(tài)更新。
表1 輕度運(yùn)動(dòng)城鄉(xiāng)居民個(gè)體平均呼吸量
健康路徑的選擇問(wèn)題,可以看成一個(gè)研究約束條件下的目標(biāo)函數(shù)的極值問(wèn)題。據(jù)此原理,動(dòng)態(tài)Dijkstra健康路徑搜索,以路徑的空氣污染暴露劑量累積值最低為目標(biāo)函數(shù),以起止點(diǎn)必須包括在道路上為約束條件,求取從起點(diǎn)到終點(diǎn)通過(guò)DijKstra算法搜索的所有路徑中累計(jì)空氣污染暴露劑量值最低的路徑。若存在原起始點(diǎn)或目的地未直接落在道路段的情景,則進(jìn)行最近鄰道路段上起始點(diǎn)和目的地空間位置的標(biāo)定,從而確保起止點(diǎn)在道路段。健康路徑動(dòng)態(tài)更新則按照已出行道路段不回退基本原則,以上一時(shí)刻PM2.5暴露劑量累積最低道路段為基礎(chǔ),逐步搜索當(dāng)前時(shí)刻暴露風(fēng)險(xiǎn)權(quán)重最低道路段,如此循環(huán)至出行過(guò)程結(jié)束。
綜合考慮系統(tǒng)功能的復(fù)雜性及手機(jī)終端計(jì)算能力的局限性,面向手機(jī)APP的健康路徑規(guī)劃服務(wù)后臺(tái)設(shè)計(jì)定位于數(shù)據(jù)管理、業(yè)務(wù)邏輯處理、信息服務(wù)與交互式接口提供?;谲浖こ獭案邇?nèi)聚低耦合”思想將整個(gè)后臺(tái)分為訪問(wèn)層、邏輯層和服務(wù)層(圖2),分別負(fù)責(zé)數(shù)據(jù)訪問(wèn)、業(yè)務(wù)邏輯處理和客戶(hù)端服務(wù)請(qǐng)求響應(yīng)。
具體而言,訪問(wèn)層主要為邏輯層提供數(shù)據(jù)訪問(wèn)接口:非空間數(shù)據(jù)通過(guò)封裝的Ado.net和JDBC訪問(wèn)底層數(shù)據(jù)庫(kù),空間數(shù)據(jù)通過(guò)空間數(shù)據(jù)引擎(ArcSDE)中間件存取。邏輯層包括數(shù)據(jù)訪問(wèn)、污染制圖、濃度提取、暴露劑量估算、用戶(hù)管理及呼吸參數(shù)管理模塊,完成數(shù)據(jù)的采集與業(yè)務(wù)的處理,支撐服務(wù)層。服務(wù)層通過(guò)ArcGIS Server為客戶(hù)端APP提供路徑規(guī)劃和地圖訪問(wèn)的REST接口,利用Tomcat服務(wù)器為客戶(hù)端APP提供與用戶(hù)信息相關(guān)的JSON接口。
圖2 健康路徑規(guī)劃APP后臺(tái)架構(gòu)
通過(guò)自頂向下、逐步分解的系統(tǒng)功能分析可知,健康路徑規(guī)劃所依賴(lài)的數(shù)據(jù)可分為空間和非空間兩類(lèi)(圖3)??臻g數(shù)據(jù)主要包括空氣質(zhì)量監(jiān)測(cè)站點(diǎn)位置與道路網(wǎng)數(shù)據(jù),通過(guò)ArcSDE進(jìn)行管理;非空間數(shù)據(jù)主要為用戶(hù)基本身份信息、空氣質(zhì)量濃度監(jiān)測(cè)數(shù)據(jù)、公眾呼吸暴露參數(shù),直接存儲(chǔ)在SQL Server數(shù)據(jù)庫(kù)。
圖3 健康路徑規(guī)劃APP數(shù)據(jù)庫(kù)設(shè)計(jì)
健康路徑規(guī)劃服務(wù)后臺(tái)實(shí)現(xiàn)包括后臺(tái)任務(wù)開(kāi)發(fā)、GIS服務(wù)器開(kāi)發(fā)與Web服務(wù)器開(kāi)發(fā)三個(gè)部分(圖4)。
后臺(tái)任務(wù)開(kāi)發(fā)通過(guò)空氣質(zhì)量濃度與道路網(wǎng)數(shù)據(jù)的疊置調(diào)用實(shí)現(xiàn)道路段空氣質(zhì)量濃度值的提取。首先,調(diào)用數(shù)據(jù)訪問(wèn)模塊獲取當(dāng)前時(shí)刻空氣質(zhì)量監(jiān)測(cè)站點(diǎn)PM2.5濃度數(shù)據(jù),通過(guò)ArcGIS Engine(AE)開(kāi)發(fā)完成空間點(diǎn)構(gòu)造、坐標(biāo)轉(zhuǎn)換與PM2.5濃度連續(xù)空間曲面的插值制圖;以此為基礎(chǔ),通過(guò)道路網(wǎng)數(shù)據(jù)道路段中心點(diǎn)提取對(duì)應(yīng)網(wǎng)格位置的PM2.5濃度曲面值,完成格網(wǎng)內(nèi)道路段PM2.5濃度的賦值與更新。
圖4 健康路徑規(guī)劃APP后臺(tái)實(shí)現(xiàn)技術(shù)流程
GIS服務(wù)采用WebGIS技術(shù)、AE組件式技術(shù)和ArcGIS SDE進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)空間數(shù)據(jù)的存取與處理、GIS服務(wù)的發(fā)布與管理。GIS服務(wù)器主要用于將后臺(tái)任務(wù)更新后的道路網(wǎng)數(shù)據(jù)上傳至ArcGIS Server,完成服務(wù)的更新。整個(gè)過(guò)程通過(guò)Python腳本實(shí)現(xiàn)流程的自定義處理,具體為:
(1)創(chuàng)建服務(wù)定義草稿文件(SDDraft):轉(zhuǎn)換路網(wǎng)地圖為SDDraft文件。
(2)修改SDDraft定義,注冊(cè)地圖服務(wù)和路徑服務(wù)。
(3)分析和檢查SDDraft錯(cuò)誤。
(4)轉(zhuǎn)換SDDraft為.sd服務(wù)定義文件。
(5)上傳服務(wù)至ArcGIS Server。
Web服務(wù)采用Java語(yǔ)言、SpringMVC、Spring和MyBatis框架(SSM)開(kāi)發(fā),實(shí)現(xiàn)用戶(hù)信息管理。Web服務(wù)器主要基于用戶(hù)信息和呼吸參數(shù)調(diào)用,通過(guò)暴露劑量評(píng)估模型實(shí)現(xiàn)PM2.5濃度向暴露劑量的轉(zhuǎn)換。客戶(hù)端首先通過(guò)http協(xié)議向Web服務(wù)器發(fā)送暴露劑量、暴露時(shí)長(zhǎng)和用戶(hù)ID請(qǐng)求數(shù)據(jù);Web服務(wù)器隨后根據(jù)用戶(hù)信息完成基于呼吸參數(shù)庫(kù)的用戶(hù)呼吸參數(shù)匹配,采用暴露評(píng)估模型計(jì)算暴露劑量,以JSON格式返回給客戶(hù)端。
健康路徑規(guī)劃手機(jī)終端APP在Android Studio集成開(kāi)發(fā)環(huán)境基于Android原生應(yīng)用開(kāi)發(fā)模式開(kāi)發(fā)。APP地圖定位通過(guò)調(diào)用ArcGIS Runtime SDK for Android(ArcSDK)實(shí)現(xiàn),包括地圖管理、登錄注冊(cè)與路徑規(guī)劃三項(xiàng)功能。
4.1.1 地圖定位與顯示
地圖是健康路徑可視化規(guī)劃的基礎(chǔ)。健康路徑規(guī)劃APP的地圖功能包括定位和圖層管理兩個(gè)方面。地圖定位通過(guò)LocationListener接口實(shí)時(shí)獲取APP載體手機(jī)GPS定位經(jīng)緯度數(shù)據(jù),完成用戶(hù)位置的實(shí)時(shí)地圖加載。圖層管理用于健康路徑規(guī)劃APP相關(guān)圖層的動(dòng)態(tài)加載與顯示,從下到上依次為背景圖層、道路網(wǎng)圖層、路徑規(guī)劃結(jié)果圖層、起止點(diǎn)定義圖層。背景圖層采用天地圖底圖展示用戶(hù)周?chē)乩憝h(huán)境;道路網(wǎng)圖層分級(jí)渲染顯示路網(wǎng)各道路段PM2.5實(shí)時(shí)濃度;路徑規(guī)劃結(jié)果圖層和起止點(diǎn)圖層用于動(dòng)態(tài)添加健康路徑規(guī)劃的出行路線(xiàn)和起止點(diǎn)標(biāo)識(shí)。
4.1.2 登錄注冊(cè)
登陸注冊(cè)功能是獲取用戶(hù)年齡與性別信息,實(shí)現(xiàn)出行個(gè)體呼吸參數(shù)匹配提取的關(guān)鍵。用戶(hù)個(gè)人信息輸入后,通過(guò)HttpClient組件POST請(qǐng)求Web服務(wù)器登陸注冊(cè)接口,根據(jù)請(qǐng)求返回的狀態(tài)碼判斷是否登陸注冊(cè)成功。
為避免APP與Web服務(wù)端頻繁請(qǐng)求呼吸參數(shù)造成服務(wù)器負(fù)載過(guò)大的壓力,健康路徑規(guī)劃APP在用戶(hù)登陸注冊(cè)成功后即主動(dòng)請(qǐng)求服務(wù)端呼吸參數(shù)查詢(xún)服務(wù),利用Android提供的SharedPrefereneces將匹配的呼吸參數(shù)保存在本地xml文件。
4.1.3 路徑規(guī)劃
健康路徑動(dòng)態(tài)搜索是健康路徑規(guī)劃APP的核心功能,主要包括地理編碼查詢(xún)、路徑規(guī)劃任務(wù)請(qǐng)求與顯示,路徑規(guī)劃界面(圖5)。地理編碼查詢(xún)是將用戶(hù)輸入的起始點(diǎn)與目的地地名轉(zhuǎn)換為確切空間地理坐標(biāo)位置的過(guò)程,主要通過(guò)HTTP協(xié)議請(qǐng)求天地圖地理編碼服務(wù)查詢(xún)可匹配的位置。地理編碼服務(wù)返回結(jié)果通常包含匹配位置的名稱(chēng)、經(jīng)緯度及詳細(xì)地址。路徑規(guī)劃任務(wù)請(qǐng)求用于實(shí)現(xiàn)路徑規(guī)劃任務(wù)參數(shù)的設(shè)置與封裝和請(qǐng)求的發(fā)送。為避免ANR(Application is Not Response)導(dǎo)致的應(yīng)用崩潰,Android開(kāi)發(fā)中將路徑規(guī)劃任務(wù)設(shè)置在子線(xiàn)程執(zhí)行,執(zhí)行完畢通過(guò)回調(diào)機(jī)制更新至主線(xiàn)程地圖界面。
圖5 健康路徑規(guī)劃APP路徑規(guī)劃界面
表2 最短路徑、最快路徑和健康路徑出行效益指標(biāo)對(duì)比統(tǒng)計(jì)
路徑規(guī)劃功能核心代碼如下:
//獲取路徑任務(wù)默認(rèn)參數(shù)
ListenableFuture<RouteParameters>
listenableFuture=mRouteTask.createDefaultParametersAsync();
RouteParameters routeParameters=listenableFuture.get();
//添加起止點(diǎn)、設(shè)置返回路徑方向
Stop stop1=new Stop(start);
Stop stop2=new Stop(end);
List<Stop>routeStops=new ArrayList<>();
routeStops.add(stop1);
routeStops.add(stop2);
routeParameters.setStops(routeStops);
routeParameters.setReturnDirections(true);
//執(zhí)行路徑規(guī)劃任務(wù)
RouteResult routeResult=mRouteTask.solveRouteAsync(route-Parameters).get();
//回調(diào)更新顯示結(jié)果
callBack.updateUI(routeResult);
為測(cè)試健康路徑規(guī)劃APP的可靠性其及規(guī)避大氣污染暴露風(fēng)險(xiǎn)的效果,針對(duì)2015年11月26日采集的PM2.5濃度數(shù)據(jù),在長(zhǎng)沙主城區(qū)隨機(jī)抽取多組路徑規(guī)劃起始點(diǎn)與目的地,從距離、時(shí)間和暴露劑量三方面開(kāi)展最短路徑、最快路徑與健康路徑的對(duì)比評(píng)價(jià)(圖6)。出行效益指標(biāo)統(tǒng)計(jì)(表2)表明,健康路徑相比最短路徑和最快路徑在公眾出行過(guò)程中可分別可降低個(gè)體5.0%和7.3%的PM2.5暴露劑量,但同時(shí)會(huì)比最短路徑增加約9.4%的出行距離,比最快路徑增多8.0%的出行時(shí)間。
圖6 健康路徑、最短路徑與最快路徑出行規(guī)劃效果對(duì)比示意圖
針對(duì)我國(guó)當(dāng)前城市空氣質(zhì)量超標(biāo)、公眾大氣污染健康損害防控的新需求,以對(duì)人體健康危害較大的空氣污染物PM2.5為例,本研究設(shè)計(jì)、開(kāi)發(fā)與實(shí)現(xiàn)了以暴露劑量為終端健康損害權(quán)重表征指標(biāo)的健康路徑規(guī)劃服務(wù)APP。測(cè)試結(jié)果表明,健康路徑規(guī)劃APP服務(wù)規(guī)劃下的健康路徑相比傳統(tǒng)最短路徑和最快路徑可分別降低出行公眾個(gè)體5.0%和7.3%的暴露劑量,是一種可用于公眾規(guī)避空氣污染暴露風(fēng)險(xiǎn)的有效路徑規(guī)劃服務(wù)??紤]到我國(guó)大氣污染呈現(xiàn)出多污染源疊加的復(fù)合型污染特征,基于多種污染物綜合健康效應(yīng)的路徑規(guī)劃服務(wù)仍有待進(jìn)一步研究。此外,通過(guò)融入道路級(jí)小時(shí)粒度空氣質(zhì)量濃度預(yù)報(bào)數(shù)據(jù),提升暴露劑量評(píng)估精度以及APP健康風(fēng)險(xiǎn)預(yù)警預(yù)報(bào)能力,增加用戶(hù)出行路徑評(píng)價(jià)和用戶(hù)意見(jiàn)反饋功能模塊,改善用戶(hù)體驗(yàn)也是未來(lái)主要的改進(jìn)方向。