GDAL源碼剖析(一)-李民錄的專欄

上傳人:文*** 文檔編號:62172910 上傳時(shí)間:2022-03-14 格式:DOC 頁數(shù):6 大?。?59.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
GDAL源碼剖析(一)-李民錄的專欄_第1頁
第1頁 / 共6頁
GDAL源碼剖析(一)-李民錄的專欄_第2頁
第2頁 / 共6頁
GDAL源碼剖析(一)-李民錄的專欄_第3頁
第3頁 / 共6頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《GDAL源碼剖析(一)-李民錄的專欄》由會員分享,可在線閱讀,更多相關(guān)《GDAL源碼剖析(一)-李民錄的專欄(6頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、文檔供參考,可復(fù)制、編制,期待您的好評與關(guān)注! 前言:一直在使用和研究GDAL的相關(guān)東西,發(fā)現(xiàn)網(wǎng)上對GDAL的內(nèi)容倒是不少,但是很少有系統(tǒng)的介紹說明,以及內(nèi)部的一些結(jié)構(gòu)說明,基于這些原因,將本人的一些粗淺的理解放在此處,形成一個(gè)系列,暫時(shí)名為GDAL源碼剖析(名稱有點(diǎn)大言不慚,歡迎大家口水吐之,板磚拍之),供大家交流參考,有什么錯(cuò)誤之處,望大家不吝指正,本系列對于GDAL的使用均是在Windows平臺下,對于Linux平臺下的不在此系列討論范圍之內(nèi)。此外,轉(zhuǎn)載本博客內(nèi)容,請注明出處,強(qiáng)烈鄙視轉(zhuǎn)載后不注明出處的“類剽竊”行為。一、GDAL簡介 GDAL官方網(wǎng)站http:/www.gdal.org

2、/,本文章中的基本內(nèi)容都是參照官網(wǎng)中的信息,如有錯(cuò)誤或者與官網(wǎng)中的內(nèi)容沖突,以官網(wǎng)中的為正確。在開始文章之前,我想先提出幾個(gè)問題,什么是GDAL?GDAL能做什么?GDAL怎么使用?GDAL內(nèi)部結(jié)構(gòu)是怎么組織的?GDAL提供的算法原理是什么?對于上面的幾個(gè)問題,希望大家看完該系列文章后能對上面的幾個(gè)問題少點(diǎn)疑惑,希望能對感興趣的童鞋們有所幫助。本人不才,文章中難免會出現(xiàn)問題,希望大家不吝指正。什么是GDAL?這個(gè)問題比較簡單,通俗的講,GDAL是一個(gè)讀寫空間數(shù)據(jù)(這里的空間數(shù)據(jù)包括柵格數(shù)據(jù)和矢量數(shù)據(jù))的開源庫(但不僅限于此,此外還提供了一些非常常用的算法和工具)。嚴(yán)格的講,大家可以參考GDAL

3、首頁上的介紹。GDAL is a translator library for raster geospatial dataformats that is released under anX/MITstyleOpen Sourcelicense by theOpen Source Geospatial Foundation. As alibrary, it presents asingleabstract data modelto the calling application for allsupported formats. It also comes with a variety of

4、 usefulcommandline utilitiesfordata translation and processing. TheNEWSpage describes the July 2011 GDAL/OGR 1.8.1 release.The relatedOGRlibrary(which lives within the GDAL source tree) provides a similar capability forsimple features vector data.二、GDAL目錄結(jié)構(gòu) 首先對于GDAL的目錄結(jié)構(gòu)進(jìn)行一個(gè)簡單的介紹。GDAL源代碼下載地址:http:/t

5、rac.osgeo.org/gdal/wiki/DownloadSource,或者安裝svn從源代碼服務(wù)器下載,svn地址是:http:/svn.osgeo.org/gdal/trunk。 如果是使用下載的壓縮包,其目錄結(jié)構(gòu)如下圖:圖1 GDAL源碼壓縮包文件目錄結(jié)構(gòu) 如果使用svn下載的源代碼,目錄結(jié)構(gòu)如下:圖2 GDAL SVN源碼文件目錄結(jié)構(gòu)從上面兩張圖中可以看出,GDAL的目錄結(jié)構(gòu)不管是用什么方式獲取的源代碼,它的目錄結(jié)構(gòu)都是一樣的,下面就針對目錄結(jié)構(gòu)中的每個(gè)文件夾和文件做一個(gè)簡單的說明。(按照字母順序來進(jìn)行說明)下面先對文件夾進(jìn)行說明:1、alg文件夾:alg文件夾中存放的是GDAL

6、庫中提供的一些算法的源代碼,這些算法包括但不限于:DEM生成等高線算法;圖像糾正算法(幾何糾正,TPS糾正,正射RPC糾正);柵格矢量化算法;矢量柵格化算法;格網(wǎng)計(jì)算算法;PCT和RGB互轉(zhuǎn)算法;分類圖的小碎斑塊去除算法等。2、apps文件夾:apps文件夾中存放的是GDAL庫中提供的一些命令行工具集的源代碼,這些工具集的介紹可以參考http:/gdal.org/gdal_utilities.html,將來我會對這些工具做一個(gè)簡單的說明。其中有些工具非常的有用,比如gdalinfo,可以使用該工具來查看圖像的元數(shù)據(jù)信息等。3、bridge文件夾:bridge文件夾中存放的是用來連接GDAL抽象

7、類的定義以及GDAL自己的結(jié)構(gòu)體定義和實(shí)現(xiàn)的源代碼。具體到后面涉及到GDAL的實(shí)現(xiàn)原理時(shí)會對該文件夾作一個(gè)比較詳細(xì)的介紹。4、data文件夾:data文件夾中存放的是GDAL庫中需要用到的一些“配置文件”(此處用配置文件可能不太準(zhǔn)確),這些文件主要有ESRI的投影文件,ESPG的投影文件,PCI的投影和橢球體文件,autoCAD的頭文件,以及其他的一些文件。在GDAL庫中有很多時(shí)候會自動讀取該文件夾中的文件,一般是通過環(huán)境變量來查找該文件夾,環(huán)境變量的名字叫GDAL_DATA,值就是data文件夾的路徑,或者可以在你的程序中使用函數(shù)CPLSetConfigOption(GDAL_DATA,C:

8、GDALdata);來進(jìn)行設(shè)置該文件夾的目錄,如果沒有設(shè)置GDAL會自動從環(huán)境變量中查找,如果還是沒有找到,那么GDAL可能會提示錯(cuò)誤,比如如果不設(shè)置GDAL_DATA,那么在寫如atuocad的dxf格式的時(shí)候就提示創(chuàng)建不成功,后面遇到的話會再進(jìn)行說明。5、doc文件夾:doc文件夾存放的是用來生產(chǎn)GDAL幫助文檔的一些dox文件,dox文件是使用doxygen工具來進(jìn)行生成的,后面會對doxygen工具作一個(gè)簡單的介紹和說明,以及在自己的工程中怎么使用doxygen生成自己的程序的開發(fā)幫助文檔等??傊痪湓?,這個(gè)文件夾就是用來生成GDAL庫的幫助文檔的一些東西。后面會告訴大家如何生成一份G

9、DAL的幫助文檔,當(dāng)然你也可以把gdal.org整個(gè)網(wǎng)站抓下來,J6、frmts文件夾:這個(gè)文件夾可以說是GDAL代碼中東西最多的一個(gè)文件夾了,每次更新GDAL的版本后都會發(fā)現(xiàn)這個(gè)文件夾中會多出幾個(gè)文件夾,同時(shí)GDAL也會中支持的文件格式中多出來幾個(gè)新的文件格式。沒錯(cuò),這個(gè)文件夾存放的就是GDAL針對每種不同的特定的圖像格式解析的源代碼,可以舉幾個(gè)簡單的例子,比如bmp文件夾就是解析BMP圖像的,hfa文件夾就是用來解析Erdas的img圖像格式,raw文件夾用來讀取ENVI的hdr文件,還有pcidsk文件夾就是讀取PCI的pix格式的等等。所以這個(gè)文件夾存放的是解析各個(gè)文件格式的源代碼。7

10、、gcore文件夾:通過名字大家也應(yīng)該知道這個(gè)文件夾是做什么的了,叫core的肯定都是很核心的東西了,這個(gè)文件夾就是GDAL的靈魂所在,主要存放的GDAL抽象類的數(shù)據(jù)集,波段,圖像讀寫接口等都在這個(gè)里面實(shí)現(xiàn)的。如果要知道GDAL的抽象類是怎么對圖像格式進(jìn)行抽象的,可以看看這個(gè)里面的代碼。8、html文件夾:html文件夾如果使用壓縮包的話,里面應(yīng)該是空的,這個(gè)文件夾主要是用來存放GDAL的生成的幫助文檔的地方,主要是使用前面介紹的doc文件夾中的dox腳本,使用doxygen工具生成的GDAL幫助文檔會出現(xiàn)在這個(gè)文件夾中。后面會和doc文件夾一起進(jìn)行一個(gè)詳細(xì)介紹。9、m4文件夾:m4文件夾存放

11、的有好幾個(gè)已m4為后綴名的文件,m4文件叫MacroProcessor Library,m4文件是編譯基礎(chǔ)中最核心的文件,這個(gè)文件主要是用autoconf來產(chǎn)生configure配置文件,繼而自動生成Makefile文件。這個(gè)文件夾中Windows平臺下貌似沒什么作用,可能是我還不知道吧,在此略過。10、man文件夾:man文件夾貌似是用來生成linux或者其他平臺下的幫助文件,估計(jì)是可以使用linux下的man幫助吧。Windows平臺下貌似也沒什么用,略過。11、ogr文件夾:用過GDAL的肯定知道ogr庫吧,在很久很久以前,GDAL和OGR是兩個(gè)庫,GDAL專門負(fù)責(zé)讀取柵格數(shù)據(jù),OGR庫

12、負(fù)責(zé)讀取矢量數(shù)據(jù),然后可能是因?yàn)閮蓚€(gè)庫分開有些不方便,比如GDAL的算法庫中經(jīng)常會用到矢量數(shù)據(jù)的讀取,或者還有別的原因吧,現(xiàn)在將這兩個(gè)庫整合在了一起,目前OGR庫就是GDAL庫的一個(gè)子集。其實(shí)OGR庫還是可以單獨(dú)編譯出來的。Ogr文件夾就是存放OGR庫源代碼的文件夾。這個(gè)文件夾里面也是有很多東西的,后面再詳細(xì)進(jìn)行介紹。12、port文件夾:port文件夾中存放的是port庫的東西,port庫對于GDAL庫來說是一個(gè)底層的支持庫,port庫中定義了一些字符串的操作,文件處理,網(wǎng)頁請求,數(shù)據(jù)庫連接,哈希表,字符加密文件壓縮等基礎(chǔ)的函數(shù)。比如GDAL中所有的導(dǎo)出函數(shù)符號CPL_DLL就是在這個(gè)por

