国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GDAL的CAD數(shù)據(jù)向Shp數(shù)據(jù)轉(zhuǎn)換

2017-07-07 12:45:14劉宏光王洪棟劉海辰
城市勘測(cè) 2017年3期
關(guān)鍵詞:空間數(shù)據(jù)二次開發(fā)圖層

劉宏光,王洪棟,劉海辰

(1.天津市勘察院,天津 300191; 2.中國(guó)地震局第一監(jiān)測(cè)中心,天津 300180)

基于GDAL的CAD數(shù)據(jù)向Shp數(shù)據(jù)轉(zhuǎn)換

劉宏光1*,王洪棟2,劉海辰1

(1.天津市勘察院,天津 300191; 2.中國(guó)地震局第一監(jiān)測(cè)中心,天津 300180)

Shp數(shù)據(jù)是地理信息數(shù)據(jù)管理常用的一種數(shù)據(jù)格式,目前國(guó)土資源和城市規(guī)劃管理等部門多采用此格式文件作為基礎(chǔ)數(shù)據(jù)交換和傳遞的媒介。在比較常用轉(zhuǎn)換方法的優(yōu)缺點(diǎn)的基礎(chǔ)上介紹了利用GDAL將CAD數(shù)據(jù)轉(zhuǎn)換為Shp數(shù)據(jù)的流程及優(yōu)缺點(diǎn),實(shí)踐操作表明此方法具有可自動(dòng)化操作、無(wú)須依賴于GIS環(huán)境、開發(fā)難度低、運(yùn)行穩(wěn)定等特點(diǎn),在日常作業(yè)過程中尤其是在大批量的數(shù)據(jù)轉(zhuǎn)換過程中具有一定的優(yōu)勢(shì)。

GDAL;CAD;Shp;數(shù)據(jù)轉(zhuǎn)換

1 概 述

Shp數(shù)據(jù)是地理信息數(shù)據(jù)管理常用的一種數(shù)據(jù)格式,目前國(guó)土資源和城市規(guī)劃管理等部門多采用此格式文件作為基礎(chǔ)數(shù)據(jù)交換和傳遞的媒介。而一般測(cè)繪生產(chǎn)單位在成圖階段大多采用AutoCAD作為基礎(chǔ)平臺(tái),其成果文件大多為DWG或DXF文件。將CAD文件轉(zhuǎn)換為Shp文件常用的方法主要有以下幾種:用ArcGIS軟件或Autodesk AutoCAD Map 3D軟件手動(dòng)轉(zhuǎn)換[1];利用ArcGIS提供的接口進(jìn)行二次開發(fā)讀取圖形實(shí)體實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換[2,3];讀取CAD交換格式dxf文件后從底層生成Shp文件[4];基于空間數(shù)據(jù)操作引擎(FME)實(shí)現(xiàn)操作[5]。本文在綜合比較各種轉(zhuǎn)換方法的優(yōu)缺點(diǎn)的基礎(chǔ)上利用開源地理空間數(shù)據(jù)抽象庫(kù)GDAL成功實(shí)現(xiàn)了CAD數(shù)據(jù)轉(zhuǎn)換為Shp數(shù)據(jù)的操作。

2 常用的轉(zhuǎn)化方法及其優(yōu)缺點(diǎn)

(1)用ArcGIS軟件手動(dòng)轉(zhuǎn)換

這種方法在轉(zhuǎn)換前需進(jìn)行圖層轉(zhuǎn)換、文件重命名、解密等預(yù)處理工作,然后在ArcGIS軟件上用轉(zhuǎn)換工具將圖形文件直接轉(zhuǎn)換為Shp數(shù)據(jù)文件,并進(jìn)行手工圖形編輯填寫相關(guān)的字段屬性信息。

(2)用Autodesk AutoCAD Map 3D軟件手動(dòng)轉(zhuǎn)換

這種方法用Autodesk AutoCAD Map 3D軟件手動(dòng)轉(zhuǎn)換需在進(jìn)行圖層轉(zhuǎn)換預(yù)處理后利用Autodesk AutoCAD Map 3D軟件自帶的地圖工具將其輸出為Shp數(shù)據(jù)文件,然后在ArcGIS平臺(tái)上進(jìn)行手工圖形編輯,并填寫相關(guān)的字段屬性信息。

