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

DWG數(shù)據(jù)轉(zhuǎn)GIS數(shù)據(jù)在Web中的實(shí)現(xiàn)

2021-08-23 07:14:22杜紅濤何旭海張華龐玉良

杜紅濤 何旭海 張華 龐玉良

(洛陽(yáng)鴻業(yè)迪普信息技術(shù)有限公司,河南 洛陽(yáng) 471003)

GIS 平臺(tái)在空間規(guī)劃數(shù)據(jù)分析、編制、實(shí)施監(jiān)督預(yù)警等工作中作用巨大,能夠快速對(duì)數(shù)據(jù)進(jìn)行建模、分析、處理。現(xiàn)階段,空間規(guī)劃編制成果有很大一部分是DWG 格式的數(shù)據(jù)。根據(jù)自然資源部要求,空間規(guī)劃的最終成果要提交GIS 格式的數(shù)據(jù),因此,亟須將DWG 格式的數(shù)據(jù)轉(zhuǎn)換為GIS 格式。

1 概述

在Web 中實(shí)現(xiàn)DWG 數(shù)據(jù)向GIS 數(shù)據(jù)的轉(zhuǎn)換主要體現(xiàn)在客戶端和服務(wù)器。客戶端采用Web Services 技術(shù)實(shí)現(xiàn)數(shù)據(jù)上傳,服務(wù)器采用Teigha.Net 和ArcGIS Engine 技術(shù)將DWG 數(shù)據(jù)轉(zhuǎn)換為GIS 數(shù)據(jù)。

Web Service 是一個(gè)平臺(tái)獨(dú)立、低耦合、自包含、基于可編程的Web 的應(yīng)用程序。

Teigha.Net SDK 由開(kāi)放設(shè)計(jì)聯(lián)盟(Open Design Alliance,ODA)提供,是基于.Net 語(yǔ)言開(kāi)發(fā)的軟件開(kāi)發(fā)包[1]。

ArcObjects SDK 由 美 國(guó)ESRI(Environmental Systems Research Institute,Inc.美國(guó)環(huán)境系統(tǒng)研究所公司)推出,是為編程人員開(kāi)發(fā)客戶化應(yīng)用程序提供的組件包。

DWG 數(shù)據(jù)是由AutoCAD、中望CAD、浩辰CAD 等CAD 設(shè)計(jì)軟件生產(chǎn)的數(shù)據(jù),主要有DWG、DXF 兩種數(shù)據(jù)格式[3]。

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

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

DWG 數(shù)據(jù)和GIS 數(shù)據(jù)是由兩種不同軟件平臺(tái)生產(chǎn)的數(shù)據(jù),因此需要先確定兩種數(shù)據(jù)之間圖元的對(duì)照關(guān)系(如表1 所示),才能夠?qū)崿F(xiàn)數(shù)據(jù)轉(zhuǎn)換。

表1 DWG數(shù)據(jù)圖元和GIS數(shù)據(jù)圖元對(duì)應(yīng)關(guān)系

2 數(shù)據(jù)上傳

本文主要基于.NET 技術(shù)和Web Services 技術(shù)實(shí)現(xiàn)數(shù)據(jù)上傳。

用戶選擇DWG 數(shù)據(jù)后,客戶端將DWG 數(shù)據(jù)轉(zhuǎn)為二進(jìn)制數(shù)據(jù)流,通過(guò)POST 的方法傳到服務(wù)器,服務(wù)器如果正確接收到DWG 數(shù)據(jù),則對(duì)DWG 數(shù)據(jù)進(jìn)行轉(zhuǎn)換。數(shù)據(jù)上傳流程如圖1 所示。

圖1 數(shù)據(jù)上傳流程

3 數(shù)據(jù)轉(zhuǎn)換

DWG 數(shù)據(jù)向GIS 數(shù)據(jù)轉(zhuǎn)換的過(guò)程主要包括圖形數(shù)據(jù)轉(zhuǎn)換、屬性數(shù)據(jù)轉(zhuǎn)換、特性數(shù)據(jù)轉(zhuǎn)換。具體步驟如下:

(1)使用Teigha.Net SDK 打開(kāi)需要轉(zhuǎn)換的DWG 數(shù)據(jù),并獲取DWG 數(shù)據(jù)中的塊表記錄(BlockTableRecord)[5]。

(2)根據(jù)表1 中DWG 數(shù)據(jù)圖元和GIS 數(shù)據(jù)圖元對(duì)應(yīng)關(guān)系構(gòu)建DWG 數(shù)據(jù)和GIS 數(shù)據(jù)的轉(zhuǎn)換通道。

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

圖2 DWG數(shù)據(jù)和GIS數(shù)據(jù)轉(zhuǎn)換流程

3.1 DWG 文件解析

使用Teigha.Net 接口打開(kāi)DWG 數(shù)據(jù),獲取DWG 數(shù)據(jù)中的塊表記錄,遍歷塊表記錄中的DWG 圖元,獲取需要轉(zhuǎn)換的DWG 數(shù)據(jù)。