13、t文件夾中定義的,還有frmts文件夾中,打開文件,打開數(shù)據(jù)庫,打開網(wǎng)絡(luò)路徑等都是用的port庫,以及字符串的處理等。13、swig文件夾:swig文件夾主要是存放swig的腳本。Swig全稱叫SimplifiedWrapper and Interface Generator,網(wǎng)址是www.swig.org, swig的作用就是可以將C/C+寫的庫封裝為Python,C#,Java,Perl和 Ruby等其他語言的訪問接口。網(wǎng)上GDAL的C#版本就是使用swig來編譯出來實(shí)現(xiàn)的,很強(qiáng)大吧。后面有時(shí)間的話,會寫一篇關(guān)于swig編譯GDAL的文章。14、vb6文件夾:這個(gè)文件夾中用來將GDAL編譯

14、成一個(gè)VB6的模塊,對于里面具體的文件說明,以及如何編譯參考文件夾中的readme.txt,由于我對VB6的使用,還是僅限于拖個(gè)按鈕,寫個(gè)單擊事件的基礎(chǔ),對于模塊之間的調(diào)用,實(shí)在是不太懂,所在就不說明了。想用VB6使用GDAL的可以自己研究一下,應(yīng)該也不是很難。15、wince文件夾:顧名思義,這個(gè)文件夾中的東西就是用來編譯Windows CE平臺下的GDAL庫用的,具體編譯請參考其中的說明文檔。文件夾介紹完了,下面對文件進(jìn)行一個(gè)大概說明:1、aclocal.m4:同上面的m4文件夾2、autogen.sh:Linux平臺下的shell文件,用來調(diào)用autoconf來產(chǎn)生configure配置

