GDAL

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類。

OGR體系結構

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來註冊和管理。

GDAL的安裝

(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下。

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 <iostream>

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:"<<poDataset->GetRasterXSize()<<endl;

cout<<"RasterYSize:"<<poDataset->GetRasterYSize()<<endl;

cout<<"RasterCount:"<<poDataset->GetRasterCount()<<endl;

}

return 0;

}

假定生成的程式名為test.exe,假定有一個檔案名稱為1.jpg的檔案在C:\下,在命令行下test.exe

c:\1.jpg,程式將列印出此圖片的橫縱坐標和raster count,如:

C:\>test 1.JPG

RasterXSize:800

RasterYSize:600

RasterCount:3

相關詞條

熱門詞條

聯絡我們