本發(fā)明涉及一種基于dwg文件快速生成二維電子地圖的方法,特別是涉及一種適用于電子技術(shù)領(lǐng)域的基于dwg文件快速生成二維電子地圖的方法。
背景技術(shù):
隨著計算機技術(shù)的發(fā)展,二維電子地圖在各行各業(yè)的應(yīng)用越來越廣泛。針對于不同的應(yīng)用場景,對二維電子地圖的顯示內(nèi)容有著不同的要求。對于建筑區(qū)域,業(yè)界通用的二維電子地圖生成方式一般是在實地測量的基礎(chǔ)上,采用地圖制作工具人工制作。這種方式的缺點有以下兩個:一是耗時耗力,場地越復雜,所要的人力時間越多;二是對場地有要求,對于一些保密區(qū)域和單位而言在實地測量上存在諸多限制,導致無法用該方法進行實地測量?,F(xiàn)在雖然有一些技術(shù)可以借助無人機航拍完成數(shù)據(jù)采集節(jié)省人力,但是對上述第二個缺點也沒有改善,除此還帶來一個新問題:無人機航拍無法避免車輛、行人等隨機因素,為后續(xù)的數(shù)據(jù)提取增加了難度。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種針對建筑區(qū)域解決電子地圖數(shù)據(jù)采集難,制作周期長的問題的基于dwg文件的快速生成二維電子地圖的方法。
本發(fā)明采用的技術(shù)方案如下:一種基于dwg文件快速生成二維電子地圖的方法,具體方法為:將dwg文件轉(zhuǎn)換為基于svg格式的通用文件;將轉(zhuǎn)換后的svg文件加載進計算機內(nèi)存中;根據(jù)加載進計算機內(nèi)存中的svg文件繪制二維電子地圖;所述dwg文件為建筑施工用圖,在其中詳細記載了建筑群的形狀和方位信息。
針對于建筑區(qū)域解決電子地圖數(shù)據(jù)采集難,制作周期長的問題,達到了快速、準確的完成電子地圖顯示的目的;二維電子地圖的顯示速度快、效率高;沒有場地限制,沒有隨機因素干擾。
所述方法還包括,處理用戶對所述二維電子地圖的拖拽、縮放和旋轉(zhuǎn)的操作。
采用Arc Gis軟件將dwg文件轉(zhuǎn)換為基于svg格式的通用文件,將dwg文件在Arc Gis軟件中打開,另存為svg格式,其中path中詳細記錄了地圖中每條路徑的定位點。充分利用已有的數(shù)據(jù)資源,避免在數(shù)據(jù)采集和生成二維電子地圖數(shù)據(jù)上的人力物力的浪費。
按照xml格式對svg文件進行讀取, svg格式文件在內(nèi)存中存儲的數(shù)據(jù)結(jié)構(gòu)如下:
struct SvgFile
{
size graphSize; //圖紙長寬
int pathCount; //路徑數(shù)
struct Path
{
long lineColor; //線色
bool isClose; //路徑是否閉合
long fillColor; //填充色
int dotNum; //路徑定位點個數(shù)
vector<position> dotSet; //路徑定位點集合
};
vector<Path> pathSet; //路徑集合
};
根據(jù)加載進計算機內(nèi)存中的svg文件繪制二維電子地圖的具體方法為:采用openGL對地圖進行標繪,具體方法步驟為:
S101、獲取svg格式文件中的每一條路徑信息;
S102、判斷路徑是否閉合,如果路徑閉合,則調(diào)用openGL繪制多邊形方法對路徑進行繪制,并按照路徑描述中的填充色進行填充;如果路徑不閉合,則按照路徑描述中的線色調(diào)用openGL繪制線段的方法對路徑進行繪制;
S103、重復S101和S102,直至處理完所有路徑。
處理用戶對所述二維電子地圖的拖拽的操作方法為:根據(jù)用戶的拖拽操作對地圖進行位移,具體方法步驟為:
S201、用戶拖拽地圖之前獲取拖拽點屏幕坐標m1;
S202、用戶拖拽地圖之后獲取拖拽點屏幕坐標m2;
S203、使用m1-m2獲取位移矢量v1;
S204、對于地圖圖層進行移動,位移矢量為v1。
處理用戶對所述二維電子地圖的縮放的操作方法為:根據(jù)用戶的縮放操作對地圖進行位移,具體方法步驟為:
S301、用戶縮放地圖前獲取地圖圖層的顯示比例s1;
S302、用戶采用兩觸控點方式進行縮放操作,縮放前獲取用戶觸控點屏幕坐標t1和t2,計算出兩觸控點之間的距離d1;
S303、用戶在屏幕上滑動兩觸控點后,再次獲取用戶觸控點屏幕坐標t3和t4,計算出兩觸控點之間的距離d2;
S304、計算新的地圖圖層的顯示比例s2=d2/d1*s1,設(shè)置地圖圖層的顯示比例為s2。
處理用戶對所述二維電子地圖的旋轉(zhuǎn)的操作方法為:根據(jù)用戶的旋轉(zhuǎn)操作對地圖進行位移,具體方法步驟為:
S401、用戶旋轉(zhuǎn)地圖前獲取地圖圖層相對于正北方向的轉(zhuǎn)角a0;
S402、用戶采用兩觸控點方式進行旋轉(zhuǎn)操作,旋轉(zhuǎn)前獲取用戶觸控點屏幕坐標b1和b2,計算兩觸控點的中點c0,計算兩觸控點的連線相對于正北方向的夾角r0;
S403、用戶在屏幕上滑動兩觸控點后,再次獲取用戶觸控點屏幕坐標e1和e2,計算兩觸控點的中點c1,計算兩觸控點的連線相對于正北方向的夾角r1;
S404、計算兩觸控點中點c0到c1的位移矢量v2,對于地圖圖層進行移動,位移矢量為v2;
S405、計算地圖新的轉(zhuǎn)角a1=a0+(r1-r0),設(shè)置地圖圖層的旋轉(zhuǎn)角為a1。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:針對于建筑區(qū)域解決電子地圖數(shù)據(jù)采集難,制作周期長的問題,達到了快速、準確的完成電子地圖顯示的目的;充分利用已有的數(shù)據(jù)資源,避免在數(shù)據(jù)采集和生成二維電子地圖數(shù)據(jù)上的人力物力的浪費;二維電子地圖的顯示速度快、效率高;沒有場地限制,沒有隨機因素干擾。
附圖說明
圖1為本發(fā)明其中一實施例的基于dwg文件快速生成二維電子地圖流程圖。
圖2為本發(fā)明其中一實施例的svg文件格式圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本說明書(包括摘要和附圖)中公開的任一特征,除非特別敘述,均可被其他等效或者具有類似目的的替代特征加以替換。即,除非特別敘述,每個特征只是一系列等效或類似特征中的一個例子而已。
具體實施例1
如圖1所示,一種基于dwg文件快速生成二維電子地圖的方法,具體方法為:將dwg文件轉(zhuǎn)換為基于svg格式的通用文件;將轉(zhuǎn)換后的svg文件加載進計算機內(nèi)存中;根據(jù)加載進計算機內(nèi)存中的svg文件繪制二維電子地圖;所述dwg文件為建筑施工用圖,在其中詳細記載了建筑群的形狀和方位信息。
具體實施例2
在具體實施例1的基礎(chǔ)上,所述方法還包括,處理用戶對所述二維電子地圖的拖拽、縮放和旋轉(zhuǎn)的操作。
具體實施例3
在具體實施例1或2的基礎(chǔ)上,采用Arc Gis軟件將dwg文件轉(zhuǎn)換為基于svg格式的通用文件,將dwg文件在Arc Gis軟件中打開,另存為svg格式,svg文件的格式如圖2所示,其中path中詳細記錄了地圖中每條路徑的定位點。
具體實施例4
在具體實施例1到3之一的基礎(chǔ)上,根據(jù)加載進計算機內(nèi)存中的svg文件繪制二維電子地圖的具體方法為:采用openGL對地圖進行標繪,具體方法步驟為:
S101、獲取svg格式文件中的每一條路徑信息;
S102、判斷路徑是否閉合,如果路徑閉合,則調(diào)用openGL繪制多邊形方法對路徑進行繪制,并按照路徑描述中的填充色進行填充;如果路徑不閉合,則按照路徑描述中的線色調(diào)用openGL繪制線段的方法對路徑進行繪制;
S103、重復S101和S102,直至處理完所有路徑。
具體實施例5
在具體實施例1到4之一的基礎(chǔ)上,處理用戶對所述二維電子地圖的拖拽的操作方法為:根據(jù)用戶的拖拽操作對地圖進行位移,具體方法步驟為:
S201、用戶拖拽地圖之前獲取拖拽點屏幕坐標m1;
S202、用戶拖拽地圖之后獲取拖拽點屏幕坐標m2;
S203、使用m1-m2獲取位移矢量v1;
S204、對于地圖圖層進行移動,位移矢量為v1。
具體實施例6
在具體實施例1到5之一的基礎(chǔ)上,處理用戶對所述二維電子地圖的縮放的操作方法為:根據(jù)用戶的縮放操作對地圖進行位移,具體方法步驟為:
S301、用戶縮放地圖前獲取地圖圖層的顯示比例s1;
S302、用戶采用兩觸控點方式進行縮放操作,縮放前獲取用戶觸控點屏幕坐標t1和t2,計算出兩觸控點之間的距離d1;
S303、用戶在屏幕上滑動兩觸控點后,再次獲取用戶觸控點屏幕坐標t3和t4,計算出兩觸控點之間的距離d2;
S304、計算新的地圖圖層的顯示比例s2=d2/d1*s1,設(shè)置地圖圖層的顯示比例為s2。
具體實施例7
在具體實施例1到6之一的基礎(chǔ)上,處理用戶對所述二維電子地圖的旋轉(zhuǎn)的操作方法為:根據(jù)用戶的旋轉(zhuǎn)操作對地圖進行位移,具體方法步驟為:
S401、用戶旋轉(zhuǎn)地圖前獲取地圖圖層相對于正北方向的轉(zhuǎn)角a0;
S402、用戶采用兩觸控點方式進行旋轉(zhuǎn)操作,旋轉(zhuǎn)前獲取用戶觸控點屏幕坐標b1和b2,計算兩觸控點的中點c0,計算兩觸控點的連線相對于正北方向的夾角r0;
S403、用戶在屏幕上滑動兩觸控點后,再次獲取用戶觸控點屏幕坐標e1和e2,計算兩觸控點的中點c1,計算兩觸控點的連線相對于正北方向的夾角r1;
S404、計算兩觸控點中點c0到c1的位移矢量v2,對于地圖圖層進行移動,位移矢量為v2;
S405、計算地圖新的轉(zhuǎn)角a1=a0+(r1-r0),設(shè)置地圖圖層的旋轉(zhuǎn)角為a1。