GDAL
開源柵格空間數據轉換庫
GDAL(Geospatial Data Abstraction Library)是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。它利用抽象數據模型來表達所支持的各種文件格式。它還有一系列命令行工具來進行數據轉換和處理。 OGR是GDAL項目的一個分支,功能與GDAL類似,只不過它提供對矢量數據的支持。有很多著名的GIS類產品都使用了GDAL/OGR庫,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系統。利用GDAL/OGR庫,可以使基於Linux的地理空間數據管理系統提供對矢量和柵格文件數據的支持。
GDAL(Geospatial Data Abstraction Library)是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。它利用抽象數據模型來表達所支持的各種文件格式。它還有一系列命令行工具來進行數據轉換和處理。
OGR是GDAL項目的一個分支,功能與GDAL類似,只不過它提供對矢量數據的支持。
有很多著名的GIS類產品都使用了GDAL/OGR庫,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系統。利用GDAL/OGR庫,可以使基於Linux的地理空間數據管理系統提供對矢量和柵格文件數據的支持。
GDAL提供對多種柵格數據的支持,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。
GDAL使用抽象數據模型(abstract data model)來解析它所支持的數據格式,抽象數據模型包括數據集(dataset),坐標系統,仿射地理坐標轉換(Affine Geo Transform),大地控制點(GCPs),元數據(Metadata),柵格波段(Raster Band),顏色表(Color Table),子數據集域(Subdatasets Domain),圖像結構域(Image_Structure Domain),XML域(XML:Domains)。
GDALMajorObject類:帶有元數據的對象。
GDALDdataset類:通常是從一個柵格文件中提取的相關聯的柵格波段集合和這些波段的元數據;GDALDdataset也負責所有柵格波段的地理坐標轉換(georeferencing transform)和坐標系定義。
GDALDriver類:文件格式驅動類,GDAL會為每一個所支持的文件格式創建一個該類的實體,來管理該文件格式。
GDALDriverManager類:文件格式驅動管理類,用來管理GDALDriver類。
Geometry類:Geometry (包括OGRGeometry等類)封裝了OpenGIS的矢量數據模型,並提供了一些幾何操作,WKB(Well Knows Binary)和WKT(Well Known Text)格式之間的相互轉換,以及空間參考系統(投影)。
Spatial Reference類:OGRSpatialReference封裝了投影和基準面的定義。
Feature類:OGRFeature封裝了一個完整feature的定義,一個完整的feature包括一個geometry和geometry的一系列屬性。
Feature Definition類:OGRFeatureDefn裡面封裝了feature的屬性,類型、名稱及其默認的空間參考系統等。一個OGRFeatureDefn對象通常與一個層(layer)對應。
Layer類:OGRLayer是一個抽象基類,表示數據源類OGRDataSource裡面的一層要素(feature)。
Data Source類:OGRDataSource是一個抽象基類,表示含有OGRLayer對象的一個文件或一個資料庫。
Drivers類:OGRSFDriver對應於每一個所支持的矢量文件格式。類OGRSFDriver由類OGRSFDriverRegistrar來註冊和管理。
(1)下載gdal的安裝文件,解壓到某目錄下,如C:\gdalsrc下。
這裡我們假定VC6的安裝在默認目錄C:\Program Files\Microsoft Visual Studio8下。
(2)啟動cmd,即打開控制台窗口。進入VC6的安裝目錄下,如cd C:\Program Files\MicrosoftVisual Studio8\VC\bin\,在此目錄下有個文件VCVARS32.BAT,執行一下這個文件,然後重新回到C:\gdalsrc下。運行命令nmake /f makefile。編譯完成後,用記事本打開文件C:\gdalsrc\nmake.opt,根據自己的情況修改GDAL_HOME = 這一行,這個指的是最終GDAL的安裝目錄,比如說我們安裝在C:\GDAL,那麼這一行就是GDAL_HOME = "C:\GDAL",在C:\gdalsrc下執行nmake /f makefile install,然後是nmake /f makefile devinstall,然後我們需要的東西就安裝到了C:\GDAL下。
初次使用visual studio 對工具不熟悉,有些步驟可以配置的
(1)在VS2005中新建win32控制台程序 testGDALconsole,(嚮導中附加選項不能選為空項目)將C:\GDAL\bin\gdal14.dll拷貝到testGDALconsole目錄下的debug目錄中。(否則運行時會提示找不到gdal14.dll)
(2)在工程的Library files中和Include files中分別添加GDAL的LIB文件目錄和頭文件目錄,
這步我不會,就直接將gdal_priv.h拷貝到testGDALconsole.cpp所在目錄下
(3)添加一個文件gdal_i.lib。使用 #pragma comment (lib,"..\\lib\\gdal_i.lib")(這步沒做)
(4)程序文件
樣本程序如下:
#include "stdafx.h"
#include "gdal_priv.h"
#include
using namespace std;
int main(int argc, char* argv[])
{
if(argc!=2)
{
return 0;
}
GDALDataset *poDataset;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen( argv[1], GA_ReadOnly );
if( poDataset != NULL )
{
cout<<"RasterXSize:"<GetRasterXSize()<
cout<<"RasterYSize:"<GetRasterYSize()<
cout<<"RasterCount:"<GetRasterCount()<
}
return 0;
}
假定生成的程序名為test.exe,假定有一個文件名為1.jpg的文件在C:\下,在命令行下test.exe
c:\1.jpg,程序將列印出此圖片的橫縱坐標和raster count,如:
C:\>test 1.JPG
RasterXSize:800
RasterYSize:600
RasterCount:3
目錄