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

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

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

0 積分

下載資源

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

資源描述:

《GDAL源碼剖析(一)-李民錄的專欄》由會(huì)員分享,可在線閱讀,更多相關(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平臺(tái)下,對于Linux平臺(tái)下的不在此系列討論范圍之內(nèi)。此外,轉(zhuǎn)載本博客內(nèi)容,請注明出處,強(qiáng)烈鄙視轉(zhuǎn)載后不注明出處的“類剽竊”行為。 一、GDAL簡介 ??? GDAL官方網(wǎng)站http:/

2、/www.gdal.org/,本文章中的基本內(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)疑惑,希望能對感興趣的童鞋們有所幫助。本人不才,文章中難免會(huì)出現(xiàn)問題,希望大家不吝指正。 什么是GDAL?這個(gè)問題比較簡單,通俗的講,GDAL是一個(gè)讀寫空間數(shù)據(jù)(這里的空間數(shù)據(jù)包括柵格數(shù)據(jù)和矢量數(shù)據(jù))的開源庫(但不僅限于此,此外還提供了一些非常常用的算法和工具

3、)。嚴(yán)格的講,大家可以參考GDAL首頁上的介紹。 GDAL is a translator library for raster geospatial dataformats that is released under an?X/MIT?style?Open Source?license by the?Open Source Geospatial Foundation. As alibrary, it presents a?singleabstract data model?to the calling application for allsupported formats. It al

4、so comes with a variety of usefulcommandline utilities?fordata translation and processing. TheNEWSpage describes the July 2011 GDAL/OGR 1.8.1 release. The related?OGR?library(which lives within the GDAL source tree) provides a similar capability forsimple features vector data. 二、GDAL目錄結(jié)構(gòu) ??? 首先對于

5、GDAL的目錄結(jié)構(gòu)進(jìn)行一個(gè)簡單的介紹。GDAL源代碼下載地址:http://trac.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è)文件夾和

6、文件做一個(gè)簡單的說明。(按照字母順序來進(jìn)行說明) 下面先對文件夾進(jìn)行說明: 1、alg文件夾:alg文件夾中存放的是GDAL庫中提供的一些算法的源代碼,這些算法包括但不限于:DEM生成等高線算法;圖像糾正算法(幾何糾正,TPS糾正,正射RPC糾正);柵格矢量化算法;矢量柵格化算法;格網(wǎng)計(jì)算算法;PCT和RGB互轉(zhuǎn)算法;分類圖的小碎斑塊去除算法等。 2、apps文件夾:apps文件夾中存放的是GDAL庫中提供的一些命令行工具集的源代碼,這些工具集的介紹可以參考http://gdal.org/gdal_utilities.html,將來我會(huì)對這些工具做一個(gè)簡單的說明。其中有些工具非常的有用,

7、比如gdalinfo,可以使用該工具來查看圖像的元數(shù)據(jù)信息等。 3、bridge文件夾:bridge文件夾中存放的是用來連接GDAL抽象類的定義以及GDAL自己的結(jié)構(gòu)體定義和實(shí)現(xiàn)的源代碼。具體到后面涉及到GDAL的實(shí)現(xiàn)原理時(shí)會(huì)對該文件夾作一個(gè)比較詳細(xì)的介紹。 4、data文件夾:data文件夾中存放的是GDAL庫中需要用到的一些“配置文件”(此處用配置文件可能不太準(zhǔn)確),這些文件主要有ESRI的投影文件,ESPG的投影文件,PCI的投影和橢球體文件,autoCAD的頭文件,以及其他的一些文件。在GDAL庫中有很多時(shí)候會(huì)自動(dòng)讀取該文件夾中的文件,一般是通過環(huán)境變量來查找該文件夾,環(huán)境變量的名

8、字叫GDAL_DATA,值就是data文件夾的路徑,或者可以在你的程序中使用函數(shù)?CPLSetConfigOption("GDAL_DATA","C:\GDAL\data");來進(jìn)行設(shè)置該文件夾的目錄,如果沒有設(shè)置GDAL會(huì)自動(dòng)從環(huán)境變量中查找,如果還是沒有找到,那么GDAL可能會(huì)提示錯(cuò)誤,比如如果不設(shè)置GDAL_DATA,那么在寫如atuocad的dxf格式的時(shí)候就提示創(chuàng)建不成功,后面遇到的話會(huì)再進(jìn)行說明。 5、doc文件夾:doc文件夾存放的是用來生產(chǎn)GDAL幫助文檔的一些dox文件,dox文件是使用doxygen工具來進(jìn)行生成的,后面會(huì)對doxygen工具作一個(gè)簡單的介紹和說明,以及在

9、自己的工程中怎么使用doxygen生成自己的程序的開發(fā)幫助文檔等??傊痪湓挘@個(gè)文件夾就是用來生成GDAL庫的幫助文檔的一些東西。后面會(huì)告訴大家如何生成一份GDAL的幫助文檔,當(dāng)然你也可以把gdal.org整個(gè)網(wǎng)站抓下來,J 6、frmts文件夾:這個(gè)文件夾可以說是GDAL代碼中東西最多的一個(gè)文件夾了,每次更新GDAL的版本后都會(huì)發(fā)現(xiàn)這個(gè)文件夾中會(huì)多出幾個(gè)文件夾,同時(shí)GDAL也會(huì)中支持的文件格式中多出來幾個(gè)新的文件格式。沒錯(cuò),這個(gè)文件夾存放的就是GDAL針對每種不同的特定的圖像格式解析的源代碼,可以舉幾個(gè)簡單的例子,比如bmp文件夾就是解析BMP圖像的,hfa文件夾就是用來解析Erdas的

10、img圖像格式,raw文件夾用來讀取ENVI的hdr文件,還有pcidsk文件夾就是讀取PCI的pix格式的等等。所以這個(gè)文件夾存放的是解析各個(gè)文件格式的源代碼。 7、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的生成的幫助文檔的地方,主要是使用前面

11、介紹的doc文件夾中的dox腳本,使用doxygen工具生成的GDAL幫助文檔會(huì)出現(xiàn)在這個(gè)文件夾中。后面會(huì)和doc文件夾一起進(jìn)行一個(gè)詳細(xì)介紹。 9、m4文件夾:m4文件夾存放的有好幾個(gè)已m4為后綴名的文件,m4文件叫MacroProcessor Library,m4文件是編譯基礎(chǔ)中最核心的文件,這個(gè)文件主要是用autoconf來產(chǎn)生configure配置文件,繼而自動(dòng)生成Makefile文件。這個(gè)文件夾中Windows平臺(tái)下貌似沒什么作用,可能是我還不知道吧,在此略過。 10、man文件夾:man文件夾貌似是用來生成linux或者其他平臺(tái)下的幫助文件,估計(jì)是可以使用linux下的man幫助

12、吧。Windows平臺(tái)下貌似也沒什么用,略過。 11、ogr文件夾:用過GDAL的肯定知道ogr庫吧,在很久很久以前,GDAL和OGR是兩個(gè)庫,GDAL專門負(fù)責(zé)讀取柵格數(shù)據(jù),OGR庫負(fù)責(zé)讀取矢量數(shù)據(jù),然后可能是因?yàn)閮蓚€(gè)庫分開有些不方便,比如GDAL的算法庫中經(jīng)常會(huì)用到矢量數(shù)據(jù)的讀取,或者還有別的原因吧,現(xiàn)在將這兩個(gè)庫整合在了一起,目前OGR庫就是GDAL庫的一個(gè)子集。其實(shí)OGR庫還是可以單獨(dú)編譯出來的。Ogr文件夾就是存放OGR庫源代碼的文件夾。這個(gè)文件夾里面也是有很多東西的,后面再詳細(xì)進(jìn)行介紹。 12、port文件夾:port文件夾中存放的是port庫的東西,port庫對于GDAL庫來說

