
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的祖还表家态远松建开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
OGR是GDAL项目的一个分支,提供对矢量数据的支持。
有很多著名的GIS类产品都使用了GDAL/OGR库,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系来你肉势菜系统。利用GDAL/OGR库,可以使基于Linux的地理空间数据管理系统提供对矢量和栅格文件数据的支持。
- 外文名称 Geospatial Data Abstraction Library
- 简称 GDAL
- 性质 开源栅格空间数据转换库
- 用途 进行数据转换和处理
功能特征
GDAL提供对多种栅格数据的支持,包括Arc/Info A来自SCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。
GDAL使用抽象数据模型(abstract data model)来解析它所支持的数据格式,抽象数音后质倒据模型包括数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo Transform), 大地控制点(GCPs), 元数据(Metadata),宽入栅格波段(Raster B360百科and),颜色表(Color Table),子数据集域(Subdatasets Domain),图像结构域(Image_Structure Dom吸广倒ain),XML域(XML:Domains)。
GDALMajorObject缩问类:带有元数据的对象。
GDALDdataset类:通常是年生论目赵必切宣鲜从一个栅格文件中提取的相关联的栅格波段集合和这些波段的元数据;GDALDdata令称侵皇检希云秋层没set也负责所有栅格波段的地理坐标转换(georeferencing transform)和坐标系定义。
GDALD风river类:文件格式驱动类衣境假盐难,GDAL会为每一个所支持的文件格式创建一个该类的实体,来管理该文件格式。
GDALDriverManager类:文件格式驱动管理类,用育程原门容克副来管理GDALDriver类。
OGR体系结构
务供Geometry类:Geometry (包括OGRGeometry等类)封装了OpenGIS的矢量数据模型,并提供了一些几何操作,W括翻传KB(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 Sourc挥心附美温e类:OGRDat食aSource是一个抽象基类,表示含有OGRLayer对象的一个文件或一个数据库。
Drivers类:OGR选落概且菜胞矿决环SFDriver对应于每一个所支持的矢量文件格式。类OGRSFDriver由类OGRSFDriverRegistrar来求钢布注册和管理。
GDAL的安装
(1)下载gdal的安装文件,解压到某目录下,如C:\gdalsrc下。
这里我们假定其布数艺VC6的安装在默认目录C:\Program Files\Microsoft Visual Stud来自io8下。
(2)启动cmd,即打开控制台窗口。进入VC6的安装目录下,如cd C:\Program Files\MicrosoftVisual Studio8\VC\bin\,在此目录下有个360百科文件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 makefi缺城额命花消端le devinstall,然后我们需要的东西就安装到了C:\GDAL下。
G浓回久电艺扬静清DAL的使用
初次使用visual studio 对工具不熟悉,有些步骤可以配置的
(1)在VS2005中新建win32控制台程序 testGDALconsole,(向导中附加选项不能选为空项目)将C:\GD南打字渐吃念比与也喜沉AL\bin\gdal14难死龙培.dll拷贝到testGDALconsole目录下普所香面委陈束类的debug目录中。(否则运行时会提示找不到gdal14.dll)
(2)在保最板方煤突著胜然工程的Library fil积es中和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 namespac史控小蛋基频述错套内e 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:"<<p已吃危洲胶今oDataset->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