亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

[GDAL]1.GDAL1.8.1編譯與第一個程序

系統 1650 0

  剛上研一那會就聽師兄說起GDAL,由于當時剛開始用C#開發,所以看著他們編譯了一下GDAL1.5的代碼,試圖用的C#圖像處理的開發中,感覺好繁瑣??!所以雖然一直有心學習一下,但只是粗略的接觸了一些。知道Google earth、ArcGIS都在用。最近再一次學習C++,覺得有必要從新接觸GDAL。查閱了一些資料,發現1.7以后的版本編譯起來并不是那么困難!尤其是應用到C++中的開發中。所以先編譯了一個簡單的應用到學習中。

一、環境準備:

1.VC++2010

2.gdal181源碼

  首先使用VisualStudio2010 IDE編譯,但是在C:\warmerda\bld盤只安裝了bin、data、html三個文件夾,所以在測試開發的時候找不到include和lib文件夾。

  決定使用cmd命令行編譯,首先在“開始菜單\所有程序\Microsoft Visual Studio 2010\Visual Studio Tools\ Visual Studio 2010命令提示”

  使用cd命令,切換到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=1600clean nmake -f makefile.vc MSVC_VER=1600DEBUG=
        
        
          1
        
      
    

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

      
        
          1
        
        
          編譯GDAL庫 
        
        
          2
        
         編譯GDAL庫,并安裝(這里安裝的意思就是將生成的dll,
        
          exe等文件拷貝到C:
        
        
          \warmerda\bld目錄), 
        
        
          3
        
         編譯GDAL庫,并安裝開發者模式(安裝的意思同上,
        
          開發者模式意思是將開發用的include文件夾中的頭文件和lib文件一同拷貝到
          
C:
\warmerda\bld目錄, 此時會在C: \warmerda\bld目錄中多出來兩個文件夾,分別是include和lib,分別存放的是GDAL的頭文件和lib文件,用于調用GDAL庫使用)。 4 清理GDAL庫,同時會刪除編譯GDAL庫所生成的臨時文件,作用相當于在VS環境中的清理命令。 5 作用同上,但是添加了一個MSVC_VER= 1600 ,表示使用VS2010編譯。 6 編譯GDAL庫的debug模式,可以用來調試GDAL源碼。

這樣再C:\warmerda\bld盤只安裝了bin、data、html、include、lib共5個文件夾。這樣簡單的開發用到的項目基本全了。

參考:http://www.cnblogs.com/bigbigtree/archive/2011/11/20/2256434.html ?該文章寫的很好,特別推薦,只是配圖沒有了?。?

二、測試開發

1.新建一個win32項目命名為readimg

2.配置項目【屬性】

【C/C++】-【常規】,右側的【附加包含目錄】中,選擇GDAL的include文件夾路徑

【鏈接器】-【常規】,右側的【附加庫目錄】中,選擇GDAL的lib文件夾路徑

【鏈接器】-【輸入】,右側的【附加依賴項】中,填寫gdal_i.lib

3.添加頭文件

      
        
          1
        
         #include 
        
          "
        
        
          cpl_conv.h
        
        
          "
        
        
          2
        
         #include 
        
          "
        
        
          gdal_priv.h
        
        
          "
        
      
    

