日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GDAL编译(转)

發布時間:2025/7/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GDAL编译(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡單的編譯

1、使用VisualStudio IDE編譯

首先進入GDAL的源代碼目錄,可以看到有幾個sln為后綴的文件名,比如makegdal10.sln,makegdal80.sln,makegdal71.sln,makegdal90.sln 。這些文件是VisualStudio的工程文件,后面的數字對應的VS的版本號,71表示的VS2003,80表示VS2005,90表示VS2008,還有10表示VS2010等。根據自己電腦安裝的VS版本,打開對應的文件,如下圖所示(使用VS2008SP1版本,打開makegdal90.sln文件):

圖3 VS2008打開編譯GDAL1.8.1

然后在左側解決方案右鍵,彈出菜單中選擇“生成”或者“重新生成”命令,然后GDAL就會開始編譯,等待輸出窗口中提示,執行完成,生成成功等信息后,就表示GDAL已經完成編譯。同時會在GDAL的源代碼目錄中會出現gdal.lib,gdal_i.lib,gdal18.dll等文件,如果你沒有修改GDAL中的nmake.opt文件的話,那么同時會在你的C盤中會出現一個叫“C:\warmerda\bld”的文件夾,里面會包含三個文件夾,分別是bin,data和html。其中bin文件夾中存放的是編譯出來的GDAL的可執行程序,包括GDAL提供的十幾個工具集;data文件夾就是在第一節中的介紹的data文件夾;html文件夾中存放的是各種數據格式的說明文檔。

2、使用cmd命令行編譯

使用cmd命令行編譯,首先在“開始菜單\所有程序\Microsoft Visual Studio 2008\Visual Studio Tools\ Visual Studio 2008命令提示”,點擊“Visual Studio 2008 命令提示”會彈出下面的界面:

然后使用cd命令,切換到GDAL的源代碼目錄,如下圖所示:

切換到GDAL的源代碼目錄后,依次敲入下面的命令行后回車,等待編譯結束即可。

nmake -f makefile.vc

nmake -f makefile.vc install

nmake -f makefile.vc devinstall

同時還有其他的命令,如:

nmake -f makefile.vc clean

nmake -f makefile.vc MSVC_VER=1400clean

nmake -f makefile.vc MSVC_VER=1400DEBUG=1

?????? 上面六行的命令含義依次是:

編譯GDAL庫

編譯GDAL庫,并安裝(這里安裝的意思就是將生成的dll,exe等文件拷貝到C:\warmerda\bld目錄),

編譯GDAL庫,并安裝開發者模式(安裝的意思同上,開發者模式意思是將開發用的include文件夾中的頭文件和lib文件一同拷貝到C:\warmerda\bld目錄,此時會在C:\warmerda\bld目錄中多出來兩個文件夾,分別是include和lib,分別存放的是GDAL的頭文件和lib文件,用于調用GDAL庫使用)。

清理GDAL庫,同時會刪除編譯GDAL庫所生成的臨時文件,作用相當于在VS環境中的清理命令。

作用同上,但是添加了一個MSVC_VER=1400,表示使用VS2005編譯。

編譯GDAL庫的debug模式,可以用來調試GDAL源碼。

二、自定義編譯

GDAL的強大之處不單單在于可以讀取柵格和矢量數據,同時它的強大之處還在于下面幾個方面,第一可以進行矢量圖形之間的一些常用操作,比如:求交,求并,緩沖區等等。第二可以進行投影和坐標轉換。如果使用GDAL默認的編譯方式,那么上述的兩個非常強大的功能您將不能使用,因為GDAL這兩大功能是基于另外的兩個開源庫GEOS(Geometry Engine, Open Source)庫和PROJ4庫來實現的。下面對這兩大庫分別做一個簡單的說明,以及如何修改編譯文件,讓GDAL能夠擁有這兩大功能。

1、集成GEOS

關于GEOS庫的說明,網上有很多,同時在GEOS的官網http://geos.osgeo.org有詳細的說明,簡單的來說,GEOS提供了OGC規范中簡單幾何要素對象操作的C++語言的實現。在地理信息系統領域,拓撲模型是重要的,其計算方法簡單但是很難得以實現。使得GEOS不同于其他項目的也正是“空間謂詞”與“空間操作”??臻g謂詞是比較兩個空間對象并返回一個布爾變量值作為結果,它表明了存在于兩個空間對象之間特殊的關系。比如典型的空間謂詞有Contains(), Intersects(), Touches(), andCrosses()函數等。GEOS項目中對該些函數的實現是異常強壯的,即使是奇異幾何對象或是臨時的坐標系統運算也不能使其運算不正?;蛴嬎沐e誤。目前絕大多數的商業軟件仍然在最基礎的空間謂詞處理上相對成熟,這正是GEOS項目的重要意義。“空間操作”則主要是對兩個幾何對象進行計算并且返回一個新的幾何實體。比較典型的操作函數如Difference(), Union()以及Buffer()等。GEOS中的操作算法已經被廣泛的經過了測試。GEOS類庫被各類開源空間信息軟件項目廣泛應用,使用GEOS,它們可以基于最新的規范的幾何實體來完成,同時也擁有了復雜空間方法的實現。

關于GEOS的說明和編譯,后面會單獨寫一篇文件進行介紹,這里假設已經下載的是編譯好的GEOS庫。

首先使用記事本或者其他的文本編輯器打開GDAL源代碼目錄下的nmake.opt文件,找到“# Uncomment for GEOS support”這句,大概在405行左右,將下面三行代碼:

#GEOS_DIR=C:/warmerda/geos

#GEOS_CFLAGS =-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS

#GEOS_LIB???? =$(GEOS_DIR)/source/geos_c_i.lib

修改為:

GEOS_DIR=F:\Work\3rdPart\geos-3.2.2

GEOS_CFLAGS =-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS

GEOS_LIB???? = $(GEOS_DIR)/source/geos_c_i.lib

其中F:\Work\3rdPart\geos-3.2.2是我本機的GEOS存放的主目錄,后面兩行設置的是GEOS的頭文件目錄和lib文件路徑。設置好后保存即可。對比結果如下圖如下:

保存完nmake.opt之后,按照第一步中的編譯方式進行編譯即可。編譯后的GDAL就將會支持圖形之間的操作等處理。函數主要是在OGR庫中,后面會在OGR庫中進行詳細的介紹說明。編譯后,千萬別忘記將geos_c.dll文件拷貝到gdal18.dll的同級目錄下,否則會提示你找不到geos_c.dll文件。

2、集成Proj4

Proj4是一套開源的坐標投影轉換類庫,它可以完成在兩套不同制圖投影系統之間的轉換,同樣不同的橢球體或大地基準面之間也可以成功的完成轉換。GDAL中用到的坐標轉換,投影轉換,幾何糾正,正射糾正等算法,都離不開坐標轉換,也就是說要使用這些算法,必須有proj4庫的支持才行。同GEOS庫的配置方法,在nmake.opt文件中,找到proj4庫的位置,大概在352行左右。將下面的三行代碼:

#PROJ_FLAGS =-DPROJ_STATIC

#PROJ_INCLUDE =-Id:\projects\proj.4\src

#PROJ_LIBRARY =d:\projects\proj.4\src\proj_i.lib

修改為:

#PROJ_FLAGS =-DPROJ_STATIC

PROJ_INCLUDE =-IF:\Work\3rdPart\proj-4.7.0\src

PROJ_LIBRARY =F:\Work\3rdPart\proj-4.7.0\src\proj_i.lib

其中第一行表示是否使用靜態鏈接的方式,第二行的路徑表示,proj庫存放的位置,第三行為proj庫的lib文件所在路徑。修改后保存即可,對比結果如下圖如下:

同GEOS庫一樣,保存完nmake.opt之后,按照第一步中的編譯方式進行編譯即可。對于Proj庫的使用后面會在有一篇文章對其做一個簡單的介紹說明。編譯后,同樣千萬別忘記將proj.dll文件拷貝到gdal18.dll的同級目錄下,否則會提示你找不到proj.dll文件。

3、集成HDF數據讀取

通過上面GEOS和PROJ庫的介紹,相信對gdal的配置文件,nmake.opt有一個比較初步的了解了吧,那么下面對于使用GDAL支持hdf數據的讀取也是同樣,先下載好hdf4和hdf5的庫,我用的是HDF4.2.6和HDF5-1.8.7兩個庫,在hdf的官方網上有編譯好的庫,直接下載編譯好的庫即可,對于hdf庫的編譯,我沒有進行編譯過,應該和其他的開源庫都是差不多吧。同時官網提供了32位的庫和64位的庫,這里都是按照32位的庫進行介紹,后面會有一個gdal的64位庫的編譯介紹。

將下載好的HDF4.2.6和HDF5-1.8.7兩個庫解壓,然后修改nmake.opt文件中的278行左右,代碼如下:

# Uncomment thefollowing and update to enable NCSA HDF Release 4 support.

#HDF4_PLUGIN = NO

#HDF4_DIR =?????? D:\warmerda\HDF41r5

#HDF4_LIB =??????? /LIBPATH:$(HDF4_DIR)\lib Ws2_32.lib

?

# Uncomment thefollowing and update to enable NCSA HDF Release 5 support.

#HDF5_PLUGIN = NO

#HDF5_DIR =?????? c:\warmerda\supportlibs\hdf5\5-164-win

#HDF5_LIB =??????? $(HDF5_DIR)\dll\hdf5dll.lib

修改為下面的代碼:

# Uncomment thefollowing and update to enable NCSA HDF Release 4 support.

HDF4_PLUGIN = NO

HDF4_DIR =????????? F:\Work\3rdPart\HDF4.2.6_win_x86

HDF4_LIB =? $(HDF4_DIR)\dll\hd426m.lib$(HDF4_DIR)\dll\hm426m.lib \

$(HDF4_DIR)\lib\hd426.lib$(HDF4_DIR)\lib\hm426.lib Ws2_32.lib

?

# Uncomment thefollowing and update to enable NCSA HDF Release 5 support.

HDF5_PLUGIN = NO

HDF5_DIR =????????? F:\Work\3rdPart\HDF5-1.8.7_win_x86

HDF5_LIB = $(HDF5_DIR)\dll\hdf5dll.lib

對比代碼如下圖:

保存,然后編譯gdal即可,同時將hdf庫中的dll文件夾下的dll文件拷貝到gdal18.dll的同級目錄下。

三、其他方面

1、makegdal_gen.bat使用

對于makegdal_gen.bat的作用,在上一篇文章中已經進行了介紹,下面對怎么使用該文件生成VS的工程文件做一個說明。

首先打開cmd命令行窗口,使用cd命令切換到GDAL源代碼目錄,然后輸入makegdal_gen.bat回車,會得到該工具的一個簡單實用幫助,如下圖所示:

??????

該工具的使用方法是帶有命令行參數的一個批處理工具,(在后面對GDAL工具集的介紹中會對帶有參數的命令行程序,以及編寫帶有命令行的程序有一個比較詳細的說明)。通過上圖可以看出該工具的基本語法是:

makegdal_gen 7.10 >makegdal71.vcproj

makegdal_gen 8.00 >makegdal80.vcproj

通過上面的示例可以看出,該工具的命令行參數分別是,首先是VS的版本號,具體版本號參考本文第一小節,然后跟一個大于號“>”,最后是輸出的VS的工程的名字。那么現在我要使用該命令行生成一個VS2008版本的工程文件,我可以輸入下面的命令,然后回車即可:

makegdal_gen 9.00 >makegdal90.vcproj

2、編譯64位系統下的GDAL

對于GDAL的64位系統的編譯,基本和32位系統的編譯一樣,首先在VS的工程中,打開配置管理器,然后再活動解決方案平臺的下拉列表中選擇新建,然后彈出,新建解決方案平臺對話框,選擇新平臺為x64(需要在安裝VS的時候安裝64位的編譯環境),然后點擊確定即可。最后在VS中選擇X64進行編譯即可。如下圖所示:

對于使用cmd命令行編譯,基本同本文開始,不一樣的只有,在開始菜單選擇的不是“Visual Studio 2008 命令提示”而是“Visual Studio 2008 x64 兼容工具命令提示”,剩下的編譯步驟跟前面的一樣。

在編譯開始之前,還需要打開nmake.opt文件,找到131行處的“#WIN64=YES”,將前面的“#”去掉,保存,然后開始編譯。如果就這樣編譯過去的話,那么恭喜你,如果不能順利編譯過去的,那么需要按照下面的步驟進行一點點設置。

1:在GDAL目錄下的nmake.opt文件中,找到SYM_PREFIX的定義,應該在438行左右

將SYM_PREFIX=_ 改為SYM_PREFIX= 就是將最后的下劃線去掉

2:在GDAL目錄下的makefile.vc文件中,找到46行左右的代碼,如下:

?

BASE_INCLUDE =/INCLUDE:_GDALSimpleImageWarp@36 \

? /INCLUDE:_GDALReprojectImage@48 \

? /INCLUDE:_GDALComputeMedianCutPCT@32 \

? /INCLUDE:_GDALDitherRGB2PCT@28 \

? /INCLUDE:_OCTNewCoordinateTransformation@8$(VB6_SAFEARRAYSYM)

修改為:

BASE_INCLUDE =/INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp \

? /INCLUDE:$(SYM_PREFIX)GDALReprojectImage \

? /INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT\

? /INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT \

?/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM)