13、是一個(gè)底層的支持庫,port庫中定義了一些字符串的操作,文件處理,網(wǎng)頁請求,數(shù)據(jù)庫連接,哈希表,字符加密文件壓縮等基礎(chǔ)的函數(shù)。比如GDAL中所有的導(dǎo)出函數(shù)符號(hào)CPL_DLL就是在這個(gè)port文件夾中定義的,還有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,P

14、erl和 Ruby等其他語言的訪問接口。網(wǎng)上GDAL的C#版本就是使用swig來編譯出來實(shí)現(xiàn)的,很強(qiáng)大吧。后面有時(shí)間的話,會(huì)寫一篇關(guān)于swig編譯GDAL的文章。 14、vb6文件夾:這個(gè)文件夾中用來將GDAL編譯成一個(gè)VB6的模塊,對于里面具體的文件說明,以及如何編譯參考文件夾中的readme.txt,由于我對VB6的使用,還是僅限于拖個(gè)按鈕,寫個(gè)單擊事件的基礎(chǔ),對于模塊之間的調(diào)用,實(shí)在是不太懂,所在就不說明了。想用VB6使用GDAL的可以自己研究一下,應(yīng)該也不是很難。 15、wince文件夾:顧名思義,這個(gè)文件夾中的東西就是用來編譯Windows CE平臺(tái)下的GDAL庫用的,具體編譯請

