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

多源地理矢量數(shù)據(jù)要素解碼方法研究

2022-05-09 02:08:22何淼李旺民丁建勛
城市勘測(cè) 2022年2期

何淼,李旺民,丁建勛

(珠海市測(cè)繪院,廣東 珠海 519000)

1 引 言

歷史測(cè)繪地理信息數(shù)據(jù)由于多方面原因,采用了異構(gòu)的地理信息生產(chǎn)環(huán)境,存在多語(yǔ)義性、多時(shí)空性和多尺度、獲取手段多源性、存儲(chǔ)格式多樣性、空間基準(zhǔn)不統(tǒng)一等問(wèn)題,導(dǎo)致不同系統(tǒng)之間無(wú)法進(jìn)行有效的互操作,這不僅加大了數(shù)據(jù)生產(chǎn)成本,也給數(shù)據(jù)共享帶來(lái)了困難[1]。目前,地理矢量數(shù)據(jù)要素解碼主流的做法是依賴AutoCAD、FME、ArcGIS等,均存在過(guò)度依賴第三方平臺(tái)、兼容性差、低可擴(kuò)展性、特殊要素解碼不完備等缺陷。有必要研究一種不依賴第三方平臺(tái)的地理信息圖件與數(shù)據(jù)解碼方法,以滿足多源數(shù)據(jù)集成的數(shù)據(jù)訪問(wèn)、共享與格式轉(zhuǎn)換需求。

2 總體技術(shù)路線

C++語(yǔ)言將問(wèn)題和事物抽象成對(duì)象,而很多對(duì)象都具有共性,它們的動(dòng)作是相似的,只是對(duì)象的類(lèi)型不同而已。C++的泛型編程,可以將“類(lèi)型”參數(shù)化,模板是C++支持參數(shù)化多態(tài)的工具,采用模板技術(shù),為類(lèi)或者函數(shù)聲明一種通用模式,可使代碼更具通用性。各類(lèi)矢量數(shù)據(jù)可視為一個(gè)對(duì)象類(lèi)型,矢量數(shù)據(jù)要素由若干實(shí)體構(gòu)成,每種實(shí)體又由“點(diǎn)、線、面、注記”等子對(duì)象構(gòu)成,因此,采用C++語(yǔ)言的泛型編程思想開(kāi)發(fā)地理矢量數(shù)據(jù)的要素解碼方法,可有效提高代碼的通用性與可維護(hù)性。

因此,本方法的總體技術(shù)路線是基于C++泛型編程,研究基于Teigha的地理數(shù)據(jù)要素解碼算法,實(shí)現(xiàn)不依賴AutoCAD平臺(tái)兼容CAD中數(shù)十種不同實(shí)體類(lèi)型的要素解碼;研究基于GDAL/OGR的地理數(shù)據(jù)要素解碼算法,不依賴第三方平臺(tái),實(shí)現(xiàn)對(duì)矢量數(shù)據(jù)的要素解碼與格式轉(zhuǎn)換。從而構(gòu)建多源地理矢量數(shù)據(jù)要素解碼服務(wù),支撐多源數(shù)據(jù)集成的數(shù)據(jù)訪問(wèn)、共享與格式轉(zhuǎn)換需求與應(yīng)用。地理矢量數(shù)據(jù)要素解碼技術(shù)路線如圖1所示。

圖1 地理矢量數(shù)據(jù)要素解碼技術(shù)路線

3 基于Teigha的CAD數(shù)據(jù)要素解碼

AutoCAD在測(cè)繪領(lǐng)域運(yùn)用廣泛,很多成果都是CAD格式。CAD數(shù)據(jù)的轉(zhuǎn)換與解析,常用的解決方法有兩個(gè):一是使用FME,F(xiàn)ME是萬(wàn)能的空間數(shù)據(jù)轉(zhuǎn)換器,支持的格式廣泛,用它可以輕松將CAD轉(zhuǎn)換為其他格式,再進(jìn)行下一步操作;二是使用CAD.net二次開(kāi)發(fā)組件,較強(qiáng)大的方式是Lisp、AutoCAD二次開(kāi)發(fā),其學(xué)習(xí)資源豐富,開(kāi)發(fā)難度低,但不能脫離AutoCAD環(huán)境,可以實(shí)現(xiàn)讀取和編輯,但對(duì)塊參照等類(lèi)型的實(shí)體支持不夠。上述方法都有一個(gè)共同缺憾,就是不能脫離CAD或ArcGIS環(huán)境。

ODA即Open Design Alliance,是一個(gè)面向會(huì)員的非營(yíng)利性技術(shù)聯(lián)盟,致力于促進(jìn)開(kāi)放的、工業(yè)標(biāo)準(zhǔn)的CAD數(shù)據(jù)和歷史CAD數(shù)據(jù)的格式交換,使用面向?qū)ο蟮腁PI實(shí)現(xiàn)不依賴第三方環(huán)境的CAD數(shù)據(jù)的讀寫(xiě)操作、繪制渲染和格式轉(zhuǎn)換等,與AutoCAD的兼容性非常好[2],ODA開(kāi)發(fā)的用于圖形應(yīng)用程序的核心平臺(tái)TeighaTM,Teigha支持dwg、dxf、dgn、stl、pdf等多種格式之間的數(shù)據(jù)訪問(wèn)與交換。支持Windows、Mac、Unix、Linux等多個(gè)平臺(tái)。ODA會(huì)員可以用C++,.NET和ActiveX接口開(kāi)發(fā)自己的應(yīng)用程序。

