亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2021-08-23 07:14:22杜紅濤何旭海張華龐玉良
        關(guān)鍵詞:圖元圓心角圓弧

        杜紅濤 何旭海 張華 龐玉良

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

        GIS 平臺(tái)在空間規(guī)劃數(shù)據(jù)分析、編制、實(shí)施監(jiān)督預(yù)警等工作中作用巨大,能夠快速對(duì)數(shù)據(jù)進(jìn)行建模、分析、處理?,F(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ù)器??蛻舳瞬捎肳eb 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 由開放設(shè)計(jì)聯(lián)盟(Open Design Alliance,ODA)提供,是基于.Net 語言開發(fā)的軟件開發(fā)包[1]。

        ArcObjects SDK 由 美 國ESRI(Environmental Systems Research Institute,Inc.美國環(huán)境系統(tǒng)研究所公司)推出,是為編程人員開發(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ù)庫)、File Geodatabase(基于文件格式的數(shù)據(jù)庫)和ArcSDE Geodatabase(企業(yè)級(jí)空間數(shù)據(jù)庫)。本文所說的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ù)流,通過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)換的過程主要包括圖形數(shù)據(jù)轉(zhuǎn)換、屬性數(shù)據(jù)轉(zhuǎn)換、特性數(shù)據(jù)轉(zhuǎn)換。具體步驟如下:

        (1)使用Teigha.Net SDK 打開需要轉(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)換過程中,為保證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 接口打開DWG 數(shù)據(jù),獲取DWG 數(shù)據(jù)中的塊表記錄,遍歷塊表記錄中的DWG 圖元,獲取需要轉(zhuǎn)換的DWG 數(shù)據(jù)。

        打開DWG 文件:

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

        解析DWG 圖元是為了獲取GIS 數(shù)據(jù)創(chuàng)建時(shí)需要的參數(shù),創(chuàng)建不同類型的GIS 數(shù)據(jù)所需要的參數(shù)不同。下面以多段線和面填充為例說明圖形數(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),通過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 面域填充無法矢量化,第一步:需要將面域填充轉(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),通過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)換過程中,將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ù)庫存儲(chǔ)[7]。本文采用數(shù)據(jù)庫存儲(chǔ)方式來存儲(chǔ)GIS數(shù)據(jù)。具體的輸出步驟為:首先連接GIS 數(shù)據(jù)庫,然后將構(gòu)建的GIS 圖形數(shù)據(jù)、GIS 要素屬性數(shù)據(jù)逐條插入GIS 空間信息表中。數(shù)據(jù)輸出方法如下:

        4 結(jié)束語

        本文通過對(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)換過程中,采用ArcGIS Engine API 技術(shù)實(shí)現(xiàn)DWG 數(shù)據(jù)的完整轉(zhuǎn)換。此外,還基于Web Service技術(shù),利用服務(wù)器強(qiáng)大的計(jì)算能力,提高轉(zhuǎn)換效率。

        猜你喜歡
        圖元圓心角圓弧
        淺析圓弧段高大模板支撐體系設(shè)計(jì)與應(yīng)用
        利用問題鏈導(dǎo)向深度學(xué)習(xí)的設(shè)計(jì)與實(shí)施
        一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
        各種各樣的扇形
        學(xué)術(shù)出版物插圖的編排要求(一):圖注
        聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
        外圓弧面銑削刀具
        “圓心角”度數(shù):弧長計(jì)算的關(guān)鍵點(diǎn)
        基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實(shí)現(xiàn)
        軟件(2016年12期)2016-02-13 05:58:14
        數(shù)控車削圓弧螺紋程序編制與加工
        91福利国产在线观看一区二区| 免费av片在线观看网站| 国产av剧情一区二区三区| 厕所极品偷拍一区二区三区视频| 亚洲av永久无码一区| 三个男吃我奶头一边一个视频| 国产伦一区二区三区久久| 无码一级视频在线| 日韩毛片免费无码无毒视频观看| 青草久久婷婷亚洲精品| 精品一区二区三区中文字幕在线| 车上震动a级作爱视频| 九九久久自然熟的香蕉图片| 国产乱人伦偷精品视频还看的| 国产h视频在线观看网站免费| 热re99久久精品国产99热| 包皮上有一点一点白色的| 国产一级自拍av播放| 国产精品每日更新在线观看| 国产免费丝袜调教视频| 国产亚洲精品久久久久久国模美| 国产伦精品一区二区三区| 一区在线播放| 国产在线手机视频| 97精品国产手机| 国产专区一线二线三线码| 日韩不卡的av二三四区| 又爽又黄禁片视频1000免费| 亚洲人成色7777在线观看| 国精产品一区一区二区三区mba | 亚洲av日韩av在线观看| 极品少妇xxxx精品少妇偷拍| 日本女优激情四射中文字幕| 日韩性感av一区二区三区| 国产精品女丝袜白丝袜| 亚洲AV永久青草无码性色av| 男女18禁啪啪无遮挡| 国产精品无码专区av在线播放| 久久久久夜夜夜精品国产| 国产欧美高清在线观看| 国产成人国产三级国产精品|