GDAL_API Tutorial

合集下载

gdal影像分块读取处理和写出的程序

gdal影像分块读取处理和写出的程序

gdal影像分块读取处理和写出的程序1.引言1.1 概述概述部分的内容可以简要介绍本文将要探讨的内容,即gdal影像分块读取处理和写出的程序。

可以提及gdal是一种功能强大的地理数据抽象库,它提供了许多用于处理栅格和矢量数据的函数和工具。

在本文中,我们将重点关注gdal在影像数据处理中的应用。

首先,我们将介绍gdal影像分块读取处理的原因和意义。

在处理大型影像数据时,一次性将整个影像加载到内存中可能会导致内存溢出或性能下降的问题。

因此,我们需要将影像划分为多个块,并逐块进行读取和处理。

接下来,我们将详细介绍gdal如何进行影像的分块读取处理,包括块的定义、读取方式和处理方法等。

其次,我们将讨论gdal影像写出的程序。

将处理后的影像数据写出到硬盘中是一个重要的步骤,方便我们后续的分析和应用。

我们将介绍gdal 如何进行影像数据的写出,包括文件格式的选择、参数设置和输出路径的指定等。

最后,我们将总结本文的主要内容,并展望gdal在影像数据处理领域的未来发展。

gdal作为一个开源的地理数据处理工具,具有广泛的应用前景和不断增长的用户群体。

希望本文对读者了解gdal的影像分块读取处理和写出的程序有所帮助,并能够在实际应用中发挥其优势和功能。

1.2 文章结构文章结构部分(文章1.2)的内容如下:本篇长文主要分为以下几个部分:引言、正文和结论。

通过这个结构,将全面探讨GDAL影像分块读取处理和写出的程序。

引言部分将对本文的主题进行概述和解释。

我们将介绍GDAL (Geospatial Data Abstraction Library)的概念和功能,并介绍影像分块读取处理和写出的背景和意义。

同时,我们还会强调本文的目的和重要性。

正文部分将重点探讨GDAL影像分块读取处理和写出的程序。

在2.1小节中,我们将详细介绍GDAL对影像的分块读取处理方法,包括读取原始影像、设置分块大小和处理单个块的具体步骤。

在2.2小节中,我们将介绍GDAL影像写出程序的开发流程,包括对处理后的影像进行写出、设置输出格式和写出完成后的处理。

GDAL学习笔记

GDAL学习笔记

is$(HDF4_DIR)\lib\hd421.lib$(HDF4_DIR)\lib\hm421.lib用HDF4_LIB=/LIBPATH:这种形式似乎可以建立gdal的库,但是往下编译会出错。

而且要把$(HDF4_DIR)\dll和$(HDF4_DIR)\lib拷贝到同一个目录下,不然会提示找不到库),下面的19(0,0,0,255)(0,0,28,255)(0,0,56,255)(0,0,85,255)(0, 0,113,255)20(0,0,142,255)(0,0,170,255)(0,0,199,255)(0,0,227,255) (0,0,255,21255)(0,28,0,255)(0,28,28,255)(0,28,56,255)(0,28,85, 255)(0,28,22113,255)(0,28,142,255)(0,28,170,255)(0,28,199,255)(0, 28,227,25523)(0,28,255,255)(0,56,0,255)(0,56,28,255)(0,56,56,255) (0,56,8524,255)(0,56,113,255)(0,56,142,255)(0,56,170,255)(0,56, 199,255)(250,56,227,255)(0,56,255,255)(0,85,0,255)(0,85,28,255) (0,85,56,26255)(0,85,85,255)(0,85,113,255)(0,85,142,255)(0,85, 170,255)(0,2785,199,255)(0,85,227,255)(0,85,255,255)(0,113,0,255) (0,113,28,28255)(0,113,56,255)(0,113,85,255)(0,113,113,255)(0,113, 142,255)(290,113,170,255)(0,113,199,255)(0,113,227,255)(0,113,255, 255)(0,13042,0,255)(0,142,28,255)(0,142,56,255)(0,142,85,255) (0,142,113,31255)(0,142,142,255)(0,142,170,255)(0,142,199,255)(0, 142,227,255)32(0,142,255,255)(0,170,0,255)(0,170,28,255)(0,170,56, 255)(0,17033,85,255)(0,170,113,255)(0,170,142,255)(0,170,170,255) (0,170,19934,255)(0,170,227,255)(0,170,255,255)(0,199,0,255)(0, 199,28,255)35(0,199,56,255)(0,199,85,255)(0,199,113,255)(0,199,142, 255)(0,19369,170,255)(0,199,199,255)(0,199,227,255)(0,199,255,255) (0,227,037,255)(0,227,28,255)(0,227,56,255)(0,227,85,255)(0,227, 113,255)38(0,227,142,255)(0,227,170,255)(0,227,199,255)(0,227, 227,255)(0,39227,255,255)(0,255,0,255)(0,255,28,255)(0,255,56,255) (0,255,85,40255)(0,255,113,255)(0,255,142,255)(0,255,170,255)(0, 255,199,25541)(0,255,227,255)(0,255,255,255)(28,0,0,255)(28,0,28, 255)(28,0,4256,255)(28,0,85,255)(28,0,113,255)(28,0,142,255)(28, 0,170,255)43(28,0,199,255)(28,0,227,255)(28,0,255,255)(28,28,0, 255)(28,28,4428,255)(28,28,56,255)(28,28,85,255)(28,28,113,255)(28, 28,142,24555)(28,28,170,255)(28,28,199,255)(28,28,227,255)(28, 28,255,255)46(28,56,0,255)(28,56,28,255)(28,56,56,255)(28,56,85, 255)(28,56,47113,255)(28,56,142,255)(28,56,170,255)(28,56,199,255) (28,56,227,48255)(28,56,255,255)(28,85,0,255)(28,85,28,255)(28,85, 56,255)(2498,85,85,255)(28,85,113,255)(28,85,142,255)(28,85,170, 255)(28,8550,199,255)(28,85,227,255)(28,85,255,255)(28,113,0,255) (28,113,2851,255)(28,113,56,255)(28,113,85,255)(28,113,113,255)(28, 113,142,52255)(28,113,170,255)(28,113,199,255)(28,113,227,255)(28, 113,255,53255)(28,142,0,255)(28,142,28,255)(28,142,56,255)(28, 142,85,255)54(28,142,113,255)(28,142,142,255)(28,142,170,255)(28,142, 199,255)55(28,142,227,255)(28,142,255,255)(28,170,0,255)(28,170, 28,255)(2856,170,56,255)(28,170,85,255)(28,170,113,255)(28,170,142, 255)(28,57170,170,255)(28,170,199,255)(28,170,227,255)(28,170,255, 255)(28,58199,0,255)(28,199,28,255)(28,199,56,255)(28,199,85,255) (28,199,59113,255)(28,199,142,255)(28,199,170,255)(28,199,199,255) (28,199,60227,255)(28,199,255,255)(28,227,0,255)(28,227,28,255) (28,227,56,61255)(28,227,85,255)(28,227,113,255)(28,227,142,255)(28, 227,170,62255)(28,227,199,255)(28,227,227,255)(28,227,255,255)(28, 255,0,25635)(28,255,28,255)(28,255,56,255)(28,255,85,255)(28,255, 113,255)64(28,255,142,255)(28,255,170,255)(28,255,199,255)(28,255, 227,255)65(28,255,255,255)(56,0,0,255)(56,0,28,255)(56,0,56,255) (56,0,8566,255)(56,0,113,255)(56,0,142,255)(56,0,170,255)(56, 0,199,255)(6756,0,227,255)(56,0,255,255)(56,28,0,255)(56,28,28,255) (56,28,5686,255)(56,28,85,255)(56,28,113,255)(56,28,142,255)(56, 28,170,25695)(56,28,199,255)(56,28,227,255)(56,28,255,255)(56,56, 0,255)(5670,56,28,255)(56,56,56,255)(56,56,85,255)(56,56,113,255) (56,56,17142,255)(56,56,170,255)(56,56,199,255)(56,56,227,255) (56,56,255,72255)(56,85,0,255)(56,85,28,255)(56,85,56,255)(56,85, 85,255)(56,7385,113,255)(56,85,142,255)(56,85,170,255)(56,85,199, 255)(56,85,74227,255)(56,85,255,255)(56,113,0,255)(56,113,28,255) (56,113,56,75255)(56,113,85,255)(56,113,113,255)(56,113,142,255)(56, 113,170,76255)(56,113,199,255)(56,113,227,255)(56,113,255,255)(56, 142,0,25775)(56,142,28,255)(56,142,56,255)(56,142,85,255)(56,142, 113,255)78(56,142,142,255)79>>>通过GetRasterColorInterpretation,我们知道我们的图像是一个颜色表索引的图像而不是纯粹的黑白灰度图像(PaletteIndex,其他的颜色模型,可以察看gdalconst模块中GCI打头的枚举值)。

