版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GDAL编译与功能介绍
王健
2011-11-16GDAL(GeospatialDataAbstractionLibrary)是一个开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。并有一系列命令行工具来进行数据转换和处理。使用GDAL开发的软件:ESRIArcGIS9.2+GoogleEarthERDASERViewerOpenEV
MapServerFWTools
IDRISI…….GDAL的编译GDAL为在C/C++语言的基础上编写的类库,相应的,编译的版本为C/C++版本。使用SWIG能使GDAL编译为以下高级语言版本:C#JAVAPythonRubyVb6GDAL的基本应用在使用GDAL的函数之前要先进行驱动注册GDALAllRegister(
)
GDAL常用函数:打开一个影像的数据集GDALOpen(const
char*
pszFilename,GDALAccess
eAccess)eAccess=GA_Update||GA_ReadOnly
GDALDataset*poDataset=(GDALDataset*)GDALOpen(Filename,GA_ReadOnly);doubleadfGeoTransform[6];poDataset->GetGeoTransform(adfGeoTransform);adfGeoTransform[0]/*左上角x值*/adfGeoTransform[1]/*X轴分辨率*/adfGeoTransform[2]/*偏转,指北则为0*/adfGeoTransform[3]/*左上角y值*/adfGeoTransform[4]/*偏转,指北则为0*/adfGeoTransform[5]/*Y轴分辨率*/
获取栅格影像的数据类型GDALDataTypetype=GDALGetRasterDataType(GDALGetRasterBand(hdataset,1));获取影像的行列值。Intx=poDataset->GetRasterXSize();Inty=poDataset->GetRasterYSize();获取影像的投影参数。Constchar*pszproj=poDataset->GetProjectionRef();创建新的文件GDALDriver*hDriver=GetGDALDriverManager()->GetDriverByName("GTIFF");GDALDataset*poDataset2=hDriver->Create(savename,x,y,1,type,NULL);GDALDataset*GDALDriver::Create
(constchar*
pszFilename,int
nXSize,int
nYSize,int
nBands,GDALDataType
eType,char**
papszOptions
)pszFilename为储存影像路径nXSize为影像的行值nYSize为影像的列值nBands为波段数eType为影像数据类型papszOptions为一些特殊的控制参数,通常为NULL读取影像数据int*Dstdn=newint[x*y];memset(Dstdn,0,sizeof(int)*x*y);poDataset->RasterIO(GF_Read,0,0,x,y,Dstdn,x,y,type,1,0,0,0,0);GDALDataset::RasterIO
(GDALRWFlag
eRWFlag, //打开影像方式,GF_Read||GF_Write
int
nXOff, //X轴偏移值int
nYOff, //Y轴偏移值int
nXSize //X轴读取大小
int
nYSize, //Y轴读取大小void*
pData, //影像读取至缓存int
nBufXSize, //储存影像X轴缩放大小int
nBufYSize, //储存影像Y轴缩放大小GDALDataType
eBufType,//影像数据格式int
nBandCount, //波段数int*
panBandMap, //0int
nPixelSpace, //0int
nLineSpace, //0int
nBandSpace
//0
)#include<iostream>#include<stdlib.h>#include"gdal/gdal_priv.h"intmain(){GDALDataset*poDataset;doubleadfGeoTransform[6];float*win;char*slopeBuf; floatdx,dy,key,slopePct;
inti,j,n,containsNull;floatscale=0.5;//水平与垂直方向的变化因子 constchar*pszFilename="D:\\honda.jpg";constchar*pszSlopeFilename="D:\\slope-honda-2.bmp";GDALAllRegister();
poDataset=(GDALDataset*)GDALOpen(pszFilename,GA_ReadOnly);//打开文件
if(poDataset==NULL){
std::cout<<"Couldn'topendataset"<<pszFilename<<"/n";}
GDALRasterBand*poBand;
poBand=poDataset->GetRasterBand(1);
poDataset->GetGeoTransform(adfGeoTransform);constdoublecellsizeY=adfGeoTransform[5];//Y轴分辨率
constdoublecellsizeX=adfGeoTransform[1];//X轴分辨率
constfloatnullValue=(float)poBand->GetNoDataValue();//获取缺省值
constint
nXSize=poBand->GetXSize();//列数
constint
nYSize=poBand->GetYSize();//行数
slopeBuf=(char*)CPLMalloc(sizeof(char)*nXSize);win=(float*)CPLMalloc(sizeof(float)*9);
GDALDriver*poDriver;
poDriver=GetGDALDriverManager()->GetDriverByName("BMP");//文件输出类型为TIF
GDALDataset*poSlopeDS;GDALRasterBand*poSlopeBand;poSlopeDS=poDriver->Create(pszSlopeFilename,nXSize,nYSize,1,GDT_Byte,NULL);poSlopeBand=poSlopeDS->GetRasterBand(1);for(i=0;i<nYSize;i++){for(j=0;j<nXSize;j++){
containsNull=0;
if(i==0||j==0||i==nYSize-1||j==nXSize-1)//边界操作{
slopeBuf[j]=nullValue;continue;}
poBand->RasterIO(GF_Read,j-1,i-1,3,3,win,3,3,GDT_Float32,0,0);//读取3X3的矩阵
for(n=0;n<=8;n++){
if(win[n]==nullValue)//检查矩阵中是否有NULL值{
containsNull=1;break;}}if(containsNull==1){
slopeBuf[j]=nullValue;continue;}else{
dx=((win[0]+win[3]+win[3]+win[6])- // SOBEL算子为3X3的矩阵,
(win[2]+win[5]+win[5]+win[8])); // 如下所示为下标
// 0 1 2
dy=((win[6]+win[7]+win[7]+win[8])- // 3 4 5(win[0]+win[1]+win[1]+win[2])); // 6 7 8 key=((dx/(8*cellsizeX*scale))*(dx/(8*cellsizeX*scale)))+ ((dy/(8*cellsizeY*scale))*(dy/(8*cellsizeY*scale)));
slopePct=100*sqrt(key);
if(slopePct>830)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《大学物理(上册)》课件-第1章
- 2025-2030全球车辆燃油油位计行业调研及趋势分析报告
- 2025-2030全球电积铜行业调研及趋势分析报告
- 2025年全球及中国直接空气捕获和储存(DACS)行业头部企业市场占有率及排名调研报告
- 2025-2030全球多层土壤传感器行业调研及趋势分析报告
- 2025年全球及中国阻燃塑料薄膜和片材行业头部企业市场占有率及排名调研报告
- 2025-2030全球医用手指康复训练仪行业调研及趋势分析报告
- 2025-2030全球化学谷物熏蒸剂行业调研及趋势分析报告
- 2025年全球及中国智慧教育公共服务平台行业头部企业市场占有率及排名调研报告
- 2025年全球及中国工业胶囊填充设备行业头部企业市场占有率及排名调研报告
- 2025年度院感管理工作计划(后附表格版)
- 励志课件-如何做好本职工作
- 化肥销售工作计划
- 2024浙江华数广电网络股份限公司招聘精英18人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年山东省济南市中考英语试题卷(含答案解析)
- 2024年社区警务规范考试题库
- 2025中考英语作文预测:19个热点话题及范文
- 第10讲 牛顿运动定律的综合应用(一)(讲义)(解析版)-2025年高考物理一轮复习讲练测(新教材新高考)
- 静脉治疗护理技术操作标准(2023版)解读 2
- 2024年全国各地中考试题分类汇编(一):现代文阅读含答案
- GB/T 30306-2024家用和类似用途饮用水处理滤芯
评论
0/150
提交评论