打開(kāi)DWG 文件:

3.2 圖形數(shù)據(jù)轉(zhuǎn)換

解析DWG 圖元是為了獲取GIS 數(shù)據(jù)創(chuàng)建時(shí)需要的參數(shù),創(chuàng)建不同類型的GIS 數(shù)據(jù)所需要的參數(shù)不同。下面以多段線和面填充為例說(shuō)明圖形數(shù)據(jù)轉(zhuǎn)換的步驟。

3.2.1 DWG 多段線數(shù)據(jù)轉(zhuǎn)換

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

圖3 DWG多段線圖元轉(zhuǎn)為GIS數(shù)據(jù)線要素

(1)解析多段線數(shù)據(jù)

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

遍歷多段線,獲取直線的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo),圓弧的起點(diǎn)坐標(biāo)、終點(diǎn)坐標(biāo)、圓心角。

(2)直線數(shù)據(jù)轉(zhuǎn)換

GIS 數(shù)據(jù)的直線要素由起點(diǎn)坐標(biāo)(X、Y、Z)和終點(diǎn)坐標(biāo)(X、Y、Z)構(gòu)造。

使用Teigha.Net 獲取直線的起點(diǎn)和終點(diǎn)坐標(biāo),通過(guò)ArcGIS Engine API 實(shí)現(xiàn)對(duì)GIS 直線要素的重構(gòu)。

構(gòu)建GIS 直線數(shù)據(jù):

iLine->PutCoords(iPointStart,iPointEnd);

(3)圓弧數(shù)據(jù)轉(zhuǎn)換

GIS 數(shù)據(jù)的圓弧要素是由圓弧起點(diǎn)坐標(biāo)(X、Y、Z)、圓弧終點(diǎn)坐標(biāo)(X、Y、Z),以及起點(diǎn)到終點(diǎn)的方向是否為逆時(shí)針、圓心角構(gòu)造。

具體構(gòu)造方法如下:

使用Teigha.Net 獲取DWG 圓弧的起點(diǎn)坐標(biāo)(X、Y、Z)、終點(diǎn)坐標(biāo)(X、Y、Z)、起點(diǎn)角度、終點(diǎn)角度,計(jì)算得到圓心角。使用ArcGIS Engine API 實(shí)現(xiàn)對(duì)GIS 圓弧要素的重構(gòu)。

構(gòu)建GIS 圓弧要素:

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

(4)GIS 數(shù)據(jù)

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

構(gòu)造線要素:

ISegmentCollectionPtr ipGonColl(CLSID_Polyline);

GIS 數(shù)據(jù)拼接:

ipGonColl->AddSegment(ipSegment);

3.2.2 DWG 面域填充數(shù)據(jù)轉(zhuǎn)換

DWG 面域填充無(wú)法矢量化,第一步:需要將面域填充轉(zhuǎn)換為閉合多段線;第二步:使用Teigha.Net將DWG 多段線分解為圖元集合(集合中包括直線、圓弧);第三步:逐個(gè)解析并轉(zhuǎn)換直線和圓弧數(shù)據(jù);第四步:將轉(zhuǎn)換的直線和圓弧數(shù)據(jù)組合為GIS 面域段集合(SegmentCollection)。DWG 面域填充圖元轉(zhuǎn)換為GIS 數(shù)據(jù)面域要素的流程如圖4 所示。

圖4 DWG面域填充數(shù)據(jù)轉(zhuǎn)為GIS數(shù)據(jù)面域要素

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

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

(2)解析多段線數(shù)據(jù)

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

遍歷多段線,獲取直線的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo),圓弧的起點(diǎn)坐標(biāo)、終點(diǎn)坐標(biāo)、圓心角。

(3)直線數(shù)據(jù)轉(zhuǎn)換

GIS 數(shù)據(jù)的直線要素由起點(diǎn)坐標(biāo)(X、Y、Z)和終點(diǎn)坐標(biāo)(X、Y、Z)構(gòu)造。

使用Teigha.Net 獲取直線的起點(diǎn)和終點(diǎn)坐標(biāo),通過(guò)ArcGIS Engine API 實(shí)現(xiàn)對(duì)GIS 直線要素的重構(gòu)。

構(gòu)建GIS 直線數(shù)據(jù):

iLine->PutCoords(iPointStart,iPointEnd);

(4)圓弧數(shù)據(jù)轉(zhuǎn)換

GIS 數(shù)據(jù)的圓弧要素由圓弧起點(diǎn)坐標(biāo)(X、Y、Z),圓弧終點(diǎn)坐標(biāo)(X、Y、Z),起點(diǎn)到終點(diǎn)的方向是否為逆時(shí)針、圓心角構(gòu)造。

使用Teigha.Net 獲取DWG 圓弧的起點(diǎn)坐標(biāo)(X、Y、Z)、終點(diǎn)坐標(biāo)(X、Y、Z)、起點(diǎn)角度、終點(diǎn)角度,計(jì)算得到圓心角。使用ArcGIS Engine API 實(shí)現(xiàn)對(duì)GIS 圓弧要素的重構(gòu)。

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

