999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DWG數據轉GIS數據在Web中的實現

2021-08-23 07:14:22杜紅濤何旭海張華龐玉良
資源導刊(信息化測繪) 2021年6期

杜紅濤 何旭海 張華 龐玉良

(洛陽鴻業迪普信息技術有限公司,河南 洛陽 471003)

GIS 平臺在空間規劃數據分析、編制、實施監督預警等工作中作用巨大,能夠快速對數據進行建模、分析、處理。現階段,空間規劃編制成果有很大一部分是DWG 格式的數據。根據自然資源部要求,空間規劃的最終成果要提交GIS 格式的數據,因此,亟須將DWG 格式的數據轉換為GIS 格式。

1 概述

在Web 中實現DWG 數據向GIS 數據的轉換主要體現在客戶端和服務器??蛻舳瞬捎肳eb Services 技術實現數據上傳,服務器采用Teigha.Net 和ArcGIS Engine 技術將DWG 數據轉換為GIS 數據。

Web Service 是一個平臺獨立、低耦合、自包含、基于可編程的Web 的應用程序。

Teigha.Net SDK 由開放設計聯盟(Open Design Alliance,ODA)提供,是基于.Net 語言開發的軟件開發包[1]。

ArcObjects SDK 由 美 國ESRI(Environmental Systems Research Institute,Inc.美國環境系統研究所公司)推出,是為編程人員開發客戶化應用程序提供的組件包。

DWG 數據是由AutoCAD、中望CAD、浩辰CAD 等CAD 設計軟件生產的數據,主要有DWG、DXF 兩種數據格式[3]。

GIS 數據是由ArcGIS 等GIS 設計軟件生產的數據,常用的GIS 數據類型有柵格數據和矢量數據兩種類型[4]。柵格數據的主要格式有.jpg、.png、.tif 等;矢量數據的格式主要有Shapefile(矢量圖形)、Personal Geodatabase(個人空間數據庫)、File Geodatabase(基于文件格式的數據庫)和ArcSDE Geodatabase(企業級空間數據庫)。本文所說的GIS數據是指矢量數據。

DWG 數據常用的圖元類型有:直線、多段線、圓弧、圓、橢圓弧、橢圓、面域、填充、塊、屬性塊、單行文字、多行文字、組。GIS 數據常用的要素類型有:點、多點、線段、圓弧、橢圓弧、多段線、多邊形、圓、橢圓等。

DWG 數據和GIS 數據是由兩種不同軟件平臺生產的數據,因此需要先確定兩種數據之間圖元的對照關系(如表1 所示),才能夠實現數據轉換。

表1 DWG數據圖元和GIS數據圖元對應關系

2 數據上傳

本文主要基于.NET 技術和Web Services 技術實現數據上傳。

用戶選擇DWG 數據后,客戶端將DWG 數據轉為二進制數據流,通過POST 的方法傳到服務器,服務器如果正確接收到DWG 數據,則對DWG 數據進行轉換。數據上傳流程如圖1 所示。

圖1 數據上傳流程

3 數據轉換

DWG 數據向GIS 數據轉換的過程主要包括圖形數據轉換、屬性數據轉換、特性數據轉換。具體步驟如下:

(1)使用Teigha.Net SDK 打開需要轉換的DWG 數據,并獲取DWG 數據中的塊表記錄(BlockTableRecord)[5]。

(2)根據表1 中DWG 數據圖元和GIS 數據圖元對應關系構建DWG 數據和GIS 數據的轉換通道。

(3)循環解析塊表記錄中的DWG 數據并獲取轉換參數,根據轉換參數使用ArcObjects SDK 創建GIS 數據。在圖形轉換過程中,為保證DWG 數據的完整性,需要將DWG 圖元的特性轉為GIS 要素的屬性;如果DWG 圖元存在擴展屬性,則同步將DWG 圖元的擴展屬性轉為GIS 要素的屬性。具體轉換流程如圖2 所示。

圖2 DWG數據和GIS數據轉換流程

3.1 DWG 文件解析

使用Teigha.Net 接口打開DWG 數據,獲取DWG 數據中的塊表記錄,遍歷塊表記錄中的DWG 圖元,獲取需要轉換的DWG 數據。

打開DWG 文件:

3.2 圖形數據轉換

解析DWG 圖元是為了獲取GIS 數據創建時需要的參數,創建不同類型的GIS 數據所需要的參數不同。下面以多段線和面填充為例說明圖形數據轉換的步驟。

3.2.1 DWG 多段線數據轉換

