胡睿瑾
(云南電網有限責任公司昆明供電局,昆明 650011)
基于SQLite數據文件的配網GIS自動成圖方法
胡睿瑾
(云南電網有限責任公司昆明供電局,昆明 650011)
主要闡述了從SQLite數據包到配網GIS系統中電網設備數據的自動轉換過程。包括通過SQLite數據文件實現移動端和配網GIS系統的數據交互,在配網GIS系統內實現SQLite文件的讀取、數據驗證、自動成圖、自動建立電氣拓撲等一系列的自動操作。
SQLite;配網GIS;自動成圖
配網GIS系統作為配網設備圖形數據、屬性數據、拓撲數據的管理平臺,可以為配網工作人員提供完整的配網網架信息、配網設備信息,為配網管理提供信息化手段。但由于配網設備數量巨大,如采用傳統的數據維護手段,逐個地進行手工錄入和維護,需要大量的數據錄入人員,在配網GIS系統中進行長時間的數據維護工作,且存在維護工作量大、投入資金多、容易出錯的問題。
另一方面,隨著智能移動設備的發展,通過移動端進行數據采集的技術也日趨成熟。通過移動端進行現場采集,再從移動端將數據導入配網GIS進行自動成圖就成為了業務發展的迫切需求。
SQLite是一款輕型的數據庫,實現了自給自足的、無服務器的、零配置的、事務性的SQL數據庫引擎,是遵守ACID的關系型數據庫管理系統,它的設計目標是在嵌入式設備使用,目前已經在很多嵌入式產品中使用[1]。其占用資源非常的低,在嵌入式設備中,只需要很低的內存就夠了,并且能夠支持Windows/ Linux/Unix等主流的操作系統,同時能夠跟很多程序語言相結合,比如C#、PHP、Java等。
SQLite具有以下特點:
·SQLite不需要配置,這意味著不需要安裝或管理。
·一個完整的SQLite數據庫是就是一個單一的跨平臺的磁盤文件。
·SQLite是非常小的,是輕量級的,完全配置時小于400KiB,省略可選功能配置時小于250KiB。
·SQLite是自給自足的,這意味著不需要任何外部的依賴。
·SQLite事務是完全兼容ACID的,允許從多個進程或線程安全訪問。
·SQLite支持SQL92(SQL2)標準的大多數查詢語言的功能。
·SQLite使用ANSI-C編寫的,并提供了簡單和易于使用的API。
·SQLite可在 UNIX(Linux,Mac OS-X,Android,iOS)和Windows(Win32,WinCE)中運行。
基于以上的特點,本方法采用SQLite作為移動端的數據庫,并且將其作為移動端和配網GIS系統間交互的文件格式。
3.1SQLite數據文件的讀取
移動端完成數據采集后,只需要將SQLite文件傳送給配網GIS,后續的操作由配網GIS系統完成。SQLite的數據文件為*.db類型的文件,本文所述的配網GIS是采用C#開發的Windows應用程序。因此,此處主要描述通過C#對db文件進行解析和讀取。
System.Data.SQLite是一個開源的 SQLite類庫,現在由SQLite小組維護。這個類庫無需.NET Framework支持,它內部包含了一個ADO.NET 2.0引擎,所以.NET開發人員可以利用System.Data.SQLite方便地開發.NET程序。System.Data.SQLite實現了眾多的接口和方法,支持對db文件的各類讀、寫操作。為了便于后續的驗證和成圖,減少數據通信的次數,本方法通過System.Data.SQLite類庫,一次性將移動端上傳的db文件讀取至配網GIS系統的中進行緩存。
如將db文件的讀取至DataSet,代碼如下:

3.2數據質量校驗
配網GIS系統對數據質量有著嚴格的要求,因此在生成配網設備之前需要根據配網GIS系統預定義的數據規則進行校驗。如果有不滿足規則的數據會進行相應的提示,需要將問題數據修改正確后才能進行導入。
為了方便隨時對db文件中數據進行校驗,滿足用戶進行離線的需求,將配網GIS系統對數據質量要求進行提煉,得到了配網GIS系統的數據質量校驗規則。并把這些規則導出為db文件,將規則數據保存到一個單獨的SQLite數據庫中,以便于校驗工具在離線的情況下讀取db文件信息進行數據校驗,而無需等到登錄系統后再進行校驗。
·校驗所有必填字段是否有值。
·校驗有備選值的字段是否在備選值中。
·校驗設備的功能位置是否存在。
·校驗技術參數對應的設備是否存在。
·校驗饋線的電源點是否正確。
·校驗設備的前一構筑是否存在。
·從電源點開始,校驗所有構筑設備的順序是否正確。·校驗構筑設備和線纜設備的連接是否正確
3.3自動成圖
配網GIS系統中的設備信息只要有3類數據,分別是:屬性數據、圖形數據、拓撲數據。其中,圖形數據和拓撲數據是GIS系統中特有的,本文重點闡述此兩類數據的生成,而屬性數據和其他的信息系統一樣,在此不進行詳細闡述。
現代水文考察發現漢江有三源:中源漾水,北源沮水,南源玉帶河,均在秦嶺南麓陜西省寧強縣境內。流經沔縣(今勉縣)稱沔水,東流至漢中始稱漢水;自安康至丹江口段,古稱滄浪水。
3.3.1生成圖形數據
配網GIS系統中主要包括3類圖形數據:點、線、面。其中以點和線為主,比如:桿塔、柱上開關、柱上變壓器等屬于點設備,而導線、電纜等屬于線設備。由于Oracle數據庫中圖形采用MDSYS.SDO_GEOMETRY類型表示,而db文件中的主要是坐標數據(x,y,z),因此需要進行一定的轉換才將db文件中的坐標信息寫入到數據庫中。
為了最大化地復用代碼,將點和線圖形抽象為IGTGeometry,從而實現對點設備和線設備的統一處理。這需要聲明一個圖形接口類,以下是偽碼:

3.3.2生成拓撲數據
為了保證拓撲數據的正確性,本文采用先圖形后拓撲的思路,即等到所有的圖形數據都生成完畢后,再生成拓撲關系。由于配網GIS中的拓撲關系屬于多對多的關系,采用先圖形后拓撲的方法可以避免關系丟失或者不完整的問題。配網GIS中的拓撲數據主要包括2類,分別為包含關系和連接關系。
生成包含關系是采用“多退少補”的思路,即刪除已經不存在的關系,增加新建的關系,生成包含關系的偽碼如下:
//獲取此設備已經包含的線設備信息
var currentContainFeats=PowerNode.GTObject.GetContain-Features();
//在原關系中存在的,在新關系中不存在的,刪除
DeleteNotExistOldContainRelation(currentContainFeats);
//在新關系中存在的,在原關系中不存在的,新增
AddNewContainRelation(currentContainFeats);
生成連接關系方法與包含關系類似,同樣采用“多退少補”的方法。偽碼如下:
//處理構筑節點和前一導線的關系
var targetConn=new List〈IGTKeyObject>{PowerNode. GTObject};
UpdateConnectRelationByDiff(preWireObject.GTObject,targetConn);
//處理構筑節點和后續導線的關系
targetConnFeats=_relatedWires.ToList();
targetConnFeats.Remove(preWireObject.GTObject);
UpdateConnectRelationByDiff(PowerNode.GTObject,target-ConnFeats);
本文主要闡述了通過SQLite數據文件為載體,實現db文件到配網GIS系統設備信息的轉換過程。主要包括在配網GIS系統內讀取db文件,進行數據驗證、自動成圖、自動建立電氣拓撲等一系列的自動操作。本文所述的方法已經在實際配網業務中得到應用,實現了配網GIS設備的自動生成,為提升配網GIS的數據采集效率提供了技術支持手段。
10.3969/j.issn.1673-0194.2015.21.099
TN919
A
1673-0194(2015)21-0191-03
2015-09-07