GDAL python教程基础篇OGR空间计算

GDAL python教程基础篇OGR空间计算

GDAL python教程基础篇OGR空间计算GDAL是一个用于地理空间数据读写的库,它支持多种常见的地理格式,如GeoTIFF和ESRI Shapefile等。

而OGR则是GDAL中的一个子库,它支持矢量数据格式,如ESRI Shapefile和GeoJSON等。

本文主要介绍如何使用OGR进行空间计算。

首先需要安装GDAL和OGR,可以通过pip来安装:```bashpip install gdal```接着可以在Python中使用OGR来读取矢量数据,如下所示:```pythonfrom osgeo import ogr# 打开Shapefile文件driver = ogr.GetDriverByName('ESRI Shapefile')dataSource = driver.Open('data.shp', 0)# 获取图层layer = dataSource.GetLayer()# 可以遍历所有要素for feature in layer:# 处理每个要素```接着可以使用OGR进行空间计算,如计算两个多边形的相交部分,代码如下:```pythonfrom osgeo import ogr# 打开Shapefile文件driver = ogr.GetDriverByName('ESRI Shapefile')dataSource1 = driver.Open('data1.shp', 0)dataSource2 = driver.Open('data2.shp', 0)# 获取图层layer1 = dataSource1.GetLayer()layer2 = dataSource2.GetLayer()# 获取多边形要素polygon1 = layer1.GetFeature(0).GetGeometryRef()polygon2 = layer2.GetFeature(0).GetGeometryRef()# 计算相交部分intersection = polygon1.Intersect(polygon2)# 打印相交面积print(intersection.GetArea())```以上代码假设每个Shapefile文件只有一个多边形要素,如果有多个要素,需要修改代码来遍历所有要素。

GDAL库介绍、安装与使用介绍

GDAL库介绍、安装与使用介绍

1.GDAL介绍GDAL是一个转换各种栅格数据格式的库。

包括读取、写入、转换、处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持)。

它使用了一个单一的抽象数据模型就支持了大多数的栅格数据(GIS对栅格,矢量,3D数据模型的抽象能力实在令人叹服)。

当然除了栅格操作,这个库还同时包括了操作矢量数据的另一个有名的库ogr(转换矢量GIS数据),这样这个库就同时具备了操作栅格和矢量数据的能力,目前ogr能够支持的数据格式包括:Arc/Info Binary Coverage、DWG、ESRI Personal GeoDatabase、ArcSDE、ESRI Shapefile、GML、GRASS、Mapinfo File、Microstation DGN、ODBC、Oracle Spatial 和PostgreSQL等。

应该说,这就基本包括了我们平常用到的所有矢量型GIS文件格式了。

