李成鵬,周明剛,鐘亞含
(1.云南省人工影響天氣中心,云南 昆明 650034;2.云南省氣象臺,云南 昆明 650034;3.云南省氣象科學(xué)研究所,云南 昆明 650034)
目前人工影響天氣作為服務(wù)氣象防災(zāi)減災(zāi)的重要手段,多年來在云南省的防雹減災(zāi)、庫塘蓄水和生態(tài)環(huán)境保護(hù)等方面發(fā)揮了重要作用,張振秀等[1]對洱海地區(qū)的人工增雨作業(yè)研究中指出,開展人工增雨作業(yè)后的影響區(qū)降水量比非作業(yè)區(qū)高,作業(yè)效果明顯;王菲等[2]發(fā)現(xiàn),及時申請防雹作業(yè)、連續(xù)加密作業(yè),可有效地抑制回波增長。高炮和火箭是目前人工防雹的主要地面作業(yè)裝備,目前云南省16州(市)人影部門裝備有900多門火箭發(fā)射系統(tǒng),由于火箭發(fā)射架屬于武器范疇,火箭彈是軍轉(zhuǎn)民用品,火箭作業(yè)點、發(fā)射方位及仰角的選擇是火箭安全作業(yè)的重要因素。按相關(guān)規(guī)定[3-4],作業(yè)點應(yīng)有符合要求的安全射界圖。在增雨、防雹作業(yè)中根據(jù)相關(guān)標(biāo)準(zhǔn)[5]自動繪制火箭安全射界圖,既能夠有效防止發(fā)生火箭發(fā)射事故,又可切實減少空中未爆彈丸落地時造成對地面人員或重要設(shè)施的損害,減少安全隱患。
目前相關(guān)研究多集中于人工影響天氣作業(yè)安全射界圖的繪制,常采用ArcGIS[6-8],也有AutoCAD[9]、Photoshop[10]、CorelDRAW[11]等軟件。使用后列的這些軟件繪制安全射界圖時都存在缺少地理坐標(biāo)參考、繪圖比例難以掌握、繪圖操作不易掌握和制作過程相對繁瑣等不足;而使用AutoCAD和CorelDRAW雖然在在控制比例、精確定位方面有優(yōu)勢,但未給出安全射界區(qū)這一關(guān)鍵問題的繪制方法,仍不滿足基層業(yè)務(wù)人員操作簡單、繪制精準(zhǔn)和容易校對的業(yè)務(wù)需要。已有研究表明利用GIS技術(shù)和Python腳本語言可直觀的分析人工影響天氣作業(yè)安全射界結(jié)果,操作方便快捷,為地面火箭作業(yè)安全提供了科學(xué)依據(jù)[12]。其中ArcGIS地理制圖模塊繪圖符合人工影響天氣作業(yè)安全射界圖制作行業(yè)標(biāo)準(zhǔn),一是ArcGIS提供了專業(yè)地理數(shù)據(jù)分析、空間參考、地圖制圖表達(dá)等功能,二是調(diào)用地理處理工具接口、函數(shù)、類,能精準(zhǔn)自動化制作安全射界區(qū),實時動態(tài)顯示安全射界區(qū),可為人工增雨和防雹工作提供安全作業(yè)建議,也可為作業(yè)預(yù)警產(chǎn)品等決策信息預(yù)留接口,增強(qiáng)地面人影作業(yè)指揮管理的安全性、科學(xué)性和精準(zhǔn)性[13]。同時Python語言語法簡潔易懂,相較于其他編程語言上手門檻低,很適合初學(xué)者快速入門。
基于以上概述,本文研究以Python為腳本語言,充分利用ArcPy庫的空間參考模塊、空間分析模塊、制圖表達(dá)模塊等接口,通過作業(yè)點坐標(biāo),火箭彈不同發(fā)射仰角的理論最大射程參數(shù),實現(xiàn)符合專業(yè)地理制圖要求和射界圖制作行業(yè)標(biāo)準(zhǔn)的安全射界區(qū)的自動化繪制。
GNSS定位人影作業(yè)點,主要勘測作業(yè)點經(jīng)度、緯度、海拔;云南省地理信息公共服務(wù)平臺提供最新的遙感影像地圖、街道地圖,能清晰看到村莊、學(xué)校、政府部門、倉庫、化工用地、主要道路等信息;依據(jù)國家標(biāo)準(zhǔn)《人工影響天氣火箭作業(yè)點安全射界圖繪制規(guī)范》查詢有關(guān)火箭彈參數(shù)和最大射程增量系數(shù)[14],因不同火箭彈的繪制方法基本一致,理論最大射程只影響增量系數(shù)和安全射界圖的最大范圍圈。本文以常見的BL-1A型火箭彈為例,同時考慮到云南省高海拔的作業(yè)點較多,選擇海拔1 200 m為例,相對海拔0 m的理論最大射程增量系數(shù)為1.10,計算海拔1 200 m的BL-1A型火箭彈的理論最大射程,結(jié)果見表1[14]。
表1 海拔1 200 m的BL-1A型火箭彈不同發(fā)射仰角的理論最大射程
ArcPy入門難度低、可操作性強(qiáng),同時基于Python語言的便攜性,可以很方便地插入各種系統(tǒng),為后續(xù)的應(yīng)急分析研究帶來很大的便利[15]。ArcPy可以高效的調(diào)用ArcGIS中存在的各種分析、處理工具及Python模塊,人影安全射界區(qū)自動化繪制的實現(xiàn)主要使用了ArcPy中的management模塊和analysis模塊(表2)。
表2 ArcPy 函數(shù)說明
結(jié)合基礎(chǔ)地理信息空間數(shù)據(jù)和BL-1A型火箭彈參數(shù),利用ArcPy綜合分析作業(yè)點安全射界,制作安全射界圖。整個系統(tǒng)的運行的平臺是VScode,編碼語言用的是Python 2.7,編碼調(diào)用的函數(shù)包主要是ArcPy。系統(tǒng)整體架構(gòu)如圖1,首先將勘測文件數(shù)字化,生成對應(yīng)經(jīng)緯度上的人影作業(yè)點,根據(jù)作業(yè)點生成水平距離圈、方位線段,結(jié)合BL-1A型火箭彈參數(shù)生成射界距離圈、水平距離刻度,然后應(yīng)用arcpy.SymDiff_analysis模塊生成安全射界區(qū),以遙感影像為底圖標(biāo)注安全射界編號,標(biāo)注刻度,最后應(yīng)用arcpy.mapping制圖模塊實現(xiàn)對
圖1 作業(yè)點安全射界繪制流程
Fig.1 The process of drawing safe shooting range zones of operation sites
作業(yè)點、敏感區(qū)域、安全射界范圍表、作業(yè)單位、作業(yè)裝備及年檢等基礎(chǔ)信息繪制出圖。
以高清地圖為底圖,選用近2年內(nèi)空間分辨率不低于15 m的衛(wèi)星遙感影像圖,或1:250 000以上比例尺地圖作為底圖,能夠顯示行政區(qū)域、道路線、水系、鐵路、高速公路、行政村莊等基礎(chǔ)地理信息圖層。
本文根據(jù)GPS勘測定位的經(jīng)緯度、高程文件,使用CreateFeatureclass函數(shù)可以在GIS中定位創(chuàng)點;人影作業(yè)點較多時,可使用MakeXYEventLayer函數(shù)批量定位創(chuàng)點。
部分代碼如下:
x =24.XXXXXX
y=101.XXXXXX #GPS勘測定位的經(jīng)緯度坐標(biāo)
pointGeoList=[]
spatial_reference=arcpy.SpatialReference(4490)#用China Geodetic Coordinate System2000作為空間參考
operating_sites=arcpy.Point(y,x)
point_geo=arcpy.PointGeometry(operating_sites,spatial_reference)#創(chuàng)建點要素
pointGeoList.append(point_geo)
arcpy.CopyFeatures_management(pointGeoList,“operating_sites.shp”)
#arcpy.MakeXYEventLayer_management(operating_sites.table,x,y,operating_sites,spatial_reference,z)
如果作業(yè)點多時,可用MakeXYEventLayer_management函數(shù),根據(jù)源表中定義的 X 和Y坐標(biāo)批量創(chuàng)建新的點要素圖層。表包含 Z 坐標(biāo)(高程值),則可以在創(chuàng)建事件圖層時指定該字段。
以定位創(chuàng)建的作業(yè)點為圓心,利用MultipleRingBuffer函數(shù),以1 km為半徑繪制實線內(nèi)圈圓,以火箭最低發(fā)射仰角的理論最大射程向上取整后的數(shù)值為半徑繪制實線外圈圓,在自圓心正東方向的橫軸上,以1km間隔用GeneratePointsAlongLines函數(shù)標(biāo)出距離刻度,并標(biāo)注內(nèi)、外圈圓對應(yīng)的距離刻度數(shù)值,實線內(nèi)外圈圓、距離刻度線寬為0.52 mm。
部分代碼如下:
Maximum_range=8
radius=1
distances=[j for j in range(radius,Maximum_range+radius,radius)]
arcpy.MultipleRingBuffer_analysis(“operating_sites.shp”,outFeatureClass,distances,bufferUnit,“”,“ALL”)#按1 km間隔,最大外圈8 km繪制圓環(huán)
arcpy.GeneratePointsAlongLines_management(horizontal_line,Horizontal_scale,“DISTANCE”,Distance=“1Kilometers”)#按1km間隔,生成水平距離刻度
使用MultipleRingBuffer函數(shù)和GeneratePointsAlongLines函數(shù),結(jié)合BL-1A型火箭彈發(fā)射仰角(55°~85°)理論最大射程為半徑,按5°間隔生成射擊距離圈,線寬為0.26 mm,在自圓心向正北方向的縱軸上,標(biāo)注對應(yīng)射擊仰角數(shù)值。
部分代碼如下:
BL1A_distances=[3.202,4.184,5.034,5.818,6.491,7.163,7.796]#BL-1A型火箭彈不同發(fā)射仰角的最大射程
bufferUnit=“Kilometers”
arcpy.MultipleRingBuffer_analysis(“operating_sites.shp”,BL1A_ring,BL1A_distances,buffer Unit,“”,“ALL”)
使用BearingDistanceToLine函數(shù),以作業(yè)點為中心,正北方向為起始角,15°為分割角進(jìn)行距離圈等角分割(從實際應(yīng)用情況出發(fā)可任意設(shè)置角度等分分割),距離圈等分分成若干個扇形區(qū)。在最外水平距離圈外側(cè)標(biāo)注對應(yīng)方位角數(shù)值,方位線線寬為0.26 mm。
等份劃分圓部分代碼如下:
n=24 #將射界圈按15°等角劃分成24等份
degrees=[(j+1)* 360/n for j in range(n)]
if os.path.exists(env+“table.dbf”):
arcpy.Delete_management(“table.dbf”)
tablefc=arcpy.CreateTable_management(env,“table.dbf”)
arcpy.AddField_management(tablefc,“degrees”,“FLOAT”,“”,“”,“”,“”,“”,“”,“”)#在創(chuàng)建好的屬性表里增加分割角字段
cursor=arcpy.InsertCursor(tablefc)
i=0
while i row=cursor.newRow() row.degrees=degrees[i] cursor.insertRow(row) i+=1 del cursor arcpy.BearingDistanceToLine_management(“table. dbf”,“l(fā)ines”,“y”,“x”,“Maximum_range”,bufferUnit,“degrees”,“DEGREES”,“RHUMB_LINE”,“”,spatial_reference)#用原點夾角距離定義方位線。 start_x表示起點緯度坐標(biāo)字段,start_y表示起點經(jīng)度坐標(biāo)字段,distance表示從起點出發(fā)的距離,degrees表示北偏方位角,bearing輸出線旋轉(zhuǎn)的方位角方位角,以北為基準(zhǔn)方向按順時針進(jìn)行測量(圖2)。 圖2 方位線參數(shù) 按照人工影響天氣火箭作業(yè)點安全射界圖繪制規(guī)范要求,安全射界范圍選取要遵循以下原則: (1)以發(fā)射架中心為基準(zhǔn),火箭發(fā)射正前方1km內(nèi)應(yīng)無人口密集區(qū)和重要設(shè)施。 (2)避開人口密集區(qū),如:城鎮(zhèn)、村莊、學(xué)校等。 (3)避開重要的設(shè)施,如:油庫、化工廠、文物古跡、高速鐵路、軍事設(shè)施等。 (4)安全射界邊界與人口密集區(qū)和重要設(shè)施的距離要大于200 m。 通過調(diào)用arcpy.SymDiff_analysis: arcpy.SymDiff_analysis(Densely_populated_infrastructure,BL1A_ring,Safe_area,“ALL”,clusterTolerance),使用SymDiff交集取反函數(shù),將選取的重要設(shè)施及人口密集區(qū)等基礎(chǔ)地理信息要素與安全射界扇形范圍交集取反,得出需要的安全射界區(qū),其結(jié)果如圖3(分別通過調(diào)用“天地圖”提供的街道“矢量地圖”和衛(wèi)星“影像地圖”得到,其中“矢量地圖”的數(shù)據(jù)較為豐富,按照行政等級逐步列出省市、村鎮(zhèn)、街道辦的名稱以及街道的路名等,“影像地圖”的清晰率較高,地圖可以識別出偏遠(yuǎn)地區(qū)的圖像)?;蛘咭部梢岳胊rcpy.SelectLayerByLocation_management函數(shù),按照地理位置選擇安全射界區(qū)域。 圖3 BL-1A型火箭彈作業(yè)安全射界區(qū) 由于火箭防雹具有操作簡易、安全性好等優(yōu)點,不少地區(qū)在防雹作業(yè)裝備更新時都選擇了火箭作業(yè)裝備[16]。為了滿足地面火箭作業(yè)中繪制安全射界圖的業(yè)務(wù)需要,本文利用ArcPy庫探討了人影地面作業(yè)點安全射界圖(以BL-1A火箭為例)的自動化繪制方法,保證了繪制的科學(xué)性和準(zhǔn)確性,有助于開展安全作業(yè),保障人民生命財產(chǎn)安全和社會穩(wěn)定。 基于ArcPy構(gòu)建的自動化繪制方法,設(shè)計思路清晰,操作簡單:通過人影作業(yè)點(經(jīng)緯度、海拔、類型、等級、地址)、火箭型號、地理影像底圖、地形圖數(shù)據(jù)、基礎(chǔ)地理信息數(shù)據(jù)等保密數(shù)據(jù)的入庫管理,自動繪制水平距離圈、射擊距離圈、方位線段和安全射界區(qū);基于精確的地圖底圖,可以實現(xiàn)按照相關(guān)行業(yè)標(biāo)準(zhǔn)要求,輸入作業(yè)點坐標(biāo)、火箭器具型號等實時輸出人工影響天氣作業(yè)安全射界圖。 本文探討了安全射界區(qū)的自動繪制辦法,但面對基層業(yè)務(wù)人員操作簡易、一鍵出圖的需要,還需針對安全射界圖中的文字說明、標(biāo)題、表格等非圖形要素完善自動生成方法。4.6 繪制安全射界區(qū)
5 結(jié)論與討論