15、參考其中的說明文檔。 文件夾介紹完了,下面對文件進(jìn)行一個(gè)大概說明: 1、aclocal.m4:同上面的m4文件夾 2、autogen.sh:Linux平臺(tái)下的shell文件,用來調(diào)用autoconf來產(chǎn)生configure配置文件的。 3、COMMITERS:該文件中的內(nèi)容是GDAL開發(fā)人員的信息,姓名,聯(lián)系郵箱以及各自負(fù)責(zé)開發(fā)的模塊說明等。 4、config.guess,config.sub,configure,configure.in:這四個(gè)文件貌似都是linux平臺(tái)下的配置文件,中Windows下沒啥用,略過。 5、Doxyfile:Doxyfile就是前面doc文件夾中說明

16、提到的doxygen的工程文件,用來生成幫助文檔用的,后面在介紹doxygen的使用是會(huì)對該文件進(jìn)行一個(gè)說明。 6、GDALmake.opt.in:這個(gè)文件是linux平臺(tái)下的GDAL庫編譯配置文件,功能在后面的nmake.opt中介紹。 7、gdalnightlysvn.sh:Linux平臺(tái)下調(diào)用svn獲取GDAL源代碼的一個(gè)shell腳本。 8、GNUmakefile:GNU的make文件。 9、HOWTO-RELEASE:GDAL發(fā)布版本的一些說明。 10、????install-sh:GDAL的安裝shell腳本,Linux平臺(tái)下。 11、????LICENSE.TXT:G

17、DAL的許可說明文件。 12、????ltmain.sh:libtool的shell腳本,Linux平臺(tái)下,Windows下貌似沒用到。 13、????makefile.vc:GDAL的編譯文件,用來將源代碼編譯成dll文件,后面會(huì)在GDAL編譯中作一個(gè)介紹。 14、????makegdal_gen.bat:用來生成VS的工程文件的一個(gè)批處理文件,后面在GDAL編譯中會(huì)對該文件的使用方式做一個(gè)說明。 15、????makegdal10.sln:文件夾中所有的sln文件都是VS的項(xiàng)目文件,文件名后的數(shù)字代表的是VS的版本號(hào)。 16、????makegdal10.vcxproj和make

18、gdal71.vcproj:VS的工程文件,該文件可以由makegdal_gen.bat文件自動(dòng)生成,后面詳細(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編譯中會(huì)詳細(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

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


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