Gdal支持的栅格数据格式参阅/formats_list.html2.GDAL安装(1)下载gdal的安装文件,/gdal/gdal142.zip,解压到某目录下,如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.vc。

编译完成后,用记事本打开文件C:\gdalsrc\nmake.opt,根据自己的情况修改GDAL_HOME = 这一行,这个指的是最终GDAL的安装目录,比如说我们安装在C:\GDAL,那么这一行就是GDAL_HOME = "C:\GDAL",在C:\gdalsrc下执行nmake /f makefile.vc install,然后是nmake /f makefile.vc devinstall,然后我们需要的东西就安装到了C:\GDAL下。

GDAL API入门

GDAL API入门

GDAL API入门打开文件在打开GDAL所支持的光栅数据之前需要注册驱动。

这里的驱动是针对GDAL支持的所有数据格式。

通常可以通过调用GDALAllRegister()函数来注册所有已知的驱动,同时也包含那些用GDALDriverManager::AutoLoadDrivers()从.so文件中自动装载驱动。

如果程序需要对某些驱动做限制,可以参考gdalallregister.cpp代码。

当驱动被注册之后,我们就可以用GDALOpen()函数来打开一个数据集。

打开的方式可以是GA_ReadOnly或者GA_Update。

In C++:#include "gdal_priv.h"int main(){GDALDataset *poDataset;GDALAllRegister();poDataset = (GDALDataset *) GDALOpen( pszFilename, GA_ReadOnly );if( poDataset == NULL ){...;}In C:#include "gdal.h"int main(){GDALDatasetH hDataset;GDALAllRegister();hDataset = GDALOpen( pszFilename, GA_ReadOnly );if( hDataset == NULL ){...;}如果GDALOpen()函数返回NULL则表示打开失败,同时CPLError()函数产生相应的错误信息。

如果您需要对错误进行处理可以参考CPLError()相关文档。

通常情况下,所有的GDAL函数都通过CPLError()报告错误。

另外需要注意的是pszFilename并不一定对应一个实际的文件名(当然也可以就是一个文件名)。

它的具体解释由相应的驱动程序负责。

它可能是一个URL,或者是文件名以后后面带有许多用于控制打开方式的参数。

GDAL库安装

GDAL库安装

简单介绍:OGR是一个读取和处理GSI矢量数据的库。

这个库可以读取和处理多种流行的矢量数据,OGR是GDAL(/)的一个部分,只要你安装了GDAL库,就已经拥有了OGR库。

一、安装:1.先下载一个GDAL版本(C++)(/gdal/wiki/BuildHints)。

2.然后打开控制(DOS)台,找到.....\Microsoft Visual Studio .NET 2010\Vcbin\vcvars32.bat,注册VC编译环境。

进入VS安装目录执行VS目录下的VCV ARS32 文件3.然后把GDAL库放到一个目录下,如C:\gdal-1.9.1\gdal-1.9.1;用VS打开并打开文件夹下的nmake.opt修改GDAL_HOME = "C:\GDAL"把路径改到需要把gdal安装的地方。

cd进入刚才源文件的解压目录C:\gdal-1.9.1\gdal-1.9.1。

将gdal解压到C盘修改nmakecd进入解压目录4.然后在DOS中依次输入:nmake /f makefile.vcnmake /f makefile.vc installnmake /f makefile.vc devinstall中间等待编译处理。

处理完后系统将会把我们需要的文件拷贝到开始设定的安装目录,如刚才设置的C:\GDAL二、应用1.在新建项目下:属性->C/C++->常规->附加包含目录:"C:\GADL\include"。

属性->链接器->常规->附加库目录:"C:\GADL\lib".属性->连接器->输入->附加依赖项:gdal_i.lib.2. 将C:\GDAL\bin\gdal14.dll拷贝到vs新建项目的debug文件夹中。

(否则运行时会提示找不到gdal14.dll)添加所需的头文件就可以用了。

GDAL文档

GDAL文档
GDAL库安装:
/gdal/gdal142.zip从这个网站中下载gdal文件。
接下来是安装步骤,具体是在VC6.0上安装的,但是安装过后生成的include文件夹、Lib文件、dll拷到其他平台上都可以使用的。所以讲一下在VC6.0中安装就行。
1.把GDAL文件夹拷贝到C:\Documents and Settings\Administrator目录下面(也可以选择其他路径)把C:\windows\system32目录下面的xcopy.exe复制到.\Microsoft Visual Studio\VC98\Bin目录下在VC目录下面搜索出MSPDB60.DLL文件,也复制到\VC98\Bin目录下。
GDAL使用抽象数据模型(abstract data model)来解析它所支持的数据格式,抽象数据模型包括数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo Transform),大地控制点(GCPColor Table),子数据集域(Subdatasets Domain),图像结构域(Image_Structure Domain),XML域(XML:Domains)。
{
doubleOriginX=adfGeoTransform[0];//左上角X
doubleOriginY=adfGeoTransform[3];//左上角Y
doubleH_Pixel=adfGeoTransform[1];//东西方向一个像素对应距离
doubleV_Pixel=adfGeoTransform[5];//南北方向一个像素对应距离
1)OGR体系结构
OGR包括如下几部分:
Geometry:类Geometry (包括OGRGeometry等类)封装了OpenGIS的矢量数据模型,并提供了一些几何操作,WKB(Well Knows Binary)和WKT(Well Known Text)格式之间的相互转换,以及空间参考系统(投影)。

python安装gdal的两种方法

python安装gdal的两种方法

python安装gdal的两种⽅法1.不⽤⼿动下载⽂件,直接执⾏以下命令即可conda install gdal2.⾸先,下载gdal的whl⽂件,官⽹下载⽐较慢,GDAL-2.2.4-cp27-cp27m-win_amd64.whl提取码: egj6有百度云可以下载,然后放⼊本机⽬录。