就是將后面的@開始,后面的數字刪除。現在開始編譯吧,呵呵。祝你成功!此處可以參考我的博文:http://liminlu0314.blog.163.com/blog/static/111800520106223508717/

3、GDAL1.8后打開中文路徑失敗問題

此處可以參考我的博文:http://blog.csdn.net/liminlu0314/article/details/6610069,在此不再贅述。

轉載于:https://www.cnblogs.com/yuxiuting/p/3316626.html

總結

以上是生活随笔為你收集整理的GDAL编译(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一区中文字幕 | 24小时日本在线www免费的 | av全黄 | 玖玖在线资源 | 午夜在线国产 | 51妺嘿嘿午夜福利 | 五月婷婷在线播放 | 99婷婷| 波多野吉衣在线观看视频 | 国产精品99一区二区三区 | 国产精品黄色大片 | 久久久国产精品久久久 | 国产免费一区二区三区四区五区 | 免费成人在线网站 | 亚洲AV成人无码电影在线观看 | 亚洲狼人社区 | 欧美精品 在线观看 | 精品女同一区二区 | 国产欧美精品久久 | 三级黄色免费片 | 欧美精品一二区 | 91午夜在线 | 国产精品久久77777 | eeuss鲁丝片一区二区三区 | 国产精品入口日韩视频大尺度 | 欧洲av网站| 人人妻人人爽人人澡人人精品 | 一区二区精品在线观看 | 亚洲国产小视频 | 欧美激情视频在线 | 精品人伦一区二区三区 | 6699嫩草久久久精品影院 | 操色网 | 欧美日本另类 | 免费精品在线观看 | 午夜少妇久久久久久久久 | 亚洲一区二区三区影院 | 能看的av网站 | caoporen超碰| 国产精品熟妇人妻g奶一区 a少妇 | 无码aⅴ精品一区二区三区 精品久久在线 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 久久精品99国产国产精 | 天堂综合网 | 免费在线黄网 | 尤物视频在线看 | 日韩一级片在线 | 迈开腿让我尝尝你的小草莓 | 韩国一区二区三区四区 | 亚洲精品视频免费看 | 亚洲一区精品在线 | 欧美丰满老熟妇xxxxx性 | 中文字幕在线观看二区 | 亚洲另类网站 | 黄免费在线观看 | 天天爽天天做 | 偷拍夫妻性生活 | www.xxx.日本| 一区二区精品在线观看 | 狠狠的干狠狠的操 | 看一级片 | www一级片| 4444亚洲人成无码网在线观看 | 黄色中文 | 亚洲精品综合 | 成人免费网站 | 成人免费一区二区三区 | 欧美乱大交xxxxx | 男女午夜网站 | 综合av网 | 情侣黄网站免费看 | 欧美精品四区 | 欧美三极片 | 国产肥白大熟妇bbbb视频 | 国产高清亚洲 | 国产成年人 | 欧美在线中文 | 婷婷精品一区二区三区 | 亚洲欧美一区二区三区四区五区 | 久久国产人妻一区二区免色戒电影 | 吃瓜网今日吃瓜 热门大瓜 色婷在线 | 国产亚洲一区二区不卡 | 和黑帮大佬的365 | 国产精品xxx在线 | 少妇精品久久久久久久久久 | 欧美一级片在线视频 | 蜜桃视频在线观看网站 | 69式视频| 久久99国产精品久久99 | 成人在线免费视频 | 国产综合区 | 精品久久久久久无码中文野结衣 | 亚洲激情成人网 | 激情视频一区二区三区 | 亚洲人体av | 熟女丝袜一区 | 欧美香蕉 | 日韩毛片av | 中国特级黄色片 |