一種基於dwg文件快速生成二維電子地圖的方法與流程
2023-04-28 06:35:26 2

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