(3)利用ArcGIS提供的接口進(jìn)行二次開發(fā)讀取圖形實(shí)體實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換

這種方法是直接利用ArcGIS提供的二次開發(fā)接口,使用VB、C++、C#等變成語(yǔ)言開發(fā)相關(guān)程序在讀取CAD圖形數(shù)據(jù)后直接將其轉(zhuǎn)換為Shp數(shù)據(jù)。

(4)讀取CAD交換格式dxf文件后從底層生成Shp文件

這種方法通過編制相應(yīng)的程序按照dxf文件的定義規(guī)則讀取數(shù)據(jù),然后再將其按照Shp文件的格式要求寫入從而生成Shp數(shù)據(jù)。

(5)基于FME的數(shù)據(jù)轉(zhuǎn)換操作

空間數(shù)據(jù)操作引擎(Feature Manipulation Engine,F(xiàn)ME)是一個(gè)第三方數(shù)據(jù)轉(zhuǎn)換的工具,可實(shí)現(xiàn)100多種格式的數(shù)據(jù)間的相互轉(zhuǎn)換。其空間數(shù)據(jù)轉(zhuǎn)換是通過采用語(yǔ)義映射文件來(lái)控制整個(gè)轉(zhuǎn)換流程的[5]。

用ArcGIS軟件手動(dòng)轉(zhuǎn)換和利用Autodesk AutoCAD Map 3D軟件手動(dòng)轉(zhuǎn)換這兩種方法,利用現(xiàn)有軟件進(jìn)行操作無(wú)須進(jìn)行二次開發(fā),前期工作簡(jiǎn)單、形象直觀,但是如果CAD圖形復(fù)雜、屬性龐雜或工作任務(wù)繁重時(shí),圖形編輯及屬性填寫的工作量大、效率低、對(duì)作業(yè)人員的身體素質(zhì)和業(yè)務(wù)素質(zhì)要求相當(dāng)高,不適于大規(guī)模、大工程量及批量作業(yè)。

利用ArcGIS提供的接口進(jìn)行二次開發(fā)讀取圖形實(shí)體實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換及讀取CAD交換格式dxf文件后從底層生成Shp文件這兩種方式都能夠通過編程手段實(shí)現(xiàn)CAD數(shù)據(jù)的自動(dòng)化讀取和Shp文件的生成操作且可在生成的過程中對(duì)圖面進(jìn)行檢查并將屬性信息一并寫入Shp文件中,后期的圖形編輯和屬性編輯工作量相對(duì)來(lái)說很小。但是前者依賴于ArcGIS提供的接口環(huán)境,后者需對(duì)dxf格式和Shp文件格式研究的相當(dāng)透徹。

基于FME的實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換操作既可以在FME軟件下直接用語(yǔ)義映射文件手工實(shí)現(xiàn)操作或?qū)ζ溥M(jìn)行二次開發(fā)定制插件進(jìn)行自動(dòng)化操作,兩者均可實(shí)現(xiàn)批量操作以提高作業(yè)效率。但是采用語(yǔ)義映射文件需要用戶對(duì)FME軟件及映射文件的規(guī)則相當(dāng)熟悉并能夠根據(jù)數(shù)據(jù)轉(zhuǎn)化需要在研究不同GIS數(shù)據(jù)組成格式、定義方法和FME語(yǔ)義轉(zhuǎn)換引擎執(zhí)行過程的基礎(chǔ)上靈活修改FME語(yǔ)義映射文件,對(duì)用戶的素質(zhì)要求較高。而FME的二次開發(fā)需要FME的運(yùn)行時(shí)環(huán)境作為支撐。

3 利用GDAL進(jìn)行轉(zhuǎn)化的優(yōu)點(diǎn)及其操作流程