Teigha框架中,一個(gè)CAD文件,其實(shí)是一個(gè)記錄圖形和非圖形對(duì)象的數(shù)據(jù)庫(kù)。在該數(shù)據(jù)庫(kù)中,包括系統(tǒng)符號(hào)表和字典表。其中字典表(Dictionary)是存儲(chǔ)各種CAD對(duì)象的容器,可理解為一個(gè)映射表,用戶的自定義數(shù)據(jù)存放在字典表中,可以添加新的字典并且往里面添加對(duì)象,每個(gè)CAD數(shù)據(jù)庫(kù)文件中有一個(gè)默認(rèn)的字典(Object Dictionary),是所有數(shù)據(jù)庫(kù)字典的根字典。系統(tǒng)符號(hào)表共有9張(如表1所示),只能向表里添加內(nèi)容,但不能改變表的數(shù)量。對(duì)象如放入到正確的容器中,則屬于CAD數(shù)據(jù)庫(kù)文件的有效對(duì)象,否則就是無(wú)效對(duì)象(non-resident)。ODA_Database結(jié)構(gòu)如圖2所示。

ODA系統(tǒng)符號(hào)表 表1

圖2 ODA_Database結(jié)構(gòu)

CAD要素解碼算法流程:

(1)初始化Teigha庫(kù);調(diào)用odInitialize(OdDbSystemServices* pSystemServices)函數(shù)注冊(cè)Teigha支持的所有類(lèi),LoadDRXModules()函數(shù)載入需使用的模塊。常用模塊包括:對(duì)象捕捉模塊(GripPoints)、附加命令模塊(DbCommands)、核心動(dòng)態(tài)塊支持模塊(TD_DynBlocks)、格式導(dǎo)出模塊(TD_Tf)等等。

(2)打開(kāi)DWG文件;調(diào)用ExHostAppServices模版類(lèi)的readFile函數(shù)打開(kāi)DWG文件,返回?cái)?shù)據(jù)庫(kù)對(duì)象智能指針OdDbDatabasePtr。

(3)讀取Database中對(duì)象;ExProtocolExtension類(lèi)是針對(duì)所有對(duì)象解碼與操作的協(xié)議擴(kuò)展類(lèi),該類(lèi)初始化后,可采用迭代器對(duì)每種對(duì)象進(jìn)行解碼與操作。

(4)遍歷對(duì)象進(jìn)行解碼;構(gòu)建OdDbObjectIteratorPtr類(lèi)迭代器指針,獲取每個(gè)對(duì)象的objectId,調(diào)用openObject函數(shù)返回實(shí)體對(duì)象指針OdDbEntityPtr或其他對(duì)象指針OdDbObjectPtr,分別將其轉(zhuǎn)換為OdSmartPtr、OdSmartPtr類(lèi)型,OdDbEntity_Dumper、OdDbObject_Dumper類(lèi)繼承于OdRxObject,是所有對(duì)象解碼與操作的基類(lèi),可自動(dòng)判斷對(duì)象類(lèi)型,根據(jù)需求對(duì)Database中對(duì)象進(jìn)行轉(zhuǎn)換與處理。

(5)執(zhí)行轉(zhuǎn)換與處理后,保存數(shù)據(jù),調(diào)用OdDbDatabasePtr類(lèi)的release函數(shù)關(guān)閉數(shù)據(jù)庫(kù),進(jìn)入下一流程。

從而,通過(guò)C++泛型編程,實(shí)現(xiàn)不依賴AutoCAD平臺(tái)兼容CAD中數(shù)十種不同實(shí)體類(lèi)型的要素解碼。

4 基于GDAL/OGR的地理數(shù)據(jù)要素解碼與轉(zhuǎn)換

GDAL(Geospatial Data Abstraction Library)利用抽象數(shù)據(jù)模型來(lái)表達(dá)所支持的各種文件格式,是在X/MIT許可協(xié)議下的開(kāi)源柵格空間數(shù)據(jù)轉(zhuǎn)換庫(kù),提供對(duì)asc、tiff、img、dem等多種柵格數(shù)據(jù)的支持。OGR是GDAL項(xiàng)目的一個(gè)分支,功能與GDAL類(lèi)似,它提供對(duì)Shapefiles、PostGIS(需要libpq庫(kù))、Oracle Spatial(需要OCI庫(kù))、Mapinfo(mid/mif、TAB)、Dxf等多種矢量數(shù)據(jù)的支持[3,4]。GDAL/OGR除默認(rèn)編譯的庫(kù)之外,可引入第三方庫(kù)增強(qiáng)對(duì)格式的支持,如添加FileGDB API庫(kù)則可實(shí)現(xiàn)對(duì)ESRI FileGDB數(shù)據(jù)的支持。