15、文件的。3、COMMITERS:該文件中的內(nèi)容是GDAL開發(fā)人員的信息,姓名,聯(lián)系郵箱以及各自負(fù)責(zé)開發(fā)的模塊說明等。4、config.guess,config.sub,configure,configure.in:這四個(gè)文件貌似都是linux平臺下的配置文件,中Windows下沒啥用,略過。5、Doxyfile:Doxyfile就是前面doc文件夾中說明提到的doxygen的工程文件,用來生成幫助文檔用的,后面在介紹doxygen的使用是會對該文件進(jìn)行一個(gè)說明。6、GDALmake.opt.in:這個(gè)文件是linux平臺下的GDAL庫編譯配置文件,功能在后面的nmake.opt中介紹。7、gd

16、alnightlysvn.sh:Linux平臺下調(diào)用svn獲取GDAL源代碼的一個(gè)shell腳本。8、GNUmakefile:GNU的make文件。9、HOWTO-RELEASE:GDAL發(fā)布版本的一些說明。10、install-sh:GDAL的安裝shell腳本,Linux平臺下。11、LICENSE.TXT:GDAL的許可說明文件。12、ltmain.sh:libtool的shell腳本,Linux平臺下,Windows下貌似沒用到。13、makefile.vc:GDAL的編譯文件,用來將源代碼編譯成dll文件,后面會在GDAL編譯中作一個(gè)介紹。14、makegdal_gen.bat:用來

