崔孝偉,張九宴
(青島市勘察測繪研究院,山東 青島 266000)
基于SQL Server和AutoCAD的日照分析模型管理系統(tǒng)
崔孝偉*,張九宴
(青島市勘察測繪研究院,山東 青島 266000)
日照分析是城市勘測工作中的一項重要業(yè)務,從實際工作需要出發(fā),分析了日照分析工程的特點,根據(jù)眾智日照分析軟件的數(shù)據(jù)結(jié)構(gòu)要求,研究了統(tǒng)籌管理日照分析模型數(shù)據(jù)的方法。利用SQL Server作為數(shù)據(jù)的載體,在AutoCAD平臺下通過ObjectARX開發(fā)數(shù)據(jù)管理系統(tǒng),實現(xiàn)了日照分析軟件與數(shù)據(jù)庫的有機結(jié)合,使用過程中能夠避免重復測繪,實現(xiàn)數(shù)據(jù)的動態(tài)更新。
日照分析;AutoCAD;ObjectARX;SQL
隨著現(xiàn)代城市高層建筑的快速開發(fā)建設(shè),日照分析受到了越來越多的關(guān)注,住建部于2014年發(fā)布了《建筑日照計算參數(shù)標準》,各地方政府也對日照分析工作高度重視。日照分析工程數(shù)據(jù)量大,精度較高,既有建筑物的三維空間數(shù)據(jù),還有窗戶數(shù)據(jù);受設(shè)計方案變更影響,處于規(guī)劃階段的建筑物需要多次建模;受多個規(guī)劃方案影響的已有建筑,可能會要多次利用。因此為了保證模型數(shù)據(jù)的現(xiàn)勢性與一致性,需要設(shè)計一套科學、高效的模型數(shù)據(jù)管理系統(tǒng),既可以隨時調(diào)用最新的數(shù)據(jù),又可以通過協(xié)同作業(yè)對數(shù)據(jù)進行動態(tài)更新和備份。
Microsoft SQL Server是基于服務器端的中型數(shù)據(jù)庫,可以適合大容量數(shù)據(jù)的應用,在處理海量數(shù)據(jù)的效率,后臺開發(fā)的靈活性,可擴展性等方面強大,并且數(shù)據(jù)庫大小無限制,客戶端訪問數(shù)也無限制,因此從網(wǎng)絡服務的穩(wěn)定性以及數(shù)據(jù)量方面考慮,選用SQL Server作為數(shù)據(jù)的網(wǎng)絡服務器載體。
眾智SUN日照分析軟件是建立在AutoCAD基礎(chǔ)上,通過二次開發(fā)形成的一套軟件。它全面解決了全國各地任何時段的日照分析問題,計算科學準確,使用簡單方便,是規(guī)劃管理、規(guī)劃設(shè)計、建筑設(shè)計、房地產(chǎn)開發(fā)等領(lǐng)域強有力的日照分析工具,有著較高的知名度,全國擁有80%以上規(guī)劃局用戶,適用范圍廣。
分析眾智SUN日照分析軟件內(nèi)的數(shù)據(jù)組織方式,三維模型數(shù)據(jù)是利用多線段的厚度屬性以及多邊形角點的XYZ坐標進行組織,窗戶數(shù)據(jù)是通過AutoCAD中的塊鏈接擴展數(shù)據(jù)的方式進行識別,因此系統(tǒng)要打通AutoCAD與SQL Server之間的通道,使兩者能夠自由的轉(zhuǎn)換,并能夠為眾智日照分析軟件識別。
ObjectARX是AutoDesk公司針對AutoCAD平臺上的二次開發(fā)而推出的一個開發(fā)軟件包,它提供了以C++為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應用系統(tǒng)接口,能真正快速的訪問AutoCAD圖形數(shù)據(jù)庫。ObjectARX應用系統(tǒng)是一個DLL(動態(tài)鏈接庫),共享AutoCAD的地址空間,對AutoCAD進行直接函數(shù)調(diào)用,所以,使用ARX編程的函數(shù)的執(zhí)行速度得以大大提高。ARX 類庫采用了標準的C++類庫的封裝形式,這也大大提高了系統(tǒng)員編程的可靠度和效率,它是最為高效的AutoCAD開發(fā)工具。因此從系統(tǒng)的執(zhí)行效率方面考慮,采用ObjectARX方式進行開發(fā)。
為了存儲模型和窗戶數(shù)據(jù),設(shè)計三個關(guān)系表,ent_tab,detail_tab,win_tab,其中前兩個表通過實體編號形成依賴關(guān)系,可以實現(xiàn)三維模型的組織,win_tab表設(shè)計用來存儲窗戶的相關(guān)數(shù)據(jù)。
為了更好地實現(xiàn)對用戶的權(quán)限管理,還設(shè)計一個user_tab表,存儲用戶的各種信息,例如用戶名,密碼,權(quán)限值等,控制用戶對數(shù)據(jù)庫的瀏覽及修改權(quán)限。
3.1 ent_tab表
ent_tab表存儲了模型的基本屬性,其中ENTTYPE用來標識實體的類型,建筑輪廓或者屋頂,因為眾智SUN日照分析軟件中建筑輪廓和屋頂都是用多線段來表示,但是建筑輪廓的高度來源于多線段的厚度屬性,而屋頂數(shù)據(jù)來源于每個頂點的3D坐標;ENTSTA用來標志實體的狀態(tài),如果為當前有效數(shù)據(jù)則設(shè)為奇數(shù),如果為歷史數(shù)據(jù)則設(shè)為偶數(shù);ENTSRC存儲了數(shù)據(jù)的來源,以便追溯。
ent_tab表結(jié)構(gòu) 表1
3.2 detail_tab表
detail_tab表結(jié)構(gòu) 表2
detail_tab表存儲了各實體的幾何數(shù)據(jù),即各頂點的坐標數(shù)據(jù),通過實體編號與ent_tab表形成依賴關(guān)系,即可實現(xiàn)每個三維模型的數(shù)據(jù)存儲。
3.3 win_tab表
win_tab表結(jié)構(gòu) 表3
win_tab表存儲了窗戶的各項數(shù)據(jù),可以將這些數(shù)據(jù)附加在眾智SUN日照分析軟件中的窗戶塊中作為擴展數(shù)據(jù)存儲,即可被其識別,用來分析;WINSTA用來標志窗戶的狀態(tài),如果為當前有效數(shù)據(jù)則設(shè)為奇數(shù),如果為歷史數(shù)據(jù)則設(shè)為偶數(shù)。
為了系統(tǒng)基礎(chǔ)與眾智SUN日照分析軟件保持一直,為系統(tǒng)運行提供模板支持,設(shè)計一模板文件(*.dwt),預先將日照分析所用到的特殊層進行設(shè)置,例如ZZ_RZ_LK(模型輪廓層),ZZ_RZ_WD(屋頂層),ZZ_RZ_WINGRP(窗戶層)等。
窗戶塊(zzwinm)預先存儲在模板文件中,以便被系統(tǒng)調(diào)用,添加擴展數(shù)據(jù)后,插入到dwg文件中,通過以上的模板設(shè)計,在使用過程中將實體按照規(guī)則創(chuàng)建于特定的層中,便可被眾智SUN日照分析軟件識別。
利用ObjectARX新建一個項目,注冊自定義命令,目的在于用戶輸入此命令后,彈出登錄窗口,作為整個系統(tǒng)的入口,用戶完成登錄后,即可進入主界面,進行調(diào)用或更新模型數(shù)據(jù)操作。
用戶需要在CAD中繪制一多邊形來確定范圍,選擇“調(diào)用模型數(shù)據(jù)”,系統(tǒng)將會獲取范圍線頂點坐標,遍歷detail_tab表與win_tab表中的坐標記錄,判斷是否在范圍線內(nèi),如果在范圍線內(nèi),并且為有效數(shù)據(jù),則獲取實體的編號及其他頂點坐標,再根據(jù)實體編號查詢ent_tab表獲取其他屬性,根據(jù)以上數(shù)據(jù),在CAD中創(chuàng)建模型。
如果用戶選擇“更新模型數(shù)據(jù)”,則選擇需要更新的范圍線,系統(tǒng)便會搜尋數(shù)據(jù)庫,將在范圍線內(nèi)的記錄設(shè)為歷史數(shù)據(jù),并將CAD中范圍線內(nèi)的模型和窗戶數(shù)據(jù)寫入數(shù)據(jù)庫相應的表中。
實現(xiàn)以上處理過程,系統(tǒng)主要涉及5個模塊:數(shù)據(jù)庫連接模塊,用戶登錄模塊,讀取數(shù)據(jù)庫模塊,創(chuàng)建實體模塊和更新數(shù)據(jù)庫模塊。
圖1 流程圖
5.1 數(shù)據(jù)庫連接模塊
ADO模式簡單易用,執(zhí)行效率高,并且可以免去配置數(shù)據(jù)源的麻煩,使系統(tǒng)獲得較好的可移植性,因此采用ADO模式連接SQL服務器。
5.2 用戶登錄模塊
設(shè)計使用模態(tài)對話框,用于用戶的登錄操作。用戶點擊登錄按鈕,系統(tǒng)在user_tab表中做搜索匹配,根據(jù)用戶名搜索并匹配密碼字段,判斷其合法性,并根據(jù)權(quán)限字段決定其權(quán)限。如果登錄成功,則彈出主操作界面。5.3 讀取數(shù)據(jù)庫模塊
獲取用戶選擇的多邊形各頂點坐標,遍歷detail_tab表及win_tab表,獲取表中每條記錄的坐標XY,判斷是否在范圍內(nèi),如果在則獲取實體編號、各頂點信息及ent_tab表中實體的其他信息,尤其是實體的類型(建筑輪廓、屋頂、窗戶)。
判斷數(shù)據(jù)庫中記錄的點坐標是否在多邊形內(nèi)采用射線法,見下圖,過給定點引一條射線,計算出該射線與多邊形交點的個數(shù)。若與多邊形各邊交點為偶數(shù)個,則在多邊形外,否則就在多邊形內(nèi)。
圖2 射線法
5.4 創(chuàng)建實體模塊
根據(jù)5.3的讀取判斷結(jié)果,提取范圍內(nèi)的數(shù)據(jù),根據(jù)實體的類型等相關(guān)數(shù)據(jù),在CAD中創(chuàng)建實體。
(1)創(chuàng)建建筑輪廓
眾智SUN日照分析軟件中建筑輪廓為閉合多線段,系統(tǒng)中利用“AcDbPolyline”類來創(chuàng)建新的實體;建筑的高度為多線段的厚度屬性,在系統(tǒng)中設(shè)置“thickness”的值為相應的Z坐標值,并將其設(shè)為ZZ_RZ_LK層,即可完成建筑輪廓的創(chuàng)建。
(2)創(chuàng)建屋頂
屋頂在CAD中的類型也為閉合多線段,但是并不需要設(shè)置厚度屬性,直接設(shè)置其3D坐標AcGePoint3dArray,并將其設(shè)為ZZ_RZ_WD層,完成屋頂?shù)膭?chuàng)建。
(3)創(chuàng)建窗戶塊
經(jīng)過分析,窗戶塊在眾智SUN日照分析軟件中的擴展數(shù)據(jù)注冊為"ZZ_SUNWIN ",其中字符串類型的擴展數(shù)據(jù)記錄了窗戶的層數(shù)、層高、起始高程等信息,并以“|”分割。
根據(jù)上述格式,將win_tab表中符合條件的窗戶數(shù)據(jù)進行整理,然后作為窗戶塊的擴展數(shù)據(jù)寫入,這樣創(chuàng)建的窗戶即可被眾智SUN軟件所識別。
5.5 更新數(shù)據(jù)庫模塊
具有更新權(quán)限的用戶,選擇需要更新的范圍及范圍內(nèi)的建筑輪廓、屋頂及窗戶塊,進行更新操作。系統(tǒng)遍歷detail_tab表及win_tab表進行沖突檢測,判斷是否有點在需要更新的范圍內(nèi),如果有,則將數(shù)據(jù)庫內(nèi)的數(shù)據(jù)設(shè)為歷史數(shù)據(jù)標志,然后將范圍內(nèi)的待更新模型數(shù)據(jù)寫入數(shù)據(jù)庫,完成更新。
通過以上的設(shè)計,實現(xiàn)了日照分析模型數(shù)據(jù)庫的動態(tài)更新管理。作業(yè)人員使用此系統(tǒng)利于協(xié)同作業(yè),避免了重復測繪引起的矛盾;日照分析數(shù)據(jù)翔實、精度較高,是寶貴的城市3D基礎(chǔ)數(shù)據(jù),此系統(tǒng)數(shù)據(jù)結(jié)構(gòu)簡單,同樣有利于在其他智慧城市平臺中擴展使用。
[1] 薩維奇. C++系統(tǒng)設(shè)計(第8版)[M]. 北京:清華大學出版社,2012.
[2] GB/T 50947-2014. 建筑日照計算參數(shù)標準[S].
[3] AutoDesk. ObjectARX Developer’s Guide[EB/OL].
[4] AutoDesk. AutoCAD 2008幫助[R]. AutoDesk公司,2008.
[5] 眾智軟件有限公司. SUN軟件幫助[R]. 眾智軟件有限公司,2008.
Model Management System for Sunlight Based on SQL Server and AutoCAD
Cui Xiaowei,Zhang Jiuyan
(Qingdao Geotechnical Investigation and Surveying Institute,Qingdao 266000,China)
Sunlight analysis is an important work in urban surveying, combined with practical work, analysed the characteristics of sunlight analysis, According to requirements of SUN organizational structure, researched the method of managing the sunlight analysis data model. Using SQL server as a data carrier, developping the model management system in AutoCAD by ObjectARX, to realize the organic combination of sunshine analysis software and database, to avoid rework and update the data dynamically.
sunlight;AutoCAD;ObjectARX;SQL
1672-8262(2016)06-41-03
P208.2
B
2016—01—19
崔孝偉(1985—),男,工程師,主要從事Microstation、AutoCAD以及EPS二次開發(fā)工作。