Esri的ArcGIS系列、Erdas、Google Earth和跨平臺(tái)的GRASS GIS、Quantunm GIS系統(tǒng)等很多著名的GIS類(lèi)產(chǎn)品都使用了GDAL/OGR庫(kù)。利用GDAL/OGR庫(kù),可以使地理空間數(shù)據(jù)管理系統(tǒng)提供對(duì)矢量和柵格文件數(shù)據(jù)的支持[3,5,6]。本文僅討論基于OGR的矢量數(shù)據(jù)解碼。

基于GDAL/OGR的地理矢量數(shù)據(jù)要素解碼與轉(zhuǎn)換算法流程(圖3):

圖3 基于GDAL/OGR的地理數(shù)據(jù)要素解碼與轉(zhuǎn)換

(1)根據(jù)文件類(lèi)型自動(dòng)選擇數(shù)據(jù)驅(qū)動(dòng);

(2)由數(shù)據(jù)驅(qū)動(dòng)打開(kāi)數(shù)據(jù)源(Dataset);

(3)遍歷Dataset中實(shí)體要素;

(4)讀取要素?cái)?shù)據(jù)信息;

(5)判斷要素類(lèi)型;

(6)根據(jù)要素類(lèi)型調(diào)用模板函數(shù)解析要素信息;

(7)根據(jù)需求對(duì)信息進(jìn)行轉(zhuǎn)換與處理;

(8)進(jìn)入步驟(3)。

(9)關(guān)閉數(shù)據(jù)源(Dataset),進(jìn)入下一流程。

進(jìn)而,基于C++泛型編程,不依賴第三方平臺(tái),實(shí)現(xiàn)對(duì)矢量數(shù)據(jù)的要素解碼與轉(zhuǎn)換。

5 結(jié) 語(yǔ)

本文提出的多源地理矢量數(shù)據(jù)要素解碼方法,具有通用性、可擴(kuò)展性、可維護(hù)性強(qiáng)的特點(diǎn),有效解決了地理數(shù)據(jù)要素解碼過(guò)度依賴第三方平臺(tái)帶來(lái)的問(wèn)題,實(shí)現(xiàn)了不依賴第三方平臺(tái)的地理信息圖件與數(shù)據(jù)解碼與轉(zhuǎn)換??蔀槎嘣串悩?gòu)數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)融合與共享應(yīng)用提供思路。

主站蜘蛛池模板: 国产午夜在线观看视频| 日韩成人免费网站| 国产丝袜一区二区三区视频免下载| 欧美一级高清片欧美国产欧美| 最新国语自产精品视频在| 中文字幕永久视频| 国产特级毛片| 五月婷婷综合网| 精品三级在线| 亚洲啪啪网| AV片亚洲国产男人的天堂| 亚洲无码视频一区二区三区| 免费可以看的无遮挡av无码| 在线亚洲精品福利网址导航| 免费精品一区二区h| 99热这里只有成人精品国产| 国产精品高清国产三级囯产AV| 欧美翘臀一区二区三区| 日韩福利视频导航| 久久这里只精品国产99热8| 精品福利视频网| 欧美一级高清视频在线播放| 日韩精品一区二区三区免费在线观看| 操美女免费网站| 99精品伊人久久久大香线蕉| 少妇精品在线| 国产精品视频第一专区| 日本高清在线看免费观看| 二级特黄绝大片免费视频大片| 91小视频版在线观看www| 高清欧美性猛交XXXX黑人猛交| 91黄视频在线观看| 国产精品真实对白精彩久久| 欧洲高清无码在线| 亚洲国产清纯| 欧美日韩中文国产| 国产99免费视频| 国产va欧美va在线观看| 97超级碰碰碰碰精品| 亚洲欧洲自拍拍偷午夜色| 久久情精品国产品免费| 小13箩利洗澡无码视频免费网站| 亚洲欧美日韩中文字幕在线| 欧美日韩一区二区在线播放 | 中文字幕66页| 亚洲一区网站| 99精品国产高清一区二区| 国产尤物在线播放| 福利视频久久| 久久国产精品无码hdav| 巨熟乳波霸若妻中文观看免费| 精品无码一区二区三区电影| 成人国产小视频| 毛片基地视频| 色欲不卡无码一区二区| 天天综合网站| 日韩精品欧美国产在线| 青青草国产在线视频| 精品视频在线一区| av在线人妻熟妇| 自拍偷拍欧美日韩| 成人年鲁鲁在线观看视频| 日韩在线成年视频人网站观看| 狠狠色香婷婷久久亚洲精品| 国产精品99久久久| 亚洲免费三区| 无码中文AⅤ在线观看| 亚洲一区国色天香| 青青草综合网| 亚洲天堂首页| 97在线碰| 97免费在线观看视频| 久久激情影院| 国产成人成人一区二区| 日本少妇又色又爽又高潮| 久久久噜噜噜| 国产成人综合在线观看| 欧美色视频日本| 精品人妻系列无码专区久久| 欧美精品亚洲精品日韩专区va| 国产一区在线视频观看| 91久久国产成人免费观看|