17、生成VS的工程文件的一個(gè)批處理文件,后面在GDAL編譯中會對該文件的使用方式做一個(gè)說明。15、makegdal10.sln:文件夾中所有的sln文件都是VS的項(xiàng)目文件,文件名后的數(shù)字代表的是VS的版本號。16、makegdal10.vcxproj和makegdal71.vcproj:VS的工程文件,該文件可以由makegdal_gen.bat文件自動生成,后面詳細(xì)介紹。17、mkbindist.sh,mkgdaldist.sh和mktestdist.sh:三個(gè)shell腳本文件,Windows下沒用,略過。18、NEWS:GDAL的新增功能,以及修復(fù)的bug記錄等。19、nmake.opt:GDAL編譯選項(xiàng)配置文件,在編譯GDAL中,可以指定GDAL綁定的其他庫等都在這個(gè)里面進(jìn)行設(shè)置。在后面的GDAL編譯中會詳細(xì)介紹說明。20、nmake-wince.opt:編譯wince版本的編譯選項(xiàng)配置文件。21、PROVENANCE.TXT:GDAL目錄說明文件,如果上面說明的不夠清楚,可以參考這個(gè)文件。22、submake.bat:一個(gè)編譯的批處理文件,目前沒啥用。23、svnkeywords.sh:又是svn的一個(gè)shell腳本。24、VERSION:GDAL版本信息。第一篇完,后續(xù)文章陸續(xù)奉上,敬請期待新作!6 / 6

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!