这⾥⽬录有两种,⼀是放⼊anaconda安装⽬录的Scripts⽬录,我的是D:\anaconda\Scripts⽬录;⼆是放⼊Anaconda环境的Scripts⽬录,我的是D:\anaconda\envs\uav\Scripts(uav是我⾃⼰的环境,可通过命令conda create -n name python=3.6创建环境)。

最后,在D:\Anaconda3\Scripts⽬录下在空⽩处按住shift加右键打开cmd,输⼊以下命令即可。

pip install GDAL‑3.0.1‑cp38‑cp38‑win_amd64.whl注:若⽤pip安装gdal会报错:报错信息如下:Looking in indexes: https:///simpleCollecting gdalDownloading https:///packages/26/c6/f8846ba726b37f9a1099acb5bff43c309fb913577674c1ba491f6fc60598/GDAL-3.0.1.tar.gz (576kB)|████████████████████████████████| 583kB 810kB/sBuilding wheels for collected packages: gdalBuilding wheel for gdal (setup.py) ... errorERROR: Complete output from command /home/dennis/miniconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-i321u6em/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.clos ERROR: running bdist_wheelrunning buildrunning build_pycreating buildcreating build/lib.linux-x86_64-3.7copying gdal.py -> build/lib.linux-x86_64-3.7copying ogr.py -> build/lib.linux-x86_64-3.7copying osr.py -> build/lib.linux-x86_64-3.7copying gdalconst.py -> build/lib.linux-x86_64-3.7copying gdalnumeric.py -> build/lib.linux-x86_64-3.7creating build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdalconst.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/osr.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gnm.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/__init__.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/ogr.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdal.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdal_array.py -> build/lib.linux-x86_64-3.7/osgeoFixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osg Skipping optional fixer: ws_commaFixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osg Skipping optional fixer: ws_commarunning build_extgcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/minicond gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/minicond building 'osgeo._gdal' extensioncreating build/temp.linux-x86_64-3.7creating build/temp.linux-x86_64-3.7/extensionsgcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/minicond cc1plus: warning: command line option ‘-Wstrict-prototypes' is valid for C/ObjC but not for C++extensions/gdal_wrap.cpp:4075:1: error: ‘VSIDIR' does not name a typeVSIDIR* wrapper_VSIOpenDir( const char * utf8_path,^extensions/gdal_wrap.cpp:4123:38: error: ‘VSIDIR' was not declared in this scopeDirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)^extensions/gdal_wrap.cpp:4123:46: error: ‘dir' was not declared in this scopeDirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)^extensions/gdal_wrap.cpp:4124:1: error: expected ‘,' or ‘;' before ‘{' token{^extensions/gdal_wrap.cpp:3225:7: warning: ‘char* get_aligned_buffer(char*, GDALDataType)' defined but not used [-Wunused-function]char* get_aligned_buffer(char* data, GDALDataType ntype)^extensions/gdal_wrap.cpp:3244:13: warning: ‘void update_buffer_size(void*, char*, char*, size_t)' defined but not used [-Wunused-function]static void update_buffer_size(void* obj, char* data, char* data_aligned, size_t buf_size)^extensions/gdal_wrap.cpp:3299:5: warning: ‘int GetUseExceptions()' defined but not used [-Wunused-function]int GetUseExceptions() {^extensions/gdal_wrap.cpp:3305:6: warning: ‘void UseExceptions()' defined but not used [-Wunused-function]void UseExceptions() {^extensions/gdal_wrap.cpp:3322:6: warning: ‘void DontUseExceptions()' defined but not used [-Wunused-function]void DontUseExceptions() {^extensions/gdal_wrap.cpp:3370:13: warning: ‘void ClearErrorState()' defined but not used [-Wunused-function]static void ClearErrorState()^error: command 'gcc' failed with exit status 1----------------------------------------ERROR: Failed building wheel for gdalRunning setup.py clean for gdalFailed to build gdalInstalling collected packages: gdalRunning setup.py install for gdal ... errorERROR: Complete output from command /home/dennis/miniconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-i321u6em/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.clos ERROR: running installrunning buildrunning build_pycreating buildcreating build/lib.linux-x86_64-3.7copying gdal.py -> build/lib.linux-x86_64-3.7copying ogr.py -> build/lib.linux-x86_64-3.7copying osr.py -> build/lib.linux-x86_64-3.7copying gdalconst.py -> build/lib.linux-x86_64-3.7copying gdalnumeric.py -> build/lib.linux-x86_64-3.7creating build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdalconst.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/osr.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gnm.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/__init__.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/ogr.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdal.py -> build/lib.linux-x86_64-3.7/osgeocopying osgeo/gdal_array.py -> build/lib.linux-x86_64-3.7/osgeoFixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osgSkipping optional fixer: ws_commaFixing build/lib.linux-x86_64-3.7/gdal.py build/lib.linux-x86_64-3.7/ogr.py build/lib.linux-x86_64-3.7/osr.py build/lib.linux-x86_64-3.7/gdalconst.py build/lib.linux-x86_64-3.7/gdalnumeric.py build/lib.linux-x86_64-3.7/osgeo/gdalconst.py build/lib.linux-x86_64-3.7/osg Skipping optional fixer: ws_commarunning build_extgcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/minicond gcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/minicond building 'osgeo._gdal' extensioncreating build/temp.linux-x86_64-3.7creating build/temp.linux-x86_64-3.7/extensionsgcc -pthread -B /home/dennis/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/home/dennis/minicond cc1plus: warning: command line option ‘-Wstrict-prototypes' is valid for C/ObjC but not for C++extensions/gdal_wrap.cpp:4075:1: error: ‘VSIDIR' does not name a typeVSIDIR* wrapper_VSIOpenDir( const char * utf8_path,^extensions/gdal_wrap.cpp:4123:38: error: ‘VSIDIR' was not declared in this scopeDirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)^extensions/gdal_wrap.cpp:4123:46: error: ‘dir' was not declared in this scopeDirEntry* wrapper_VSIGetNextDirEntry(VSIDIR* dir)^extensions/gdal_wrap.cpp:4124:1: error: expected ‘,' or ‘;' before ‘{' token{^extensions/gdal_wrap.cpp:3225:7: warning: ‘char* get_aligned_buffer(char*, GDALDataType)' defined but not used [-Wunused-function]char* get_aligned_buffer(char* data, GDALDataType ntype)^extensions/gdal_wrap.cpp:3244:13: warning: ‘void update_buffer_size(void*, char*, char*, size_t)' defined but not used [-Wunused-function]static void update_buffer_size(void* obj, char* data, char* data_aligned, size_t buf_size)^extensions/gdal_wrap.cpp:3299:5: warning: ‘int GetUseExceptions()' defined but not used [-Wunused-function]int GetUseExceptions() {^extensions/gdal_wrap.cpp:3305:6: warning: ‘void UseExceptions()' defined but not used [-Wunused-function]void UseExceptions() {^extensions/gdal_wrap.cpp:3322:6: warning: ‘void DontUseExceptions()' defined but not used [-Wunused-function]void DontUseExceptions() {^extensions/gdal_wrap.cpp:3370:13: warning: ‘void ClearErrorState()' defined but not used [-Wunused-function]static void ClearErrorState()^error: command 'gcc' failed with exit status 1----------------------------------------ERROR: Command "/home/dennis/miniconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-i321总结以上所述是⼩编给⼤家介绍的python安装gdal的两种⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

