應用ObjectARX開發(fā)給水管網(wǎng)GIS系統(tǒng)
論文類型 | 技術(shù)與工程 | 發(fā)表日期 | 2000-04-01 |
來源 | 《工業(yè)用水與廢水》2000年第2期 | ||
作者 | 王榮和,潘建華,姚仁忠 | ||
關(guān)鍵詞 | 給水管網(wǎng) 計算機管理 GIS ObjectARX | ||
摘要 | 在對AutoCAD2000、ObjectARX、給水管網(wǎng)計算機管理系統(tǒng)和GIS分析的基礎上,提出給水管網(wǎng)計算機管理系統(tǒng)開發(fā)的一般過程和用ObjectARX和擴展字典功能進行管網(wǎng)系統(tǒng)GIS開發(fā)的方法,并通過編寫WDOC軟件系統(tǒng)得到驗證。 |
王榮和 同濟大學環(huán)境科學與工程學院污染控制與資源化研究國家重點實驗室,上?!?00092
潘建華,姚仁忠 上海交通大學土木工程系,上海 200092
摘要:在對AutoCAD2000、ObjectARX、給水管網(wǎng)計算機管理系統(tǒng)和GIS分析的基礎上,提出給水管網(wǎng)計算機管理系統(tǒng)開發(fā)的一般過程和用ObjectARX和擴展字典功能進行管網(wǎng)系統(tǒng)GIS開發(fā)的方法,并通過編寫WDOC軟件系統(tǒng)得到驗證。
關(guān)鍵詞:給水管網(wǎng);計算機管理;GIS;ObjectARX
中圖分類號:TU991.33
文獻標識碼:A
文章編號:1009-2455(2000)03-0048-03
Application of ObjectARX in Developing GIS for Water Supply Pipe Network
WANG Rong-he ?PAN Jian-hua? YAO Ren-zhong
Abstract:A general procedure for the development of computer management sustem for water supply pipe network and a method of developing GIS (Geology Information System) for the pipe network using ObjectARX and expanded-dictionary technology are described based on the analyses of AutoCAD2000 ObjectARX computer management system for water supply pipe network and GIS which have been verified through the compilation of WDOC software system.
Key words:water supply pipe network;computer management;GIS;ObjectARX
概述
AutoCAD是我國給水排水工程領域應用最普遍的CAD平臺之一。目前國內(nèi)編寫的給水排水工程CAD設計軟件,都是以此為平臺進行二次開發(fā)的。在以前的AutoCAD版本中,大多是以AutoLisp作為開發(fā)語言,后來擴展到ADS系統(tǒng)[1][2]?,F(xiàn)在的AutoCAD2000,提供了更多、更方便的二次開發(fā)工具,如VisualLISP、ActivexX、VBA、ADS、ASI等,尤為重要的是,還給出了以面向?qū)ο蟮腣isual C++為開發(fā)語言的ObjectARX,為以AutoCAD為開發(fā)平臺進行CAD軟件二次開發(fā)的廣大設計人員提供了一種更為方便、靈活的工具[3]。
ObjectARX可以共享AutoCAD的地址和空間,深入到系統(tǒng)底層,對AutoCAD進行直接的函數(shù)調(diào)用,速度快、圖形管理方便,軟件代碼的保密性強。ObjectARX應用程序是一個動態(tài)連接庫,不但可以共享AutoCAD的資源,還可以共享Windows、VC++等資源。盡管程序編寫不如AutoLisp方便[4],但其高度的靈活性、強大的功能和對大型系統(tǒng)管理速度的提高,足可以彌補其所有的弱點。
通過應用ARX進行給水管網(wǎng)多工況優(yōu)化設計計算軟件WDOC系統(tǒng)的編制[5][6],與AutoLisp/Visual LISP進行比較,并與對象添加擴展數(shù)據(jù)和擴展字典技術(shù)進行了比較,得出用ObjectARX作為編程語言,應用擴展字典技術(shù),可以方便地編寫給水管網(wǎng)GIS系統(tǒng)的結(jié)論。
1 給水管網(wǎng)GIS系統(tǒng)功能分析[2]
給水管網(wǎng)GIS系統(tǒng),不同于一般的需要存貯大量的非圖形和圖形信息的GIS系統(tǒng),而是有其特殊性,主要表現(xiàn)在如下幾個方面:即地形、地貌信息只是作為背景知識,不需要存貯大量的非圖形信息;節(jié)點、管段、閥門、水泵等之間都有固定的相互聯(lián)系;管網(wǎng)GIS除具有GIS的功能外,還需具備管網(wǎng)水力計算、設計、管理、調(diào)度等方面的功能。因此,建立給水管網(wǎng)GIS系統(tǒng),不能單純地從一般GIS的功能進行系統(tǒng)分析和設計,而是需針對給水管網(wǎng)的目的和特點進行。
自20世紀90年代初開始,深圳自來水公司就開始進行GIS系統(tǒng)的開發(fā),開辟國內(nèi)自來水行業(yè)GIS的先河。上海、北京、南京、廣州等城市的自來水公司也先后開始進行GIS系統(tǒng)的開發(fā),當前國內(nèi)大中型城市的自來水公司都正著手進行這一領域的研究與開發(fā)工作。但到目前為止,尚沒有一個單位開發(fā)的給水管網(wǎng)GIS系統(tǒng)能夠承擔起真正的GIS功能,其根本原因在于各單位只是為了開發(fā)GIS而開發(fā)GIS,沒有考慮給水管網(wǎng)系統(tǒng)的特殊性和開發(fā)給水管網(wǎng)GIS的真正目的:集給水管網(wǎng)水力計算模型、優(yōu)化設計與調(diào)度管理模型、SCADA (Supervisory Control And Data Acquisition)、PLC (Programming Logical Control)、管網(wǎng)GIS為一體的給水管網(wǎng)計算機管理系統(tǒng)?,F(xiàn)大多數(shù)單位開發(fā)的給水管網(wǎng)GIS系統(tǒng)與管網(wǎng)水力計算模型、SCADA等系統(tǒng)相互獨立,信息不能共享。因此存在信息的更新、模型管理、實測數(shù)據(jù)等不統(tǒng)一和工作重復的問題。另外,由于各部門行政管理的不一致,更增加了系統(tǒng)的復雜性和軟件運行上的難度,造成許多給水管網(wǎng)GIS系統(tǒng),一旦開發(fā)工作完成,則該GIS生命即自行結(jié)束的狀況。
從圖1可以看出,合理的管網(wǎng)計算機管理系統(tǒng),應是以數(shù)據(jù)庫為核心,現(xiàn)狀分析、管網(wǎng)模型、GIS、SCADA、水量預測預報、優(yōu)化設計、CAD、優(yōu)化調(diào)度等模塊都是計算機管理系統(tǒng)的內(nèi)容之一。其主要的內(nèi)在聯(lián)系是:GIS系統(tǒng)提供管網(wǎng)圖形信息;管網(wǎng)現(xiàn)狀分析對GIS基礎數(shù)據(jù)進行校正,使GIS能夠符合實際工作的要求;管網(wǎng)模型是對管網(wǎng)系統(tǒng)進行水力分析,基礎數(shù)據(jù)來源于GIS;水表和用戶可以在GIS中查詢;水量預測預報系統(tǒng),是以數(shù)據(jù)庫中的歷史數(shù)據(jù)為基礎進行分析;SCADA系統(tǒng)用于把管網(wǎng)、水廠、泵站等的實測數(shù)據(jù)傳送到數(shù)據(jù)庫,便于其它系統(tǒng)利用這些數(shù)據(jù)進行分析;優(yōu)化設計則是在現(xiàn)狀分析和GIS系統(tǒng)的基礎上,進行規(guī)劃、設計與分析;CAD則直接可以利用GIS的基礎數(shù)據(jù)和優(yōu)化設計結(jié)果,進行施工圖設計;報表輸出,是按照自來水公司的要求,定期產(chǎn)生報表系統(tǒng);圖形管理是對GIS圖素的添加、刪除,對工程施工圖、管網(wǎng)模型圖、現(xiàn)狀分析圖等進行管理。優(yōu)化調(diào)度是利用數(shù)據(jù)庫的基礎資料、當日當時的現(xiàn)狀資料、GIS的圖形資料、SCADA的實測資料、水量預測的供水資料等進行全范圍調(diào)度管理,并發(fā)送調(diào)度指令。
2 擴展字典在給水管網(wǎng)GIS系統(tǒng)中的應用
AutoCAD2000的一個最大突破,就是把圖形管理數(shù)據(jù)庫化。通過對象字典,可以在給水管網(wǎng)圖形中加入所需要的各種信息,如節(jié)點編號、節(jié)點流量、自由水頭、用水量變化系數(shù)等。
給水管網(wǎng)的相關(guān)部件,如節(jié)點、管段等,它們之間都是有相互聯(lián)系,而不是相互獨立的。對于管段來說,它由上、下游節(jié)點編號、管長、管徑、管道摩阻等固定信息和流量、流速、水頭損失、水力坡度等可變信息組成,并且還同與之相連的控制閥相聯(lián)系。每當對管段進行操作時,需同時考慮與之相連的相關(guān)部件,并對相關(guān)部件進行相應的操作。一般的處理方法是,把相應的非圖形信息存貯于其它類型的數(shù)據(jù)庫中,每當處理時,可以通過圖形的ID號來查找相應的數(shù)據(jù)庫,并按照對圖形信息操作的過程,再相應操作數(shù)據(jù)庫。這種處理方法,在處理速度和靈活度上,存在一定的缺點。而用擴展字典技術(shù),就可以在進行圖形處理的同時,進行相關(guān)的數(shù)據(jù)處理,方便而又迅速。
擴展數(shù)據(jù)(xdata)由應用程序創(chuàng)建,并且可以添加到所有圖形對象中。數(shù)據(jù)使用DXf組碼的1000到1007之間的范圍。擴展數(shù)據(jù)的優(yōu)點是有效地利用了空間,并且對添加少量數(shù)據(jù)到一個對象中是十分方便的。但xdata被限制在16K和DXF組碼,為使用帶來許多不便[7][8]。
擴展字典解決了擴展數(shù)據(jù)的一系列缺點,提供了一個具有添加數(shù)據(jù)能力更強、更靈活的機制。每個對象都可以有一個擴展字典,可以容納任意一套AcDbObject對象。利用這一機制,若干應用程序可以附加數(shù)據(jù)到同一個對象上。下面是一個利用擴展字典技術(shù),對管段信息進行擴展的VC++程序[3]:
selectObject()函數(shù)提示用戶選擇實體,在選擇到實體后,打開并返回指向這一實體的指針。
AcDbObject* selectObject(AcDb::OpenMode openMode)?
? {ads_name en;? ads_point pt;
char handleStr[132]; AcDbobjectId eId;
Acad::ErrorStatus retStat;
acedEntSel(" 請選擇實體:",en,pt); ∥提示用戶選擇實體
retStat=acdbGetObjectId(eld?en); ∥把ads name變?yōu)閷嶓wID號
AcDbObject* pObj;?
if((retStat=AcdbOpenObject(pObj,eId,openMode))!= AcAd::eOk)?
{∥打開實體
AcutPrintf(“打開實體錯誤?。。 ?;
return NULL;
?}
return pObj;? ∥返回實體指針
?}
createXrecord()函數(shù),用于對選擇實體添加數(shù)據(jù)字典。其中Name為擴展字典名,head為通過Ads_buildlist()建立的數(shù)據(jù)表。
void creatXrecord(char* Name,struct resbuf* head)
{AcDbXrecord*pXrec=new AcDbXrecord;? AcDbObject* pO
bj;?
AcDbObjectId dictObjId,?xrecObjId;? AcDbDictionary* pDict;?
pObj=selectObject(AcDb::kForWrite); ∥調(diào)用selectObject()函數(shù)
if(pObj=NULL) return;? ∥如果選擇實體不存在,則退出
pObj->createExtensionDictionAry() ∥建立選擇實體空的擴展字典
dictObjId=pObj->extensionDictionAry();∥得到所選擇實體的擴展字典的ID號
pObj->close();? ∥關(guān)閉選擇實體
AcdbOpenObject(pDict,dictObjId,AcDb::kForWrite)? ∥打開擴展字典并準備加入新的數(shù)據(jù)
pDict->setAt(Name,pXrec,xrecObjId);
pDict->close();? ∥關(guān)閉擴展字典
pXrec->setFromRbChAin(*head); ∥添加數(shù)據(jù)表到擴展字典數(shù)據(jù)庫
pXrec->close();? ∥關(guān)閉數(shù)據(jù)表
?}
通過 createXrecord()函數(shù),可以添加任何數(shù)據(jù)、角度、文字、坐標等到實體中去。對于給水管網(wǎng)GIS系統(tǒng),如對管段加入諸如管段號、起始節(jié)點號、終止節(jié)點號、管長、管徑、管段摩阻等,可以用如下簡單的程序加以方便實現(xiàn)。
void PipeXrec()
{? float PipeDiAmeter,?PipeLength,?PipeHW;
char FromPoint[15],ToPoint[15],PipeNo[15];
∥此處可以通過程序系統(tǒng)或人工輸入法,獲得管段的有關(guān)信息
∥……
struct resbuf* head;?
head=AcutBuildList(?
AcDb::kDxfText,F(xiàn)romPoint,AcDb::kDxfText,ToPoint,?
AcDb::kDxfReAl,PipeDiAmeter,? AcDb::kDxfReAl,
?PipeLength,?
AcDb::kDxfReAl,PipeHW,?
0);
createXrecord(PipeNo,head);
?}
用同樣的處理技術(shù),可以把擴展字典信息提取出來,從而可以方便地對圖形信息進行實時操作。
可以看出,只要編寫如上所述的小程序,就可以在給水管網(wǎng)GIS中進行方便的管網(wǎng)信息加入、查詢、提取與操作。
3 結(jié)束語
給水管網(wǎng)GIS系統(tǒng)的建立,不同于其它專業(yè)的GIS,各圖形元素不但有其自身的物理意義,而且圖形元素之間還存在相應的內(nèi)存聯(lián)系。因此,給水管網(wǎng)GIS系統(tǒng)建立的關(guān)鍵在于管網(wǎng)系統(tǒng)的水力分析,為管網(wǎng)調(diào)度和管理提供決策的依據(jù),而不僅僅是簡單的管網(wǎng)圖形分析。
通過對ObjectARX的應用與分析和對WDOC軟件系統(tǒng)的開發(fā),得到以AutoCAD2000為工作平臺,用ObjectARX和擴展字典進行二次開發(fā)實現(xiàn)給水管網(wǎng)GIS的功能,不但功能強大,而且方便靈活,尤其是使GIS與管網(wǎng)模型、優(yōu)化設計計算、延時水力模擬、現(xiàn)狀分析和監(jiān)測點選擇等多個功能集成設計,達到實現(xiàn)給水管網(wǎng)計算機管理的初步目的和要求。
參考文獻
[1]?王榮和,劉志強.給水排水工程CAD.同濟大學教材科 [中國建筑工業(yè)出版社作為全國通用教材出版中],1997.
[2] 中國給水五十年回顧-第七屆年會論文集[C].中國建筑工業(yè)出版社,1999.
[3]?余承飛,方勇.AutoCAD2000二次開發(fā)技術(shù)(ObjectARX)[M].人民郵電出版社,1999.
[4]?王榮和,顧國維.水處理工程CAD的智能設計,環(huán)境背景值和環(huán)境容量研究[M].科學出版社,1993.
[5]?王榮和,顧國維.優(yōu)選管徑法在給水管網(wǎng)優(yōu)化設計中的應用[J].中國給水排水,1998,(1):14~17.
[6]?王榮和,顧國維.給水管網(wǎng)多工況優(yōu)化設計的實用性[J]中國給水排水,1999,15(4):39~40.
[7]?王榮和,顧國維.擴展實體數(shù)據(jù)在給排水工程CAD中的應用[J].化工給排水設計,1998,(4):51~54.
[8]?顧國維.?水污染治理技術(shù)研究[M].上海:上海同濟大學出版社,1997.
作者簡介:
王榮和,博士、副教授,上海,同濟大學環(huán)境科學與工程學院。
論文搜索
月熱點論文
論文投稿
很多時候您的文章總是無緣變成鉛字。研究做到關(guān)鍵時,試驗有了起色時,是不是想和同行探討一下,工作中有了心得,您是不是很想與人分享,那么不要只是默默工作了,寫下來吧!投稿時,請以附件形式發(fā)至 paper@h2o-china.com ,請注明論文投稿。一旦采用,我們會為您增加100枚金幣。