GDAL全稱是Geospatial Data Abstraction Library(地理空間數(shù)據(jù)抽象庫(kù))是一個(gè)在X/MIT許可協(xié)議下讀寫空間數(shù)據(jù)(包括柵格數(shù)據(jù)和矢量數(shù)據(jù))的開源庫(kù),它利用抽象數(shù)據(jù)模型來(lái)表達(dá)所支持的各種文件格式,還使用一系列命令行工具來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換和處理。目前幾乎所有的GIS和RS軟件底層都使用GDAL來(lái)讀寫空間數(shù)據(jù)。

OGR是GDAL的一個(gè)分支,提供對(duì)矢量數(shù)據(jù)的讀寫支持,同時(shí)它實(shí)現(xiàn)了對(duì)空間參考信息進(jìn)行處理的類,用來(lái)對(duì)空間數(shù)據(jù)的空間信息進(jìn)行處理。

利用GDAL的OGR動(dòng)態(tài)鏈接庫(kù)進(jìn)行二次開發(fā),可實(shí)現(xiàn)CAD數(shù)據(jù)向Shp數(shù)據(jù)的自動(dòng)轉(zhuǎn)換,這種方法既擺脫了ArcGIS二次開發(fā)的環(huán)境依賴,又無(wú)須對(duì)dxf格式和Shp文件格式進(jìn)行過深的研究,開發(fā)相當(dāng)便捷。

利用這種開發(fā)方式,直接讀取CAD圖形文件后經(jīng)歷OGR驅(qū)動(dòng)注冊(cè)、創(chuàng)建數(shù)據(jù)源、創(chuàng)建圖層、創(chuàng)建圖形要素和屬性要素、將圖形要素和屬性要素進(jìn)行匹配等階段后即可實(shí)現(xiàn)從CAD數(shù)據(jù)向Shp數(shù)據(jù)轉(zhuǎn)換。具體流程如圖1所示。

現(xiàn)有的成圖軟件大多將相關(guān)圖形和屬性信息分圖層或線型等方式進(jìn)行存儲(chǔ),在圖面讀取的過程中可按照預(yù)先設(shè)定的成圖規(guī)則進(jìn)行讀取,并通過數(shù)據(jù)結(jié)構(gòu)將其組織起來(lái)。在圖面讀取實(shí)體的過程中可對(duì)圖形實(shí)體按照既定規(guī)則進(jìn)行檢查,判斷其是否存在諸如面狀圖形非閉合曲線等問題,按照實(shí)體目標(biāo)進(jìn)行自動(dòng)修改。

在讀取圖形數(shù)據(jù)的過程中可以從數(shù)據(jù)字典中將其屬性信息提取出來(lái)也可通過讀取外部配置信息文件將屬性信息與圖形進(jìn)行匹配,從而在生成Shp數(shù)據(jù)文件的過程中將圖形數(shù)據(jù)與屬性數(shù)據(jù)一并寫入減小后期編輯的工程量。

圖1 利用GDAL生成Shp數(shù)據(jù)流程圖

4 工程實(shí)例

為了滿足地鐵線路的規(guī)劃數(shù)據(jù)歸檔管理的需要,本文Vsisul Studio平臺(tái)采用C#語(yǔ)言利用GDAL動(dòng)態(tài)鏈接庫(kù)進(jìn)行二次開發(fā)成功實(shí)現(xiàn)了CAD數(shù)據(jù)向Shp數(shù)據(jù)的轉(zhuǎn)換。

程序運(yùn)行的過程中為了存儲(chǔ)圖形數(shù)據(jù)及屬性配置信息,按照?qǐng)D形要素點(diǎn)、線、面三種類型分別定義其存儲(chǔ)格式,以點(diǎn)為核心,由點(diǎn)組線,由線組面。并定義一組公共變量存儲(chǔ)外部配置文件信息。

TypedValue[]values=new TypedValue[]{

new TypedValue((int)DxfCode.LayerName,strLayer)

};//圖層選擇集,strLayer為圖層名稱

SelectionFilter Filter=new SelectionFilter(values);//選擇器

PromptSelectionResult acSSPrompt=acDoc.Editor.SelectAll(Filter);

if(acSSPrompt.Status==PromptStatus.OK)