python调用gdaladdo方法

python调用gdaladdo方法

python调用gdaladdo方法在Python中,使用GDAL库的`gdaladdo`方法可以对栅格数据进行重采样和放大。

这个方法通常用于提高图像的清晰度或进行图像的上采样。

以下是如何在Python中调用`gdaladdo`方法的一个基本示例:```pythonfrom osgeo import gdal# 打开源栅格数据ds_src = gdal.Open('source_raster.tif')# 获取栅格数据的第一个波段band_src = ds_src.GetRasterBand(1)# 设置`gdaladdo`的参数# 参数说明:# `band`: 需要处理的波段,从1开始计数# `levels`: 放大级别,可以是一个整数或一个包含多个整数的列表# `method`: 重采样方法,如'nearestneighbor', ' Bilinear', 'Cubic', 'CubicSpline', 'Lanczos', 'Average', 'Mode'等# `options`: 其他选项,如放大后的输出像素大小# 调用gdaladdo,这里假设我们使用'nearestneighbor'方法放大2倍gdaladdo(ds_src, band_src, 2, 'nearestneighbor')# 关闭数据集band_src = Noneds_src = None```请注意,`gdaladdo`函数的调用可能需要根据您的具体需求调整参数。

另外,由于使用`gdaladdo`会修改源数据,建议在对原始数据进行操作前进行备份。

在运行上述代码之前,请确保您的环境中已经安装了GDAL库,且您的Python环境有权限访问GDAL库的命令行工具。

GDALpython教程(1)——用OGR读写矢量数据

GDALpython教程(1)——用OGR读写矢量数据

GDALpython教程(1)——⽤OGR读写⽮量数据本教程的讲义和源码都是取⾃Utah State University的openGIS课程相关资料,包括讲义、源码、数据样例,请从此处下载本⼈只是做点翻译,写写学习体会⽽已,版权属于原作者。

欢迎转载,不过别忘了上⾯这段话。

==================================================为什么⽤open source?优点1. 免费,适合个⼈和⼩公司2. 强⼤的开发⼯具,找bug更容易3. 跨平台,windows和linux都能⽤4. 拉风!缺点1. 没有内嵌地理处理器2. ⽤的⼈少Open source RS/GIS模块1. OGR⽮量库:简单的⽮量数据读写,是GDAL的⼀部分2. GDAL地理空间数据抽象库:a) 读写栅格数据b) ArcGIS也是基于GDAL开发的c) C++库,但是可以⽤python调⽤相关模块1. Numeric:⾼速的数组处理,对栅格数据尤其重要2. NumPy:下⼀代的Numeric3. 更强⼤的gis库导⼊库:import ogr或者:from osgeo import ogr万能的⽅法是:try:from osgeo import ogrexcept:import ogr要读取某种类型的数据,必须要先载⼊数据驱动,也就是初始化⼀个对象,让它“知道”某种数据结构。

