王帝文
摘要:在地輿信息體系開展飛速開展的今日,越來越多的職業開始運用GIS來剖析處理問題。近年來恐懼實力有所昂首,安全形勢不容樂觀,且犯罪案件的發作具有隨機性,傳統的調度辦法現已無法滿意警方快速反應的需求,為了完結實時調度功用,本文側重論述了空間查詢、實時定位、途徑剖析技能的完結辦法,研討怎么運用ArcEngine二次開發警務調度渠道。
關鍵詞:GIS;實時調度;二次開發
1、導言:為了滿意當下快速出警的需求,許多大城市的警務部分開始運用警車調度渠道,作為沖擊犯罪分子的高科技兵器,但現在在運轉的警務渠道大多以底層開發為主,缺陷是開發周期長,技能施行難度大,保護本錢高,使得許多偏僻地區的警務部分,因為資金緊張、技能缺少而難以完結。本文介紹的運用ArcGIS Engine進行二次開發,運用C#作為開發言語,其長處是能夠快速樹立體系結構,大幅度縮短軟件開發周期,憑借ArcGIS供給的地輿數據剖析接口,封裝了空間查詢、緩沖區剖析、途徑剖析等一系列功用,為完結警車的實時調度而效勞。經過這種辦法做出的產品功用齊備,價格低廉,保護簡略,兼容性好,可擴展性強,特別合適中小城市日常的作業需求,較大型警務渠道其性價比更高。
2、總體設計
2.1需求查詢。進入21世紀,國內城市化腳步加速,城市的安全形勢卻不容樂觀,導致出警規模和出警強度進一步加大,但許多偏僻城市的警務部分關于警力調度還停留在初級階段,即運用紙質地圖進行人工查詢定位,這種辦法功率低、差錯大,很簡單因為人為判別失誤而延誤出警時間,構成交通癱瘓、公民財產損失等一系列嚴峻后果。因而,本文總結了警務部分存在的實際需求:①在電子地圖上,實時更新警車方位。②當發作案情時,能快速對案發地址進行定位。③依據具體情況,擬定出警最優路途,輔佐指揮者實時調度。
2.2開發渠道。警務實時調度體系挑選老練的win7操作體系,ESRI的ArcGIS Engine9.3為開發渠道,Visual Studio 2008為開發環境,C#為開發言語。ArcGISEngine是完好的嵌入式GIS組件庫,可在多種編程言語中調用接口,它的中心是由ArcObjects一組開發包組成,可將ArcGIS的功用嵌入到其他應用軟件中,這樣的程序裝置時就不需求裝置ArcGIS專業軟件,極大地減輕了警務部分的運轉擔負,因而適用于警務實時調度體系的二次開發。
3程序設計及完結
3.1程序界面設計。在完結體系剖析功用之前,首要應樹立地圖顯現結構,一般有兩種辦法,一種合適于功用要求較高的程序編寫,一切的控件由自己進行代碼編寫,一般用于底層開發;另一種就是運用ArcEngine供給的各項控件,快速樹立界面,具體如下:在VS2008中,咱們能夠新建一個Windows窗體項目,然后從ArcGISWindowsForms選項卡向其間增加ToolBarControl、TOCControl、MapControl控件,并別離設置特點窗口中的Dock為Top,Left,Fill,完結窗口布局,即頂部為東西欄、左邊為圖層列表,主作業區為地圖控件,如圖1所示。
ToolBarConrol控件供給了許多Commands和Toolsets,完結對地圖控件的操作,常用的有Open(翻開地圖文件)、Zoom in/out(擴大縮小)、Pan(拖動地圖)等,咱們能夠依據自己的需求增加相應的指令和東西。除此之外,ArcEngine供給了一種模板—MapControl Application,其間現已嵌入各種開發所需的根底控件,便于咱們快速進行其他功用的開發,不光節約了時間,也下降根底出錯率,本文就選用這個模板作為軟件界面。
3.2增加圖層
在ArcGIS中地圖是由點、線、面三種類型的矢量數據組成,這些要素類以Shapfile的格局存儲在地輿數據庫Geodatabase中,咱們能夠經過ArcCatalog對地輿數據進行辦理,將所用的要素類放在一個要素數據會集,一致數據規范。為了滿意警車的定位調度功用,需求Map增加含有地標、路途、居民地信息的要素類,具體完結如下:
(1)為了增加要素類到地圖中去,首要從東西箱中找到MenuStrip(菜單欄)并增加,然后在菜單欄中鍵入一個“增加圖層”的菜單項,如圖2所示。
(2)雙擊進入代碼編寫頁,首要用到的接口有IWorkspaceFactory,IFeatureWorkspace,這兩個接口用于樹立一個作業空間以拜訪地輿數據庫,樹立數據庫銜接后運用IFeatureClass接口實例化—個要素類目標,將數據庫中的要素類賦給當時目標,完結數據的傳遞,但為了顯現在地圖上,就需求將要素類增加到圖層中去,經過IFeatureLayer接口,在空圖層中參加已獲得要素類,終究完結圖層增加功用。
(3)假如需求增加多個圖層,批量樹立目標并修正OpenFeatureClass的參數即可,此處不做贅述。在完結“圖層增加”后,依據程序設計意圖,需求將地圖上的地址稱號進行標示,因為標示是作為圖層特點存在的,因而能夠運用TextElement制作,其原理是將特點表的某個特點創立TextElement目標,然后調用IGraphicsContainer接口的AddElement辦法進行標示的增加,程序運轉作用如圖3所示。
3.3報警定位。地圖包括信息量大,人工查找精度低,速度慢,報警定位作為警務調度的第一步,假如不能快速精確地履行,將會引發嚴峻的案情延誤問題。運用ArcEngine就能夠快速組成空間查詢功用,依據已增加的點圖層,運用圖層特點中的稱號字段進行空間特點查詢,以完結對案發地的方位定位,查詢流程如圖4所示。
依據報警人供給的地址信息,運用空間特點查詢并高亮案發地址。完結空間特點查詢需用到以下首要接口:(1)IFeatureLayer,獲取需求進行查詢的圖層。(2)IFeatumSelection,此接口能夠用來挑選指定圖層的要素,他的成員SelectFeatures能夠依據QueryFilter的實例化目標,挑選具有限制條件的要素并高亮顯現在地圖上。(3)IC!ueryFilter,該接口能夠協助用戶過濾不需求的值,它的WhereClause特點用于設定過濾表達式,限制回來的要素,即Select..Where..句子中的條件句子,該句子能夠經過設置一個TextBox進行傳遞,但需求留意的是,Geodatabase支撐sQL言語作為含糊查詢句子,所以該句子在編寫代碼時要給字段名加上中括號([字段名]),限制條件加上雙引號,這樣格局的句子才干在數據庫中履行,考慮到地圖的大數據量,特界說一個縮放函數,將選中的要素進行居中顯現,程序運轉作用如圖5所示。endprint
3.4警車實時定位。警車在日常巡查使命中,時間都有或許接到調度指令,只要把握警車的實時方位,才干擬定出最優出警路途,用TextElement在地圖上模仿車輛的行進軌道,其路途由一組點(x,y)構成,x為經度,y為緯度,數據的獲取辦法是接納車載GPS傳回的經緯度坐標,示意圖如圖6所示。
運用回來的經緯度坐標,能夠在地圖的指定方位畫出TextElement,行將警車作為文字圖元在GraphicsContainer中畫出,為了杰出顯現警車,可用ICallout接口界說—個氣泡。繪出警車后,下一步是讓警車“動起來”,因為要求數據的實時性,所以需求向程序中參加一個Tuner控件,以設定距離對經緯度數據(x,y)進行更新,終究參加一個Buuon控件作為功用敞開按鈕。這些文本圖元將不占用圖層資源,只在GraphicsContainer中繪出,極大地節約內存空間,提高了程序反應速度,運轉作用如圖7所示。
3.5出警路途擬定
3.5.1無向網絡。擬定出警路途需求用到最短途徑剖析功用,運用它的條件是樹立無向網絡,GIS中的網絡,是指線狀要素相互銜接所構成的—個線狀形式,如路途網。將經過修改的點狀和線狀要素獨自提取出來作為一個圖層,這就是能夠進行途徑剖析的路途網絡模型。ArcEngine中無向網絡的樹立需求用到網絡數據集,它能夠在ArcCatalog中進行完結。首要創立一個FeatureDataset,將路途中心線要素導入,新建一個具有拓撲聯系的網絡數據集,設置連通性和轉彎規矩,然后創立相應的網絡特點,如字段名為Meters,類型為double,它表明的是路途長度,又如字段名為OneWay,類型為Text,意圖是為了區別具有不同通行特點的路途。當悉數設置完結后,體系將主動生成一個匯總陳述,承認無誤即可倉犍網絡數據集。
3.5.2最短途徑剖析。在上文中現已處理了報警定位和警車定位的問題,依托構建的路途網絡模型,咱們運用GIS的最短途徑剖析功用,體系會在兩點間主動規劃出一條最短途徑,其原理是新建一個空圖層,獲取網絡數據會集的點要素和線要素并增加進去,然后斷定所要剖析的途徑點,設置捕捉容差,進行字段匹配,再將途徑點加載到圖層中,經過INAContext接口設置剖析參數,終究在地圖上顯現出最短途徑及成果信息。因為網絡剖析較雜亂,因而咱們新建了一個窗口以作剖析界面,程序運轉作用如圖8所示。
定論:本文從GIS的界說、功用下手,介紹了現階段警務部分的實際需求,一起總結了現有警務渠道存在的問題,提出了運用ESRI公司的二次開發東西ArcEngine結合Visual C#開發環境快速樹立警務調度渠道的辦法,并對樹立該渠道的理論根底及完結進程進行了具體的論述,并展現了程序運轉作用,這種辦法大大下降了開發難度,下降了開發本錢并縮短了開發周期,并且樹立的渠道具有較強的空間查詢和剖析功用。endprint