4.在main中鍵入如下代碼

      
        
           1
        
        
          //
        
        
          注冊文件格式 
        
        
           2
        
        
           GDALAllRegister(); 
        
        
           3
        
        
           4
        
        
          const
        
        
          char
        
        * pszFile = 
        
          "
        
        
          D:\\hsy.img
        
        
          "
        
        
          ; 
        
        
           5
        
             GDALDataset*
        
           poDataset; 
        
        
           6
        
        
          //
        
        
          使用只讀方式打開圖像 
        
        
           7
        
             poDataset = (GDALDataset*
        
          )GDALOpen(pszFile,GA_ReadOnly); 
        
        
           8
        
        
          if
        
        ( poDataset ==
        
           NULL ) 
        
        
           9
        
        
           { 
        
        
          10
        
                 printf( 
        
          "
        
        
          File: %s不能打開!\n
        
        
          "
        
        
          ,pszFile); 
        
        
          11
        
        
          return
        
        
          0
        
        
          ; 
        
        
          12
        
        
           } 
        
        
          13
        
        
          14
        
        
          //
        
        
          輸出圖像的格式信息 
        
        
          15
        
             printf( 
        
          "
        
        
          Driver:%s/%s\n
        
        
          "
        
        
          , 
        
        
          16
        
                 poDataset->GetDriver()->
        
          GetDescription(), 
        
        
          17
        
                 poDataset->GetDriver()->
        
          GetMetadataItem( GDAL_DMD_LONGNAME) ); 
        
        
          18
        
        
          19
        
        
          //
        
        
          輸出圖像的大小和波段個數 
        
        
          20
        
             printf( 
        
          "
        
        
          Size is%dx%dx%d\n
        
        
          "
        
        
          , 
        
        
          21
        
                 poDataset->GetRasterXSize(),poDataset->
        
          GetRasterYSize(), 
        
        
          22
        
                 poDataset->
        
          GetRasterCount()); 
        
        
          23
        
        
          24
        
        
          //
        
        
          輸出圖像的投影信息 
        
        
          25
        
        
          if
        
        ( poDataset->GetProjectionRef() !=
        
           NULL ) 
        
        
          26
        
                 printf( 
        
          "
        
        
          Projectionis `%s'\n
        
        
          "
        
        , poDataset->
        
          GetProjectionRef() ); 
        
        
          27
        
        
          28
        
        
          //
        
        
          輸出圖像的坐標和分辨率信息 
        
        
          29
        
        
          double
        
         adfGeoTransform[
        
          6
        
        
          ]; 
        
        
          30
        
        
          if
        
        ( poDataset->GetGeoTransform( adfGeoTransform) ==
        
           CE_None ) 
        
        
          31
        
        
           { 
        
        
          32
        
                 printf( 
        
          "
        
        
          Origin =(%.6f,%.6f)\n
        
        
          "
        
        
          , 
        
        
          33
        
                     adfGeoTransform[
        
          0
        
        ], adfGeoTransform[
        
          3
        
        
          ]); 
        
        
          34
        
        
          35
        
                 printf( 
        
          "
        
        
          PixelSize = (%.6f,%.6f)\n
        
        
          "
        
        
          , 
        
        
          36
        
                     adfGeoTransform[
        
          1
        
        ], adfGeoTransform[
        
          5
        
        
          ]); 
        
        
          37
        
        
           } 
        
        
          38
        
        
          char
        
        
           a; 
        
        
          39
        
             std::cin>>a;
      
    

運行結果:

[GDAL]1.GDAL1.8.1編譯與第一個程序

[GDAL]1.GDAL1.8.1編譯與第一個程序


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲福利视频一区二区三区 | 夜鲁夜鲁夜鲁在线观看福利 | 婷婷色中文字幕 | 免费视频久久 | 色婷婷综合久久久久中文 | 亚洲精品乱码久久久久久麻豆 | 97久久免费视频 | 91伦理| 久99久爱精品免费观看视频 | 国产精品久久久久久五月尺 | 亚洲精品久久久久中文 | 波多野结衣免费一区二区三区香蕉 | 中文一级国产特级毛片视频 | 国产91在线播放 | a级毛片在线视频免费观看 a级免费网站 | 青草社区在线 | 高清欧美一区二区三区 | 欧美日韩一区在线观看 | 一级香蕉视频在线观看 | 亚洲视频手机在线观看 | 97视频资源站| 久久久精品免费国产四虎 | 奇米在线观看 | 波多野结衣一区二区三区高清在线 | 国产一区二区三区高清 | 国产高清看片日韩欧美久久 | 97视频在线看 | 亚洲精品久久久久久久777 | 久操视频在线观看免费 | 欧美专区在线播放 | 亚洲天堂国产精品 | 日本不卡视频免费 | 色老头xxxwww作爱视频 | 欧美一区二区三区综合色视频 | 久久久婷婷 | 四虎精品久久 | 人成在线免费视频 | 国产精品香蕉在线观看首页 | 一本久道综合久久精品 | 国产精品久久久久影院色 | 91国在线观看 |