import ogrdriver = ogr.GetDriverByName(‘ESRI Shapefile’)数据驱动driver的open()⽅法返回⼀个数据源对象open(<filename>, <update>)其中update为0是只读,为1是可写例如:from osgeo import ogrdriver = ogr.GetDriverByName('ESRI Shapefile')filename = 'C:/Users/gongwei/Documents/My eBooks/python_and_sage/GDAL python/test/ospy_data1/sites.shp' dataSource = driver.Open(filename,0)if dataSource is None:print 'could not open'sys.exit(1)print 'done!'注意filename⼀定要写绝对路径!因为⼀定要⽤绝对路径,为了简化代码,经常会使⽤到os.chdir()读取数据层layer = dataSource.GetLayer(0)⼀般ESRI的shapefile都是填0的,如果不填的话默认也是0.再看看这个数据层⾥⾯有⼏个点呢?n = layer.GetFeatureCount()print 'feature count:', n读出上下左右边界extent = layer.GetExtent()print 'extent:', extentprint 'ul:', extent[0], extent[3]print 'lr:', extent[1], extent[2]读取某⼀要素feature(总算切⼊正题了),这⾥读取的是⼀个点feat = layer.GetFeature(41)fid = feat.GetField('id')print fidfeat = layer.GetFeature(0)fid = feat.GetField('id') #should be a different idprint fid另外还有按顺序读取feature,循环遍历所有的featurefeat = layer.GetNextFeature() #读取下⼀个while feat:feat = layer.GetNextFeature()later.ResetReading() #复位提取feature的⼏何形状geom = feat.GetGeometryRef()geom.GetX()geom.GetY()print geom.释放内存feature.Destroy()关闭数据源,相当于⽂件系统操作中的关闭⽂件dataSource.Destroy()读完了再说怎么写创建新⽂件driver.CreateDataSource(<filename>)但是这个⽂件不能已经存在了,否则会出错创建新的layerdataSource.CreateLayer(<name>,CreateLayer(<name>, geom_type=<OGRwkbGeometryType>, [srs])举个例⼦:ds2 = driver.CreateDataSource('test.shp')layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)要删除⼀个shp⽂件driver.DeleteDataSource('test.shp')要添加⼀个新字段,只能在layer⾥⾯加,⽽且还不能有数据添加的字段如果是字符串,还要设定宽度fieldDefn = ogr.FieldDefn('id', ogr.OFTString)fieldDefn.SetWidth(4)layer.CreateField(fieldDefn)添加⼀个新的feature,⾸先得完成上⼀步,把字段field都添加齐了然后从layer中读取相应的feature类型,并创建featurefeatureDefn = layer.GetLayerDefn()feature = ogr.Feature(featureDefn)设定⼏何形状feature.SetGeometry(point)设定某字段的数值feature.SetField('id', 23)将feature写⼊layer layer.CreateFeature(feature)。

gdal源码剖析与开发指南 源代码

gdal源码剖析与开发指南 源代码

GDAL源码剖析与开发指南一、概述1.1 GDAL概述GDAL(Geospatial Data Abstraction Library)是一个在地理信息系统(GIS)领域使用广泛的开源库,它提供了读取、写入各种栅格和矢量地理数据格式的功能。

GDAL库由C/C++编写,但也提供了多种语言的绑定,例如Python、Java等,使得开发者可以轻松地在不同评台上使用GDAL库进行地理数据处理和分析。

1.2 目的与意义本篇文章旨在对GDAL源码进行深入剖析,帮助读者了解GDAL库的设计理念、核心数据结构和关键算法,使读者能够更好地理解GDAL库的内部工作原理,并掌握如何使用GDAL库进行地理数据处理和开发。

二、GDAL源码结构2.1 GDAL主要模块GDAL源码主要分为以下几个模块:- 核心库(Core)- 栅格数据处理(Raster)- 矢量数据处理(Vector)- 投影转换(Projection)- 数据格式驱动(Driver)2.2 核心库核心库(Core)模块包含了GDAL库的基本数据结构和算法,如数据集(Dataset)、数据类型(DataType)、坐标系统(Coordinate System)等。

在这个模块中,我们将重点剖析GDAL的核心数据结构以及数据的读写流程,帮助读者了解GDAL库是如何管理和处理地理数据的。

2.3 栅格数据处理栅格数据处理(Raster)模块主要负责对栅格地理数据(如DEM、影像数据)进行读写和处理。

在这个模块中,我们将深入研究GDAL是如何支持栅格数据格式的读写和处理,并分析GDAL库对常用栅格数据格式(如GeoTIFF、NetCDF等)的支持原理。

2.4 矢量数据处理矢量数据处理(Vector)模块用于处理矢量地理数据(如矢量地图、矢量要素),提供了对矢量数据格式(如SHP、GeoJSON等)的读写和操作接口。

在这个模块中,我们将深入研究GDAL是如何支持矢量数据格式的读写和处理,并分析GDAL库在矢量数据处理方面的核心功能和算法。

gdal使用实例

gdal使用实例

gdal使用实例
以下是一个使用GDAL的实例,以读取和显示栅格图像为例:```python
import gdal
import matplotlib.pyplot as plt
# 打开栅格图像文件
dataset = gdal.Open("path/to/image.tif")
# 读取图像数据
band = dataset.GetRasterBand(1)
data = band.ReadAsArray()
# 获取图像的地理信息和投影信息
geotransform = dataset.GetGeoTransform()
projection = dataset.GetProjection()
# 获取图像的宽度和高度
width = dataset.RasterXSize
height = dataset.RasterYSize
# 关闭数据集
dataset = None
# 显示图像
plt.imshow(data, cmap='gray')
plt.show()
```
这个示例首先使用`gdal.Open`函数打开一个栅格图像文件。

然后,使用`GetRasterBand`函数获取图像的一个波段,并使用`ReadAsArray`函数读取波段数据。

接下来,使用
`GetGeoTransform`和`GetProjection`函数获取图像的地理信息和投影信息。

最后,使用matplotlib库的`imshow`函数显示图像。

gdal 矢量交合并 -回复

gdal 矢量交合并 -回复

gdal 矢量交合并-回复GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据处理库,它提供了许多用于矢量数据操作的功能。

矢量交合并是其中一个常用的功能,可以用来将两个或多个矢量数据集合并成一个。

在本文中,我们将逐步回答有关使用GDAL库执行矢量交合并的过程。

我们将介绍GDAL库及其基本概念,然后详细解释矢量交合并的步骤。

第一步:理解GDAL库GDAL是一个功能强大的地理空间数据处理库,它支持几乎所有常见的地理空间数据格式。

它提供了一系列的函数和工具,用于读取、写入、转换和分析地理空间数据。

GDAL库是用C++编写的,但也提供了多种语言的绑定,如Python、Java等,使其更易于使用。

第二步:安装GDAL库要使用GDAL库进行矢量交合并,首先需要在计算机上安装GDAL库及其相应的绑定。

