?

基于ArcPy的安全射界區自動生成技術研究

2024-01-17 02:30李成鵬周明剛鐘亞含
云南地理環境研究 2023年6期
關鍵詞:作業點火箭彈A型

李成鵬,周明剛,鐘亞含

(1.云南省人工影響天氣中心,云南 昆明 650034;2.云南省氣象臺,云南 昆明 650034;3.云南省氣象科學研究所,云南 昆明 650034)

0 引言

目前人工影響天氣作為服務氣象防災減災的重要手段,多年來在云南省的防雹減災、庫塘蓄水和生態環境保護等方面發揮了重要作用,張振秀等[1]對洱海地區的人工增雨作業研究中指出,開展人工增雨作業后的影響區降水量比非作業區高,作業效果明顯;王菲等[2]發現,及時申請防雹作業、連續加密作業,可有效地抑制回波增長。高炮和火箭是目前人工防雹的主要地面作業裝備,目前云南省16州(市)人影部門裝備有900多門火箭發射系統,由于火箭發射架屬于武器范疇,火箭彈是軍轉民用品,火箭作業點、發射方位及仰角的選擇是火箭安全作業的重要因素。按相關規定[3-4],作業點應有符合要求的安全射界圖。在增雨、防雹作業中根據相關標準[5]自動繪制火箭安全射界圖,既能夠有效防止發生火箭發射事故,又可切實減少空中未爆彈丸落地時造成對地面人員或重要設施的損害,減少安全隱患。

目前相關研究多集中于人工影響天氣作業安全射界圖的繪制,常采用ArcGIS[6-8],也有AutoCAD[9]、Photoshop[10]、CorelDRAW[11]等軟件。使用后列的這些軟件繪制安全射界圖時都存在缺少地理坐標參考、繪圖比例難以掌握、繪圖操作不易掌握和制作過程相對繁瑣等不足;而使用AutoCAD和CorelDRAW雖然在在控制比例、精確定位方面有優勢,但未給出安全射界區這一關鍵問題的繪制方法,仍不滿足基層業務人員操作簡單、繪制精準和容易校對的業務需要。已有研究表明利用GIS技術和Python腳本語言可直觀的分析人工影響天氣作業安全射界結果,操作方便快捷,為地面火箭作業安全提供了科學依據[12]。其中ArcGIS地理制圖模塊繪圖符合人工影響天氣作業安全射界圖制作行業標準,一是ArcGIS提供了專業地理數據分析、空間參考、地圖制圖表達等功能,二是調用地理處理工具接口、函數、類,能精準自動化制作安全射界區,實時動態顯示安全射界區,可為人工增雨和防雹工作提供安全作業建議,也可為作業預警產品等決策信息預留接口,增強地面人影作業指揮管理的安全性、科學性和精準性[13]。同時Python語言語法簡潔易懂,相較于其他編程語言上手門檻低,很適合初學者快速入門。

基于以上概述,本文研究以Python為腳本語言,充分利用ArcPy庫的空間參考模塊、空間分析模塊、制圖表達模塊等接口,通過作業點坐標,火箭彈不同發射仰角的理論最大射程參數,實現符合專業地理制圖要求和射界圖制作行業標準的安全射界區的自動化繪制。

1 基礎數據分析

GNSS定位人影作業點,主要勘測作業點經度、緯度、海拔;云南省地理信息公共服務平臺提供最新的遙感影像地圖、街道地圖,能清晰看到村莊、學校、政府部門、倉庫、化工用地、主要道路等信息;依據國家標準《人工影響天氣火箭作業點安全射界圖繪制規范》查詢有關火箭彈參數和最大射程增量系數[14],因不同火箭彈的繪制方法基本一致,理論最大射程只影響增量系數和安全射界圖的最大范圍圈。本文以常見的BL-1A型火箭彈為例,同時考慮到云南省高海拔的作業點較多,選擇海拔1 200 m為例,相對海拔0 m的理論最大射程增量系數為1.10,計算海拔1 200 m的BL-1A型火箭彈的理論最大射程,結果見表1[14]。

表1 海拔1 200 m的BL-1A型火箭彈不同發射仰角的理論最大射程