{

SelectionSet acSSet=acSSPrompt.Value;

foreach(SelectedObject acSSObj in acSSet)

{

if(acSSObj !=null)

{

LL.Add(acSSObj);//將本圖層上的實(shí)體添加到實(shí)體集合中

}

}

}

本文利用GDAL生成Shp數(shù)據(jù)的過程是將每個(gè)對(duì)象化為對(duì)應(yīng)的點(diǎn)組,然后在Shp相應(yīng)圖層上組成幾何圖形。上述代碼給出了如何按圖層獲取圖形集合,CAD的所有的圖形對(duì)象均可將其看作由點(diǎn)、直線、弧線組成。將圓、弧等復(fù)雜圖形經(jīng)過分解迭代后均可化為線段,線段的端點(diǎn)可通過下列代碼:

Point3d st=plt.StartPoint;//獲取線段的起點(diǎn)plt為線段對(duì)象

Point3d ed=plt.EndPoint;//獲取點(diǎn)段的終點(diǎn)

將獲取的CAD圖形數(shù)據(jù)對(duì)象與其屬性及外部配置信息進(jìn)行匹配后便可利用GDAL進(jìn)行Shp數(shù)據(jù)生成。

創(chuàng)建注冊(cè)O(shè)GR驅(qū)動(dòng)

OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING","CP936");//支持中文

string pszDriverName="ESRI Shapefile";

OSGeo.OGR.Ogr.RegisterAll();//注冊(cè)O(shè)GR驅(qū)動(dòng)

調(diào)用對(duì)Shape文件讀寫的Driver接口

OSGeo.OGR.Driver poDriver=OSGeo.OGR.Ogr.GetDriverByName(pszDriverName);

用Driver創(chuàng)建Shape文件

OSGeo.OGR.DataSource poDS;

poDS=poDriver.CreateDataSource(strFilePath,null);

創(chuàng)建層Layer

OSGeo.OGR.Layer poLayer;poLayer=poDS.CreateLayer(shpFileName,null,OSGeo.OGR.wkbGeometryType.wkbMultiPolygon,null);

創(chuàng)建數(shù)據(jù)表屬性列

OSGeo.OGR.FieldDefn oField0=new OSGeo.OGR.FieldDefn("CLNR",OSGeo.OGR.FieldType.OFTString);//以創(chuàng)建測(cè)量?jī)?nèi)容字段為例

oField0.SetWidth(30);//寬度30

poLayer.CreateField(oField0,0);//創(chuàng)建字段

完成準(zhǔn)備工作后便可進(jìn)行圖形要素添加和屬性綁定工作

OSGeo.OGR.Feature facFeature=new OSGeo.OGR.Feature(poLayer.GetLayerDefn());//定義要素

facFeature.SetField(0,Hou_Configformation.strCLNR);//在測(cè)量?jī)?nèi)容字段中填入相應(yīng)的內(nèi)容

string strCr="POLYGON(("+LFaceData[i].Coordinate+"))";//定義生成圖形要素的字段

OSGeo.OGR.Geometry pt=OSGeo.OGR.Geometry.CreateFromWkt(strCr);//創(chuàng)建多邊形

facFeature.SetGeometry(pt);//圖形與屬性進(jìn)行捆綁

oLayer.CreateFeature(facFeature);//創(chuàng)建圖形要素

在程序編制完成準(zhǔn)備完外置屬性配置文件后,在CAD平臺(tái)中加載上述開發(fā)成果的動(dòng)態(tài)鏈接庫(kù),指定轉(zhuǎn)換路徑后即可一鍵生成Shp數(shù)據(jù)文件,其成果如圖2所示,圖形及屬性一次成型,大大減小了后期的編輯工作。經(jīng)過實(shí)際測(cè)試,程序運(yùn)行穩(wěn)定、快捷、準(zhǔn)確,極大提高了生產(chǎn)效率和成果質(zhì)量。

圖2 生成的Shp數(shù)據(jù)

5 結(jié) 語(yǔ)