GDAL库可以从其官方网站(第三步:加载矢量数据在进行矢量交合并之前,需要加载要处理的矢量数据。

GDAL库支持多种格式的矢量数据,如Shapefile、GeoJSON等。

可以使用GDAL的数据驱动程序来读取和写入这些数据。

有两种常用的方法可以加载矢量数据。

一种是通过使用GDAL库提供的数据驱动程序直接读取矢量数据文件,例如:pythonfrom osgeo import ogrdriver = ogr.GetDriverByName('ESRI Shapefile')dataSource = driver.Open('data.shp', 0)layer = dataSource.GetLayer()另一种方法是通过手动创建一个空的矢量数据集,然后逐个添加要素。

这种方法更加灵活,可以在不同的数据源之间进行转换和处理。

例如:pythonfrom osgeo import ogrdriver = ogr.GetDriverByName('ESRI Shapefile')dataSource = driver.CreateDataSource('output.shp')layer = dataSource.CreateLayer('output',geom_type=ogr.wkbPolygon)第四步:进行矢量交合并一旦加载了要处理的矢量数据,就可以开始进行矢量交合并操作。

GDAL编程手册

GDAL编程手册

第一部分:GDAL DEVELOPER GUIDE 翻译:柴树杉(*********************)原文:/gdal_tutorial.html1.GDAL API入门1.1.打开文件在打开GDAL所支持的光栅数据之前需要注册驱动。

这里的驱动是针对GDAL支持的所有数据格式。

通常可以通过调用 GDALAllRegister() 函数来注册所有已知的驱动,同时也包含那些用 GDALDriverManager::AutoLoadDrivers() 从.so 文件中自动装载驱动。

如果程序需要对某些驱动做限制,可以参考gdalallregister.cpp 代码。

当驱动被注册之后,我们就可以用 GDALOpen() 函数来打开一个数据集。

打开的方式可以是 GA_ReadOnly 或者 GA_Update。

In C++:#include "gdal_priv.h"int main(){GDALDataset *poDataset;GDALAllRegister();poDataset = (GDALDataset *) GDALOpen( pszFilename, GA_ReadOnly ); if( poDataset == NULL ){...;}In C:#include "gdal.h"int main(){GDALDatasetH hDataset;GDALAllRegister();hDataset = GDALOpen( pszFilename, GA_ReadOnly );if( hDataset == NULL ){...;}In Python:import gdalfrom gdalconst import *dataset = gdal.Open( filename, GA_ReadOnly )if dataset is None:...如果 GDALOpen() 函数返回NULL则表示打开失败,同时 CPLError() 函数产生相应的错误信息。

gdal读写图像分块处理(精华版)

gdal读写图像分块处理(精华版)

gdal读写图像分块处理(精华版)/* 版权所有者:赵文 */一.gdal进行数据操作在安装好gdal后,即可调用gdal库中的函数。

(需要包含的头文件:gdal_priv.h)1.打开数据集使用gdal库进行数据(影像)操作的第一步就是打开一个数据集。

对于“数据集”这个名词大家可能不会太习惯,但是对于一般的格式来说,一个“数据集”就是一个文件,比如一个TIFF文件就是一个以tiff为扩展名的文件。

但是对于众多RS 数据来说,一个数据集包含的绝对不仅仅是一个文件。

对于很多RS数据,他们把一张图像分成数个图像文件,然后放在一个文件夹中,用一些额外的文件来组织它们之间的关系,形成一个“数据集”(有点难以理解,暂且放过)。

下面我们由给定的文件路径文件名打开一个tiff(GeoTIFF)文件。

(任何支持的格式,打开方式都是这样)CString strFilePath;StrFilePath=’d:/rsdata/2005_234.tif’;GDALDataSet *poDataset; //GDAL数据集GDALAllRegister();poDataset = (GDALDataset *) GDALOpen(strFilePath, GA_ReadOnly );这样我们就打开了这个文件。

通过数据集poDataset即可调用各功能函数,如: GetRasterCount();//获取图像波段数;GetRasterXSize();//获取图像宽度GetRasterYSize();//获取图像高度GetRasterBand();//获取图像某一波段GetGeoTransform(double *p);//获取图像地理坐标信息长度为六的数组RasterIO();//对图像数据进行缩放读和写……(更具体的API列表可以看这里)。

2.获取图像信息、读取图像打开文件后,下面要做的就是获取文件的相关信息保存在相应变量中,将图像数据读入内存中,等待后续处理了。

GDAL使用方法VC+C#

GDAL使用方法VC+C#

GDAL栅格图像操作GDAL是一个操作各种栅格和矢量(由ogr这个库实现)地理数据格式的开源库。

包括读取、写入、转换、处理各种栅格和矢量数据格式(有些特定的格式对一些操作如写入等不支持)。

即使不是进行地理遥感方面的应用研究,GDAL也是一个非常有用的库,因为它可以支持大量我们常见的图像数据,比如jpg,gif之类的。

完整的格式清单可以到此链接查看/formats_list.html。

而且已经有包括GoogleEarth在内的很多软件都是在使用GDAL作为后台库。

本文就以VC为开发平台介绍GDAL对栅格数据的操作方法。

Include目录是开发中需要的头文件,lib中是所需要的lib文件,在VC8中应当将其存放目录添加到目录列表中,选择菜单的“工具-选项-项目和解决方案-VC++目录”,分别在“包含文件”和“库文件”中将此两个目录添加进去。

在项目的属性页中,选择“配置属性-链接器-输入”,在“附加依赖项”中添加gdal_i-vc8.lib和gdal_id-vc8.lib两个使用GDAL中需要的静态库文件,或者在程序中添加以下两行代码也可以。

#pragma comment(lib, "gdal_i-vc8.lib")#pragma comment(lib, "gdal_id-vc8.lib")Bin目录下的动态链接库文件应当放置于程序能够访问的位置,比如windows\system32中。

此外,在程序中需要引入的头文件是gdal_priv.h。

现在开始用C++来对图像文件进行操作。

在打开文件之前需要首先注册所需要的驱动程序,一般来说我们可以默认注册所有支持的格式驱动,所使用的函数是GDALAllRegister()。

然后就是打开文件操作。

这里要说一个数据集的概念,也就是所谓的Dataset。

在GDAL中可以说数据的核心就是Dataset,简单来说可以将Dataset就理解为图像文件,比如说一个jpeg格式的文件就是一个数据集,当然其他一些文件格式可能在一个数据集中包含多于一个文件,比如可能除了图像数据文件外还可能会有一些附加信息文件等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GDAL API TutorialBefore opening a GDAL supported raster datastore it is necessary to register drivers.在打开一个GDAL支持的栅格资料之前,必需要注册驱动。

There is a driver for each supported format.每个驱动对应各自支持的格式。

Normally this is accomplished with the GDALAllRegister() function which attempts to register all known drivers, including those auto-loaded from .so files usingGDALDriverManager::AutoLoadDrivers().通常这个会被GDALAllRegister()函数完成,试图去注册所有已知的驱动包括使用GDALDriverManager::AutoLoadDrivers()从.so文件来加载。

If for some applications it is necessary to limit the set of drivers it may be helpful to review the code from gdalallregister.cpp.如果一些程序有必要去限制驱动集合,检查gdalallregister.cpp的代码将会有所帮助,Python automatically calls GDALAllRegister() when the gdal module is imported.当gdal模块被导入时,Python会自动调用GDALAllRegister()。

Once the drivers are registered, the application should call the free standing GDALOpen() function to open a dataset, passing the name of the dataset and the access desired(GA_ReadOnly or GA_Update).一但驱动被注册,程序将会调用独立的GDALOpen()函数通过dataset的名称和需要的存取方式(GA_ReadOnly或GA_Update)来打开dataset.Note that if GDALOpen() returns NULL it means the open failed, and that an error messages will already have been emitted via CPLError().注意如果GDALOpen()返回NULL,意味着打开失败了,这个错误信息将会通过CPLError ()释放出。

If you want to control how errors are reported to the user review the CPLError() documentation.如果你想控制错误怎样被报告给用户,参考CPLError文档。

Generally speaking all of GDAL uses CPLError() for error reporting.一般而言,所有的GDAL都是用CPLError()来报告错误。

Also, note that pszFilename need not actually be the name of a physical file (though it usually is).同样,注意pszFilename 不需要确实是物理文件名称(尽管通常都是如此)。

It's interpretation is driver dependent, and it might be an URL, a filename with additional parameters added at the end controlling the open or almost anything.这个解释了驱动的依赖性,它可能是一个URL,带有加在最后的额外的参数的文件名,控制了打开或是其他行为。

Please try not to limit GDAL file selection dialogs to only selecting physical files.请不要去限制GDAL文件选择对话框去仅仅选择物理文件。

Getting Dataset InformationAs described in the GDAL Data Model, a GDALDataset contains a list of raster bands, all pertaining to the same area, and having the same resolution.作为在GDAL Data model的描述,一个GDALDataset包含了一个栅格波段列表,都属于相同区域,并且有相同分辨率。

It also has metadata, a coordinate system, a georeferencing transform, size of raster and various other information.也同样含有元数据,坐标系统,地理参考坐标系转换,栅格大小和多种多样的其他数据。

If we wanted to print some general information about the dataset we might do the following:如果我们想要输出一些关于dataset的主要信息,我们可以按以下所说的做:In C++:Fetching a Raster BandAt this time access to raster data via GDAL is done one band at a time.这时通过GDAL存取栅格数据,每次只完成一个波段。

Also, there is metadata, blocksizes, color tables, and various other information available on a band by band basis.同样以波段为基础的元数据,区块,颜色表和其他可见的信息The following codes fetches a GDALRasterBand object from the dataset (numbered 1 through GetRasterCount()) and displays a little information about it.下面的代码从dataset(通过GetRasterCount()被记为1)中获取GDALRasterBand对象,并显示一些有关的信息。

In C++:Reading Raster DataThere are a few ways to read raster data, but the most common is via the GDALRasterBand::RasterIO() method.有很多方法去读取栅格数据,但是最常见的是通过GDALRasterBand::RasterIO()方法。

This method will automatically take care of data type conversion, up/down sampling and windowing.这个方法将会自动的处理数据类型转换,向上/向下取样和构建窗口。

The following code will read the first scanline of data into a similarly sized buffer, converting it to floating point as part of the operation.以下代码将会读取第一行数据到相同大小的缓冲区中,作为操作的一部分将其转换为浮点型。

In C++:The RasterIO call takes the following arguments.RasterIO调用需要以下这些参数。

Note that the same RasterIO() call is used to read, or write based on the setting of eRWFlag (either GF_Read or GF_Write).注意同样RasterIO调用习惯用来读取,或在eRWFlag基础上写入(GF _Read 或GF_Write)。

The nXOff, nYOff, nXSize, nYSize argument describe the window of raster data on disk to read (or write).nXOff, nYOff, nXSize, nYSize参数描述了磁盘上被读取(或写入)的栅格数据的区域大小。

It doesn't have to fall on tile boundaries though access may be more efficient if it does.尽管存取可能会更有能力去做,但是没有必要去覆盖边界。

The pData is the memory buffer the data is read into, or written from.pData是存储缓冲器,数据被读入或从其中被写。

It's real type must be whatever is passed as eBufType, such as GDT_Float32, or GDT_Byte.The RasterIO() call will take care of converting between the buffer's data type and the data typeof the band.RasterIO()调用将会处理缓冲区数据类型和波段数据类型的转换。

Note that when converting floating point data to integer RasterIO() rounds down, and when converting source values outside the legal range of the output the nearest legal value is used.注意当把浮点格式转换到整型时RasterIO()会四舍五入,当转换超出合法的范围的源数据时,最接近的合法数据将会被使用。

相关文档
最新文档