2 ArcPy模塊說明

ArcPy入門難度低、可操作性強,同時基于Python語言的便攜性,可以很方便地插入各種系統,為后續的應急分析研究帶來很大的便利[15]。ArcPy可以高效的調用ArcGIS中存在的各種分析、處理工具及Python模塊,人影安全射界區自動化繪制的實現主要使用了ArcPy中的management模塊和analysis模塊(表2)。

表2 ArcPy 函數說明

3 系統架構設計

結合基礎地理信息空間數據和BL-1A型火箭彈參數,利用ArcPy綜合分析作業點安全射界,制作安全射界圖。整個系統的運行的平臺是VScode,編碼語言用的是Python 2.7,編碼調用的函數包主要是ArcPy。系統整體架構如圖1,首先將勘測文件數字化,生成對應經緯度上的人影作業點,根據作業點生成水平距離圈、方位線段,結合BL-1A型火箭彈參數生成射界距離圈、水平距離刻度,然后應用arcpy.SymDiff_analysis模塊生成安全射界區,以遙感影像為底圖標注安全射界編號,標注刻度,最后應用arcpy.mapping制圖模塊實現對

圖1 作業點安全射界繪制流程

Fig.1 The process of drawing safe shooting range zones of operation sites

作業點、敏感區域、安全射界范圍表、作業單位、作業裝備及年檢等基礎信息繪制出圖。

4 自動化繪制安全射界

4.1 安全射界底圖

以高清地圖為底圖,選用近2年內空間分辨率不低于15 m的衛星遙感影像圖,或1:250 000以上比例尺地圖作為底圖,能夠顯示行政區域、道路線、水系、鐵路、高速公路、行政村莊等基礎地理信息圖層。

4.2 定位作業點

本文根據GPS勘測定位的經緯度、高程文件,使用CreateFeatureclass函數可以在GIS中定位創點;人影作業點較多時,可使用MakeXYEventLayer函數批量定位創點。

部分代碼如下:

x =24.XXXXXX

y=101.XXXXXX #GPS勘測定位的經緯度坐標

pointGeoList=[]

spatial_reference=arcpy.SpatialReference(4490)#用China Geodetic Coordinate System2000作為空間參考

operating_sites=arcpy.Point(y,x)

point_geo=arcpy.PointGeometry(operating_sites,spatial_reference)#創建點要素

pointGeoList.append(point_geo)

arcpy.CopyFeatures_management(pointGeoList,“operating_sites.shp”)

#arcpy.MakeXYEventLayer_management(operating_sites.table,x,y,operating_sites,spatial_reference,z)

如果作業點多時,可用MakeXYEventLayer_management函數,根據源表中定義的 X 和Y坐標批量創建新的點要素圖層。表包含 Z 坐標(高程值),則可以在創建事件圖層時指定該字段。

4.3 繪制水平距離圈

以定位創建的作業點為圓心,利用MultipleRingBuffer函數,以1 km為半徑繪制實線內圈圓,以火箭最低發射仰角的理論最大射程向上取整后的數值為半徑繪制實線外圈圓,在自圓心正東方向的橫軸上,以1km間隔用GeneratePointsAlongLines函數標出距離刻度,并標注內、外圈圓對應的距離刻度數值,實線內外圈圓、距離刻度線寬為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繪制圓環

arcpy.GeneratePointsAlongLines_management(horizontal_line,Horizontal_scale,“DISTANCE”,Distance=“1Kilometers”)#按1km間隔,生成水平距離刻度

4.4 射擊距離圈

使用MultipleRingBuffer函數和GeneratePointsAlongLines函數,結合BL-1A型火箭彈發射仰角(55°~85°)理論最大射程為半徑,按5°間隔生成射擊距離圈,線寬為0.26 mm,在自圓心向正北方向的縱軸上,標注對應射擊仰角數值。

部分代碼如下:

BL1A_distances=[3.202,4.184,5.034,5.818,6.491,7.163,7.796]#BL-1A型火箭彈不同發射仰角的最大射程

bufferUnit=“Kilometers”