目前Shp數(shù)據(jù)在國(guó)土資源和城市規(guī)劃管理等工作中起著十分重要的作用,傳統(tǒng)的數(shù)據(jù)轉(zhuǎn)換方法或多或少存在一些不足?;贕DAL將CAD數(shù)據(jù)轉(zhuǎn)換為Shp數(shù)據(jù)具有可自動(dòng)化操作、無(wú)須依賴于GIS環(huán)境、開發(fā)難度低、運(yùn)行效率高、運(yùn)行穩(wěn)定且開發(fā)難度相對(duì)較低等特點(diǎn),具有一定的應(yīng)用價(jià)值。本文利用GDAL成功實(shí)現(xiàn)了從CAD數(shù)據(jù)向Shp數(shù)據(jù)的轉(zhuǎn)換,對(duì)技術(shù)人員具有一定的參考意義。

[1] 曲鋼. 淺談.shp數(shù)據(jù)格式的轉(zhuǎn)換方法[J]. 北京測(cè)繪,2012(4):84~86.

[2] 安衛(wèi). 基于VBA的兩證合一SHP數(shù)據(jù)制作自動(dòng)化的實(shí)現(xiàn)[J]. 城市勘測(cè),2011(2) : 141~143.

[3] 劉鋒,張繼賢,李海濤. SHP文件格式的研究與應(yīng)用[J]. 測(cè)繪科學(xué),2006,31(6):197~198.

[4] 紀(jì)海源,魯純,何遠(yuǎn)梅. VB實(shí)現(xiàn)DXF與SHP文件轉(zhuǎn)換[J]. 遼寧省交通高等專科學(xué)校學(xué)報(bào),2013,15(6):22~26.

[5] 左娟,李勇軍. 基于FME 的GIS 空間數(shù)據(jù)互操作技術(shù)探討[J]. 測(cè)繪標(biāo)準(zhǔn)化,2013,29(2):16~17.

[6] 林斌,杜珺. AutoCAD2012完全自學(xué)一本通[M]. 北京:電子工業(yè)出版社,2011.

The Method of Converting the CAD Data to Shp Data Base on GDAL

Liu Hongguang1,Wang Hongdong2,Liu Haicheng1

(1.Tianjin Institute of Geotechnical Investigation & Surveying,TianJin 300191,China; 2.The First Monitoring and Application Center,China Earthquake Administration,TianJin 300180,China)

Shp data is a common data format for geographic information data management. At present,It is widely used in land resources and urban planning management as the basis medium for data exchange and transmission. On the basis of comparing the advantages and disadvantages of the commonly used methods,the paper introduces the process and advantages and disadvantages of the method by using GDAL. The practice shows that the method combines the qualities of automatic operation,no need to rely on the GIS environment,the development of low difficulty,stable operation and so on. In the process of daily work,especially in the large batch of data conversion process the method has certain advantages.

GDAL;.CAD;Shp;data;convert

1672-8262(2017)03-71-04

P208.1

B

2016—10—25

劉宏光(1982—),男,工程師,主要從事工程測(cè)量、變形監(jiān)測(cè)及測(cè)繪成圖等方面研究。

中國(guó)地震局第一監(jiān)測(cè)中心科技創(chuàng)新主任基金(FMC2016008)

猜你喜歡
空間數(shù)據(jù)二次開發(fā)圖層
淺談基于Revit平臺(tái)的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
巧用混合圖層 制作抽象動(dòng)感森林
元數(shù)據(jù)驅(qū)動(dòng)的多中心空間數(shù)據(jù)同步方法研究
圖層法在地理區(qū)域圖讀圖中的應(yīng)用
淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
河南科技(2014年6期)2014-04-04 08:00:42
基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
Photoshop圖層的解讀
双江| 札达县| 出国| 大连市| 锦屏县| 新丰县| 晋中市| 麻栗坡县| 老河口市| 乌拉特中旗| 唐山市| 古丈县| 金秀| 铁力市| 夏津县| 汝州市| 江油市| 吉木萨尔县| 涟水县| 尚志市| 九台市| 沙河市| 久治县| 旬邑县| 武威市| 团风县| 阿城市| 沧源| 垦利县| 宜丰县| 科技| 绍兴县| 平凉市| 浦江县| 永州市| 鄯善县| 扎鲁特旗| 雅安市| 永宁县| 广西| 渭南市|