DWG 多段線由直線或圓弧組合而成,首先,使用Teigha.Net 將DWG 多段線分解為圖元集合(集合中包括直線、圓?。?;其次,逐個解析并轉換直線和圓弧數據;最后,將轉換的直線和圓弧數據組合為GIS 多段線段集合(SegmentCollection)。DWG 多段線圖元轉換為GIS 數據線要素轉換流程如圖3 所示。

圖3 DWG多段線圖元轉為GIS數據線要素

(1)解析多段線數據

使用Teigha.Net 將DWG 多段線分解為圖元集合(集合中包括直線、圓?。?。((OdDbEntityPtr)pPolyline)->explode(entitySet);

遍歷多段線,獲取直線的起點坐標和終點坐標,圓弧的起點坐標、終點坐標、圓心角。

(2)直線數據轉換

GIS 數據的直線要素由起點坐標(X、Y、Z)和終點坐標(X、Y、Z)構造。

使用Teigha.Net 獲取直線的起點和終點坐標,通過ArcGIS Engine API 實現對GIS 直線要素的重構。

構建GIS 直線數據:

iLine->PutCoords(iPointStart,iPointEnd);

(3)圓弧數據轉換

GIS 數據的圓弧要素是由圓弧起點坐標(X、Y、Z)、圓弧終點坐標(X、Y、Z),以及起點到終點的方向是否為逆時針、圓心角構造。

具體構造方法如下:

使用Teigha.Net 獲取DWG 圓弧的起點坐標(X、Y、Z)、終點坐標(X、Y、Z)、起點角度、終點角度,計算得到圓心角。使用ArcGIS Engine API 實現對GIS 圓弧要素的重構。

構建GIS 圓弧要素:

pConstCArc->ConstructEndPointsAngle(Point Start,PointEnd,VARIANT_TRUE,ArcAngle);

(4)GIS 數據

使用ArcGIS Engine API段集合 (SegmentCollection)的方式構造線要素,然后將轉換后的直線要素、圓弧要素進行拼接。

構造線要素:

ISegmentCollectionPtr ipGonColl(CLSID_Polyline);

GIS 數據拼接:

ipGonColl->AddSegment(ipSegment);

3.2.2 DWG 面域填充數據轉換

DWG 面域填充無法矢量化,第一步:需要將面域填充轉換為閉合多段線;第二步:使用Teigha.Net將DWG 多段線分解為圖元集合(集合中包括直線、圓?。坏谌剑褐饌€解析并轉換直線和圓弧數據;第四步:將轉換的直線和圓弧數據組合為GIS 面域段集合(SegmentCollection)。DWG 面域填充圖元轉換為GIS 數據面域要素的流程如圖4 所示。

圖4 DWG面域填充數據轉為GIS數據面域要素

(1)面域填充轉為閉合多段線

使用Teigha.Net 遍歷面域填充邊界,將填充邊界組合為閉合多段線。

(2)解析多段線數據

使用Teigha.Net 將DWG 多段線分解為圖元集合(集合中包括直線、圓?。?。((OdDbEntityPtr)pPolyline)->explode(entitySet);

遍歷多段線,獲取直線的起點坐標和終點坐標,圓弧的起點坐標、終點坐標、圓心角。

(3)直線數據轉換

GIS 數據的直線要素由起點坐標(X、Y、Z)和終點坐標(X、Y、Z)構造。

使用Teigha.Net 獲取直線的起點和終點坐標,通過ArcGIS Engine API 實現對GIS 直線要素的重構。

構建GIS 直線數據:

iLine->PutCoords(iPointStart,iPointEnd);

(4)圓弧數據轉換

GIS 數據的圓弧要素由圓弧起點坐標(X、Y、Z),圓弧終點坐標(X、Y、Z),起點到終點的方向是否為逆時針、圓心角構造。

使用Teigha.Net 獲取DWG 圓弧的起點坐標(X、Y、Z)、終點坐標(X、Y、Z)、起點角度、終點角度,計算得到圓心角。使用ArcGIS Engine API 實現對GIS 圓弧要素的重構。

構 建GIS 圓 弧 要 素:pConstCArc->Construct EndPointsAngle(PointStart,PointEnd,VARIANT_TRUE,ArcAngle);

(5)GIS 數據

使用ArcGIS Engine API 段集合(SegmentCollection)的方式構造面域要素,然后將轉換后的直線要素、圓弧要素進行拼接。

構造線要素:

ISegmentCollectionPtr ipGonColl(CLSID_Polygon);

GIS 數據拼接:

ipGonColl->AddSegment(ipSegment);

3.3 屬性數據轉換

為了保證DWG 數據的完整性,本文在DWG 數據向GIS 數據轉換過程中,將DWG 數據的擴展屬性轉換為GIS 要素的屬性信息,同時設計了DWG 圖元的特性和GIS 圖元的對應關系(如表2 所示)。

表2 DWG圖元特性和GIS要素屬性對應關系

DWG 圖元的特性和擴展屬性都是以鏈表的形式保存在xData 中,需要獲取DWG 圖形的屬性鏈表,然后遍歷解析鏈表信息,根據DWG 特性的CODE 值和鏈表的類型,最終得到所有屬性信息。

獲取DWG 圖元的XData 得到屬性鏈表:

遍歷屬性鏈表獲取屬性信息:

GIS 數據是以空間信息表的形式進行存儲的,圖形數據和屬性數據作為表記錄存儲在空間信息表中。對GIS 要素的屬性操作,需要先獲取表結構信息,然后將相應的屬性值記錄到表中。

獲取GIS 要素屬性表:IFieldsPtr ipFields;

3.4 數據輸出

GIS 數據有兩種存儲方式,即:本地文件存儲、數據庫存儲[7]。本文采用數據庫存儲方式來存儲GIS數據。具體的輸出步驟為:首先連接GIS 數據庫,然后將構建的GIS 圖形數據、GIS 要素屬性數據逐條插入GIS 空間信息表中。數據輸出方法如下:

4 結束語

本文通過對DWG 數據和GIS 數據圖元對應關系的研究,采用Teigha.Net API 技術對DWG 數據進行解析,提出了圖形分解、重組方法,以提高數據轉換精度。在數據轉換過程中,采用ArcGIS Engine API 技術實現DWG 數據的完整轉換。此外,還基于Web Service技術,利用服務器強大的計算能力,提高轉換效率。

主站蜘蛛池模板: 精品国产免费观看| 亚洲精品午夜天堂网页| 在线国产91| 日韩AV无码一区| av一区二区三区在线观看| 性色一区| 亚洲日韩精品无码专区97| 99在线小视频| 亚洲bt欧美bt精品| 色婷婷成人网| 狠狠操夜夜爽| 国产一级做美女做受视频| 国产精品高清国产三级囯产AV| 99久久精品国产综合婷婷| 四虎成人精品在永久免费| 热久久这里是精品6免费观看| 一级毛片免费播放视频| 婷婷亚洲最大| 日本人又色又爽的视频| 中字无码av在线电影| 中国国产A一级毛片| 91无码视频在线观看| 亚洲色无码专线精品观看| 亚洲一区二区约美女探花| 精品偷拍一区二区| 天天色天天操综合网| 国产SUV精品一区二区6| 欧美精品在线视频观看| 欧美性天天| 91福利在线观看视频| 亚洲无码不卡网| 国产精品分类视频分类一区| 欧美成人亚洲综合精品欧美激情| 日韩人妻少妇一区二区| 2021国产精品自产拍在线观看| 激情综合图区| 免费在线色| 国产成人精品一区二区免费看京| 国产性爱网站| 一本大道香蕉久中文在线播放 | 欧美激情网址| 国产伦精品一区二区三区视频优播| 国产精品对白刺激| 国产在线精彩视频二区| 18禁不卡免费网站| 日韩无码黄色网站| 午夜视频免费一区二区在线看| 色亚洲成人| 日韩美毛片| 欧美视频在线第一页| 91人妻日韩人妻无码专区精品| 亚洲国产综合自在线另类| 亚洲免费福利视频| jizz国产视频| 在线播放国产一区| 青青草原偷拍视频| 青草精品视频| 亚洲天堂网在线播放| 在线观看免费黄色网址| 99精品视频九九精品| 国产精品尤物铁牛tv | 国产亚洲男人的天堂在线观看| 97久久免费视频| 青青草久久伊人| 亚洲精品卡2卡3卡4卡5卡区| 日本欧美午夜| 伊人网址在线| 国产日韩欧美在线播放| 国产成人高清亚洲一区久久| 波多野结衣一区二区三区AV| 久久久久亚洲av成人网人人软件| 国产不卡网| 黄色三级网站免费| 中文字幕第1页在线播| 国产成人免费观看在线视频| 国产精品久久久久婷婷五月| 国产内射一区亚洲| 久久不卡精品| 高清无码不卡视频| 国产成年女人特黄特色大片免费| 91精品福利自产拍在线观看| 成人免费视频一区|