arcpy.MultipleRingBuffer_analysis(“operating_sites.shp”,BL1A_ring,BL1A_distances,buffer Unit,“”,“ALL”)

4.5 繪制方位線

使用BearingDistanceToLine函數,以作業點為中心,正北方向為起始角,15°為分割角進行距離圈等角分割(從實際應用情況出發可任意設置角度等分分割),距離圈等分分成若干個扇形區。在最外水平距離圈外側標注對應方位角數值,方位線線寬為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”,“”,“”,“”,“”,“”,“”,“”)#在創建好的屬性表里增加分割角字段

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”,“lines”,“y”,“x”,“Maximum_range”,bufferUnit,“degrees”,“DEGREES”,“RHUMB_LINE”,“”,spatial_reference)#用原點夾角距離定義方位線。

start_x表示起點緯度坐標字段,start_y表示起點經度坐標字段,distance表示從起點出發的距離,degrees表示北偏方位角,bearing輸出線旋轉的方位角方位角,以北為基準方向按順時針進行測量(圖2)。

圖2 方位線參數

4.6 繪制安全射界區

按照人工影響天氣火箭作業點安全射界圖繪制規范要求,安全射界范圍選取要遵循以下原則:

(1)以發射架中心為基準,火箭發射正前方1km內應無人口密集區和重要設施。

(2)避開人口密集區,如:城鎮、村莊、學校等。

(3)避開重要的設施,如:油庫、化工廠、文物古跡、高速鐵路、軍事設施等。

(4)安全射界邊界與人口密集區和重要設施的距離要大于200 m。

通過調用arcpy.SymDiff_analysis:

arcpy.SymDiff_analysis(Densely_populated_infrastructure,BL1A_ring,Safe_area,“ALL”,clusterTolerance),使用SymDiff交集取反函數,將選取的重要設施及人口密集區等基礎地理信息要素與安全射界扇形范圍交集取反,得出需要的安全射界區,其結果如圖3(分別通過調用“天地圖”提供的街道“矢量地圖”和衛星“影像地圖”得到,其中“矢量地圖”的數據較為豐富,按照行政等級逐步列出省市、村鎮、街道辦的名稱以及街道的路名等,“影像地圖”的清晰率較高,地圖可以識別出偏遠地區的圖像)?;蛘咭部梢岳胊rcpy.SelectLayerByLocation_management函數,按照地理位置選擇安全射界區域。

圖3 BL-1A型火箭彈作業安全射界區

5 結論與討論

由于火箭防雹具有操作簡易、安全性好等優點,不少地區在防雹作業裝備更新時都選擇了火箭作業裝備[16]。為了滿足地面火箭作業中繪制安全射界圖的業務需要,本文利用ArcPy庫探討了人影地面作業點安全射界圖(以BL-1A火箭為例)的自動化繪制方法,保證了繪制的科學性和準確性,有助于開展安全作業,保障人民生命財產安全和社會穩定。

基于ArcPy構建的自動化繪制方法,設計思路清晰,操作簡單:通過人影作業點(經緯度、海拔、類型、等級、地址)、火箭型號、地理影像底圖、地形圖數據、基礎地理信息數據等保密數據的入庫管理,自動繪制水平距離圈、射擊距離圈、方位線段和安全射界區;基于精確的地圖底圖,可以實現按照相關行業標準要求,輸入作業點坐標、火箭器具型號等實時輸出人工影響天氣作業安全射界圖。

本文探討了安全射界區的自動繪制辦法,但面對基層業務人員操作簡易、一鍵出圖的需要,還需針對安全射界圖中的文字說明、標題、表格等非圖形要素完善自動生成方法。

猜你喜歡
作業點火箭彈A型
混合型貨物作業點取送車作業優化通用模型及算法
福州煙爐人工增雨作業點布設的合理性研究*
電網工程安全管控模式探索
六盤水市人工影響天氣高炮作業點安全射界管理
DF100A型發射機馬達電源板改進
A型肉毒素在注射面部皺紋中的應用及體會
A型肉毒毒素聯合減張壓迫法在面部整形切口的應用
AZA型號磨齒機工件主軸的改造
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合