(5)GIS 數(shù)據(jù)

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

構(gòu)造線要素:

ISegmentCollectionPtr ipGonColl(CLSID_Polygon);

GIS 數(shù)據(jù)拼接:

ipGonColl->AddSegment(ipSegment);

3.3 屬性數(shù)據(jù)轉(zhuǎn)換

為了保證DWG 數(shù)據(jù)的完整性,本文在DWG 數(shù)據(jù)向GIS 數(shù)據(jù)轉(zhuǎn)換過(guò)程中,將DWG 數(shù)據(jù)的擴(kuò)展屬性轉(zhuǎn)換為GIS 要素的屬性信息,同時(shí)設(shè)計(jì)了DWG 圖元的特性和GIS 圖元的對(duì)應(yīng)關(guān)系(如表2 所示)。

表2 DWG圖元特性和GIS要素屬性對(duì)應(yīng)關(guān)系

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

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

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

GIS 數(shù)據(jù)是以空間信息表的形式進(jìn)行存儲(chǔ)的,圖形數(shù)據(jù)和屬性數(shù)據(jù)作為表記錄存儲(chǔ)在空間信息表中。對(duì)GIS 要素的屬性操作,需要先獲取表結(jié)構(gòu)信息,然后將相應(yīng)的屬性值記錄到表中。

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

3.4 數(shù)據(jù)輸出

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

4 結(jié)束語(yǔ)

本文通過(guò)對(duì)DWG 數(shù)據(jù)和GIS 數(shù)據(jù)圖元對(duì)應(yīng)關(guān)系的研究,采用Teigha.Net API 技術(shù)對(duì)DWG 數(shù)據(jù)進(jìn)行解析,提出了圖形分解、重組方法,以提高數(shù)據(jù)轉(zhuǎn)換精度。在數(shù)據(jù)轉(zhuǎn)換過(guò)程中,采用ArcGIS Engine API 技術(shù)實(shí)現(xiàn)DWG 數(shù)據(jù)的完整轉(zhuǎn)換。此外,還基于Web Service技術(shù),利用服務(wù)器強(qiáng)大的計(jì)算能力,提高轉(zhuǎn)換效率。

主站蜘蛛池模板: 91福利在线观看视频| 中文字幕中文字字幕码一二区| 久久国产V一级毛多内射| 亚洲成a人片| 亚洲人成影院在线观看| 色哟哟国产精品一区二区| 99热这里只有精品国产99| 亚洲中久无码永久在线观看软件| 国产色伊人| 久久a毛片| 99国产精品国产高清一区二区| 精品久久久久久中文字幕女| 欧美日韩在线国产| 999福利激情视频| 在线高清亚洲精品二区| 亚洲精品在线影院| 亚洲欧美激情另类| 亚洲欧美日韩色图| 国产高清免费午夜在线视频| 99热这里都是国产精品| 国产精品手机视频一区二区| 99在线国产| 婷婷综合缴情亚洲五月伊| 日韩国产黄色网站| 丝袜无码一区二区三区| 国产精品999在线| 黄色一及毛片| 久久国产精品波多野结衣| 欧美日本在线播放| 亚洲视频欧美不卡| 亚洲大尺度在线| 中文无码精品A∨在线观看不卡| 久久久久久午夜精品| 天堂成人av| 一区二区三区在线不卡免费| 欧美综合在线观看| 国产国拍精品视频免费看| 亚洲欧洲日产国码无码av喷潮| 99一级毛片| 中国一级特黄大片在线观看| 亚洲日本中文综合在线| 四虎永久免费地址| 日韩成人在线网站| 国产成人a毛片在线| 婷婷综合在线观看丁香| a色毛片免费视频| a级毛片免费网站| 影音先锋亚洲无码| a亚洲天堂| 国产精品福利一区二区久久| 国产成人欧美| 亚洲国产中文精品va在线播放 | 免费观看成人久久网免费观看| 91日本在线观看亚洲精品| 欧美不卡二区| 国精品91人妻无码一区二区三区| 亚瑟天堂久久一区二区影院| 毛片在线看网站| 国产精品无码AV片在线观看播放| 真实国产精品vr专区| 久久五月视频| 国产福利微拍精品一区二区| 91在线丝袜| 日韩精品无码免费一区二区三区| www.99精品视频在线播放| 中文字幕va| 91在线无码精品秘九色APP| 久久大香伊蕉在人线观看热2| 亚洲精品国产综合99久久夜夜嗨| 91精品国产91欠久久久久| 亚洲丝袜第一页| 波多野结衣视频一区二区| 亚洲天堂在线免费| 国产小视频a在线观看| 国产微拍一区二区三区四区| 国产网友愉拍精品视频| 一级成人a毛片免费播放| 六月婷婷综合| 在线中文字幕网| 欧美日本中文| 98超碰在线观看| 欧美精品伊人久久|