GDAL开发文档

合集下载

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初学者资料

很好的GDAL初学者资料1、编译加使用:/gisblog/archive/2008/10/06/3021933.aspx如何在CSharp中使用GDAL?收藏GDAL库的简洁、高效深受开发人员的喜爱,很多开源的GIS软件甚至是商业GIS软件都使用了这个库。

GDAL使用C++,在Visual studio环境下开发,对C,C++的支持当然不会有什么问题。

但对于C#、Python、Java来说,过程就相对繁琐一些,对初学者造成了不少的麻烦。

本文以GDAL1.50为例,详细说明在CSharpe语言中使用GDAL的环境配置问题,至于Python的环境配置问题,在另一篇文章“如何在CSharpe中使用GDAL”中另行讨论。

希望对初用GDAL的人员有所帮助。

GDAL从1.4.1开始添加了swig,以支持.NET环境下的C#语言。

在swig 文件夹中包含了C#源代码。

以下是主要的处理步骤:1、准备一个C++编译器。

建议使用Visual studio2005。

2、下载源代码。

地址:/gdal/gdal150.zip。

3、把gdal150.zip解压至“C:\gdal-1.5.0”,当然放在其它文件夹也可以。

4、修改源代码中的错误。

源文件“C:\gdal-1.5.0\frmts\leveller\levellerdataset.cpp”的第171行的内容如下:{ "?, kPI / 180.0, UNITLABEL_DEGREE },在?号后面加上双引呈",改成如下形式:{ "?", kPI / 180.0, UNITLABEL_DEGREE },你可以使用任何一种文本文件的编辑工具来进行修改。

笔者尝试过下载GDAL1.52的版本,存在同样的问题,真想不到GDAL库也会犯如此低级的错误。

5、创建安装的目标文件夹“C:\gdal-runtime”,稍后的编译配置中,我们将配置GDAL把编译后将会安装到这个文件夹内。

GDAL_API教程

GDAL_API教程

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 using GDALDriverManager::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 ()释放出。

GDAL、Prj.4和GEOS库的编译与引用

GDAL、Prj.4和GEOS库的编译与引用

GDAL的编译官方网站:/下载地址:/gdal/编译版本:GDAL1.8.0编译平台:Window XP(32位)+Visual Studio2008编译步骤:1、解压下载文件gdal180.zip到C:\gdal-1.8.0。

2、点击“开始—运行”,输入“cmd”,进入控制台界面。

3、编译C++版本gdal,依次输入以下命令:1)C:\Program Files\Microsoft Visual Studio9.0\VC\bin\vcvars32.bat2)cd C:\gdal-1.8.03)nmake/f makefile.vc4)nmake/f makefile.vc install5)nmake/f makefile.vc devinstall4、如需编译C#版本gdal,接着输入以下命令:1)cd C:\gdal-1.8.1\swig\csharp2)nmake/f makefile.vc工程引用:1、C++工程引用GDAL1)从C:\warmerda\bld\lib目录下复制gdal_i.lib文件,从C:\warmerda\bld\bin目录下复制gdal18.dll文件,以及复制C:\warmerda\bld\include整个文件夹到C++工程目录下。

2)以Visual C++6.0为例,点击“Project-Settings”菜单,在C/C++页面,在[Category]项选择[Preprocessor]选项,在[Additional include directories]项下添加“include”值,即将编译的gdal的头文件目录添加到工程中。

转到Link页面,在[Object/library modules]选项下添加“gdal_i.lib”3)在需要使用gdal的时候添加相应的头文件。

2、C#工程引用GDAL1)从C:\gdal-1.8.0\swig\csharp目录下复制gdal_csharp.dll、gdal_wrap.dll、gdalconst_csharp.dll、gdalconst_wrap.dll、ogr_csharp.dll、ogr_wrap.dll、osr_csharp.dll、osr_wrap.dll,以及从C:\warmerda\bld\bin目录下复制gdal18.dll共9个文件到C#工程中。

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源码剖析与开发指南 源代码

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库在矢量数据处理方面的核心功能和算法。

3.1.1 GDAL[共2页]

3.1.1  GDAL[共2页]

3.1 数据访问 65器一样种类繁多,当你在开源软件项目网站/进行相关搜索时,将会返回超过5000条记录。

地理空间分析行业是一个真正的全球社区,为其做出显著贡献的成员来自世界各地。

但是当了解了更多主流的重量级软件功能包之后,你会发现这些程序大都来自加拿大或者主要开发者是加拿大人。

作为现代GIS的发源地,地理空间分析是加拿大的国粹。

当然,加拿大政府和公私合营的地理信息联网(GeoConnections)计划已经在研究上投入了巨资,而且很多公司出于能源工业的经济原因,以及更好地管理大量自然资源、人口的需要。

在本章中,我们将要介绍的是软件包是对地理空间分析产业影响最大的,并且很可能你经常会用到它们。

但是我们鼓励你根据自己的研究和兴趣对信息进行筛选,下面的网址提供了本章中未介绍的软件的更多信息。

• 维基百科的GIS软件列表:https:///wiki/List_of_ geographic_information_systems_software。

• OSGeo的项目清单,以及孵化器项目:/。

• 软件数据库:/database/?cat=0&_ZopeId= 18853465A58XbR1fIKo。

3.1 数据访问如第2章所述,地理空间数据集通常都是大型、复杂和多样的。

在地理空间分析时对这些库高效读写数据的苛刻要求就是必不可少的了。

当然这些库都非常重要。

如果无法访问数据,地理空间分析将寸步难行。

另外,准确度和精度也是地理空间分析中非常重要的因素。

例如一个影像库抽样数据精度不高或者一个计算几何库对坐标系统中的数值的几位小数做了四舍五入操作,都有可能对分析的质量产生不利影响。

此外,这些库必须高效地管理内存。

一个复杂的地理空间分析过程也许会持续几个小时甚至数日。

如果数据访问库发生了一个内存错误,那么将会推迟整个项目的进度,更有甚者,还会对依赖这个分析结果的一批人的工作产生不利影响。

3.1.1 GDAL地理空间数据抽象库(The Geospatial Data Abstraction Library,GDAL)承担了地理空间分析领域最繁重的工作。

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格式的文件就是一个数据集,当然其他一些文件格式可能在一个数据集中包含多于一个文件,比如可能除了图像数据文件外还可能会有一些附加信息文件等。

编译C#版GDAL-1.11.1(含GEOS,PROJ,HDF)霍少峰

编译C#版GDAL-1.11.1(含GEOS,PROJ,HDF)霍少峰

C#版GDAL-1.11.1编译(含GEOS,PROJ,HDF)——2014.11.25霍少峰这里选择的版本是:gdal-1.11.1.tar.gz、geos-3.4.2.tar.bz2、proj-4.8.0.tar.gz、swigwin-3.0.2、HDF4.2.6_win_x64.zip和HDF5-1.8.7_win_x64.zip。

本机为64位Win7操作系统。

首先在/gdal/wiki/DownloadSource下载/gdal/1.11.1/gdal-1.11.1.tar.gz - source as .tar.gz ( md5)然后解压,我将解压的文件放在了C盘,即C:\gdal-1.11.1。

这里我使用cmd命令行方法进行编译。

首先以管理员身份运行方式打开“Visual Studio x64兼容工具命令提示(2010)”命令,如下图:图1然后使用cd命令(没用过的请百度一下,挺有用的),切换到GDAL的源代码目录(C:\gdal-1.11.1),如下图:图2接着,依次输入下面的命令后回车,静候编译结束。

nmake –f makefile.vc(上面的意思是编译GDAL库)nmake –f makefile.vc install(上面的意思是编译GDAL库并安装,安装的意思是将生成的dll、exe等文件复制到C:\warmerda\bld目录)nmake –f makefile.vc devinstall(上面的意思是编译GDAL库并安装开发者模式,安装的意思同上,开发者模式意思是将开发用到的include文件夹中的头文件和lib文件一同复制到C:\warmerda\bld目录,此时会在C:\warmerda\bld目录中添加两个文件夹,分别是include和lib,分别存放GDAL的头文件和lib文件,用于调用GDAL库)通过以上的过程就完成了编译GDAL库。

而且会在C盘生成如下内容:图2.1下面集成GEOS和PROJ.4为了集成GEOS和PROJ.4,需要先在网上下载压缩包,然后解压,编译,编译好以后再修改gdal-1.11.1的nmake.opt文件重新编译一次gdal。

GDAL

GDAL

GDALtranslate
The gdal_translate utility can be used to convert raster data between different formats, potentially performing some operations like subsettings, resampling, and rescaling pixels in the process.
Supported Platforms
Available as binaries or source Linux Windows Mac
FWTools Open Source GIS Binary Kit for Windows and Linux
/
GDAL Geospatial Data Abstraction Library

Translator library for raster geospatial data formats OpenSource…X/MIT style license Recently supported by ER Mapper Commandline like old Arc/Info
Includes formats that have a YES under the credo
Used to build or rebuild overview images (pyramid files) for most supported file formats with one over several downsampling algorithms.
GDAL_contour
Build contour lines from a DEM Input raster can be any of the supported formats Vector output format can be any of the OGR supported formats

gdal编译C#开发版本

gdal编译C#开发版本

gdal编译C#开发版本gdal的编译⽐较⿇烦,情况有很多种,今天我编译的gdal遇到的问题就和以前的有点不⼀样,仅供参考借鉴。

1、下载gdal源码gdal源码下载地址:已经编译好的gdal版本下载地址:我下载的是最新的gdal211,不知道为什么,后⾯编译出来的是gdal201的版本。

2、开始编译C++的开发版本gdal在window编译提供的⽅法:为了编译64位的gdal,我修改了nmake.opt⽂件189⾏处的代码将#WIN64=YES改成了WIN64=YES然后使⽤cmd设置编译环境:call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64然后进⼊到gdal⽬录,依次执⾏如下命令:1、C:\GDAL> nmake /f makefile.vc2、C:\GDAL> nmake /f makefile.vc install3、C:\GDAL> nmake /f makefile.vc devinstall编译完后会在C盘下⾯⽣成warmerda⽂件夹,⾥⾯的⽂件是⽤来提供C++编译的,如下图:注意:如果编译环境设置错误,第⼀步编译完后会提⽰如下错误:3、编译C#使⽤的版本编译C#使⽤的版本需要借助swig⼯具,下载地址如下:下载完后解压,打开nmake.opt,将swig=swig.exe修改成SWIG =E:\swigwin-3.0.10\swig.exe然后接着上⾯三句编译命令之后,进⼊到swig\csharp⽬录下,执⾏如下命令:1、nmake /f makefile.vc2、nmake /f makefile.vc install注意:在1编译过程中会出现如下问题:借鉴博客:问题1、接⼝重定义osr\OsrPINVOKE.cs(192,10): error CS0111: 类型“OSGeo.OSR.OsrPINVOKE”已定义了⼀个名为“OsrPINVOKE”的具有相同参数类型的成员osr\OsrPINVOKE.cs(188,10): (与前⼀个错误相关的符号位置) NMAKE : fatal error U1077: “C:\Windows\\Framework\v4.0.30319\csc.EXE”: 返回代码“0x1”解决办法:进⼊到..\gdal-1.9.2\swig\csharp\gdal|ogr|osr三个⽂件夹下,找到GdalPINVOKE.cs、OgrPINVOKE.cs、OsrPINVOKE.cs,将提⽰中重复的参数类型删除掉即可,错误⽰例如下图:问题2:接⼝成员名称调⽤错误,错误提⽰:gdal\Band.cs(17,79): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“BandUpcast”的定义gdal\Dataset.cs(17,82): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“DatasetUpcast”的定义gdal\Driver.cs(17,81): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“DriverUpcast”的定义NMAKE : fatal error U1077: “C:\Windows\\Framework\v4.0.30319\csc.EXE”: 返回代码“0x1”GdalPINVOKE.cs定义接⼝如下:Band类(举⼀例)调⽤如下:将三个类中的接⼝修改⼀下即可:public Driver(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Driver_SWIGUpcast(cPtr), cMemoryOwn, parent) { swigCPtr = new HandleRef(this, cPtr); public Dataset(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Dataset_SWIGUpcast(cPtr), cMemoryOwn, parent) { swigCPtr = new HandleRef(this, cPtr); public Band(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Band_SWIGUpcast(cPtr), cMemoryOwn, parent) { swigCPtr = new HandleRef(this, cPtr);修改完后即可编译成功,编译成功之后C:\warmerda\bld⽂件夹下会⽣成scharp⽂件,供C#编程使⽤。

GDAL的资料【范本模板】

GDAL的资料【范本模板】

GDAL Data Model即描述一个GDAL data store能够包含的信息的类型。

Dataset一个dataset (即一个GDALDataset 对象)是一组相关的raster bands和一些属于它们的公共信息的集合。

尤其是dataset有一个适用于它所有bands的关于raster size的概念,它是用pixels 和lines来描述的。

这个dataset也负责它所有bands的地理参考的转换和坐标系统的定义.Dataset本身也可有相关的metadata,即以string形式的一张name/values pairs的列表.注意:GDAL dataset和raster band 的数据模型是基于the OpenGIS GridCoverages specification的。

Coordinate SystemDataset的坐标系统是按OpenGIS WKT(Well known Text)的方式来描述的。

它包括:* An overall coordinate system name .一个总的坐标系的名称。

*A geographic coordinate system name。

一个地理坐标系统的名称。

* A datum identifier。

大地参照系。

* An ellipsoid name,semi—major axis, and inverse flattening。

参考椭球体,椭球半长轴和。

椭球扁率的导数(即a/(a-b))*A prime meridian name and offset from Greenwich。

一个0度经线的名车以及它于本初子午线的偏离程度。

*A projection method type (ie。

Transverse Merctator)。

一个投影类型.* A list of projection parameters (ie. central_meridian )。

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编程
Intersects(anotherGeometry:Geometry)、Touches(anotherGeometry:Geometry) 等都是符合其标准的。
分享心得,相互交流,共同进步
Email:sishui198@
醉意人间
ESRI 的 ST_Geometry 数据存储模型 GDAL/OGR 是非常著名的开源 GIS 库,GDAL 是对栅格数据进行操作,而 OGR 是对 矢量数据进行操作,它们相当于一个通用数据访问库。甚至 ESRI 的产品中都用 了此库。 安装
分享心得,相互交流,共同进步
Email:sishui198@
>>>datasource = driver.Open(inputs,0) >>>if datasource is None:
print "could not open"
醉意人间
读取数据层 layer = datasource.GetLayer() 一般 ESRI 的 shapefile 都是填 0 的,如果不填的话默认也是 0. >>> # 读取数据 >>>layer = datasource.GetLayer() >>> n=layer.GetFeatureCount() >>>n 255 >>>feature=layer.GetNextFeature() >>> #注意里面没有 FeatureClass 这个说法 FID=feature.GetFID() >>> FID 0 读出上下左右边界 extent = layer.GetExtent() print 'extent:', extent print 'ul:', extent[0], extent[3]

GDAL源码剖析与开发指南

GDAL源码剖析与开发指南

目录 封面扉页前言第1章 GDAL简介1.1 什么是GDAL1.2 GDAL特点1.3 GDAL支持的数据格式1.4 GDAL源码下载1.5 GDAL源码目录1.5.1 文件夹说明1.5.2 文件说明1.6 GDAL编译1.6.1 常规编译1.6.2 自定义编译1.6.3 编译其他方面1.7 SWIG编译1.7.1 SWIG简介1.7.2 编译C#版本GDAL1.7.3 编译Python 版本GDAL1.7.4 编译Java 版本GDAL1.8 GDAL帮助文档生成1.8.1 Doxygen 简介1.8.2 生成GDAL 开发帮助文档1.9 简单的调用1.9.1 C ++使用GDAL1.9.2 C#使用GDAL1.9.3 Python 使用GDAL1.9.4 Java 使用GDAL1.9.5 调试GDAL 源代码第2章 OGR空间参考2.1 空间参考简介2.1.1 大地水准面2.1.2 地球椭球体2.1.3 基准面2.1.4 地图投影2.2 OGR空间参考2.2.1 OGR空间参考简介2.2.2 OGR空间参考说明2.3 OGR空间参考坐标转换2.4 OGR空间参考类说明2.4.1 OGRSpatialReference 类2.4.2 OGRCoordinateTransformation 类2.5.1 C++使用2.5.2 C#使用2.5.3 Python 使用2.5.4 Java 使用第3章 OGR库说明3.1 OGR体系结构3.1.1 Geometry(几何对象)3.1.2 Spatial Reference(空间参考)3.1.3 Feature / Feature Definition(要素/要素定义)3.1.4 Layer(图层)3.1.5 Data Source(数据源)3.1.6 Drivers(格式驱动)3.2 OGR常用类说明3.2.1 OGRSFDriver类说明3.2.2 OGRSFDriverRegistrar类说明3.2.3 OGRDataSource 类说明3.2.4 OGRLayer 类说明3.2.5 OGRGeometry相关类说明3.2.6 OGRFieldDefn 类说明3.2.7 OGRFeatureDefn 类说明3.2.8 OGRFeature 类说明3.2.9 其他说明3.3 SQL说明3.3.1 SELECT子句3.3.2 WHERE子句3.3.3 ORDER BY子句3.3.4 JOIN子句3.3.5 UNION ALL 子句3.3.6 特殊字段3.3.7 索引与表3.3.8 ExecuteSQL()3.3.9 Non-OGR SQL3.4 OGR使用示例3.4.1 C++使用3.4.2 C#使用3.4.3 Python 使用3.4.4 Java 使用第4章 GDAL库说明4.1 GDAL数据集总体概况4.1.2 坐标系统(Coordinate System)4.1.3 元数据(Metadata)4.1.4 子数据集域(Subdatasets Domain)4.1.5 图像结构域(Image_Structure Domain)4.1.6 RPC域(RPC Domain)4.1.7 XML 域(XML:Domains)4.1.8 栅格波段(Raster Band)4.1.9 颜色表(Color Table)4.1.10 快视图(Overviews)4.2 GDAL常用类说明4.2.1 GDALDriverManager 类说明4.2.2 GDALDriver 类说明4.2.3 GDALDataset 类说明4.2.4 GDALRasterBand 类说明4.3 GDAL元数据说明4.4 RasterIO使用说明4.5 图像金字塔4.6 颜色表说明4.7 图像统计信息说明4.7.1 直方图统计4.7.2 极值计算4.7.3 均值标准差计算4.8 GDAL库使用示例4.8.1 C++使用4.8.2 C#使用4.8.3 Python 使用4.8.4 Java 使用第5章 GDAL数据格式及配置项说明5.1 常用图像格式使用说明5.1.1 GeoTIFF格式5.1.2 Erdas Imagine 格式5.1.3 PCI 的PIX格式5.1.4 ENVI 的HDR格式5.1.5 JPEG,PNG图像使用说明5.1.6 MEM文件使用说明5.2 GDAL对于HDF、NetCDF数据集读取5.2.1 HDF格式使用说明5.2.2 NetCDF格式使用说明5.3 VRT文件格式说明5.3.2 VRTRasterBand5.3.3 VRT使用说明5.3.4 编程创建VRT文件5.4 网络WMS数据使用说明5.5 GDAL配置选项说明5.5.1 设置配置选项5.5.2 通用选项5.5.3 GDAL 库选项5.5.4 GeoTiff格式选项5.5.5 GDAL/OGR网络选项5.5.6 OGR库选项第6章 GDAL格式扩展说明6.1 栅格格式扩展6.1.1 从Dataset 继承6.1.2 从RasterBand 继承6.1.3 栅格驱动(Driver)6.1.4 添加驱动到GDAL 库6.1.5 添加地理参考信息6.1.6 金字塔(快视图)6.1.7 创建文件6.1.8 RawDataset 和RawRasterBand 类6.1.9 元数据和其他外部扩展6.2 矢量格式扩展6.2.1 实现OGRSFDriver类6.2.2 从数据源中读取数据6.2.3 读取图层6.3 裸数据格式扩展第7章 GDAL算法使用说明7.1 GDAL算法处理基础7.1.1 GDAL 大图像处理策略7.1.2 GDAL 中进度信息说明7.2 GDALWarp说明7.2.1 GDALWarpOptions7.2.2 GDALWarpOperation7.2.3 GDALWarpAPI 使用说明7.3 图像重采样7.3.1 使用RasterIO重采样7.3.2 使用GDALWarp 重采样7.4 图像裁切7.4.2 使用GDALWarp 裁切7.5 图像镶嵌7.6 GDALWarp坐标转换7.6.1 GDALWarp 坐标转换相关函数说明7.6.2 GDALWarp 坐标转换流程7.7 图像重投影7.8 图像校正7.8.1 几何多项式校正(1~3 次)7.8.2 TPS校正7.8.3 RPC校正7.8.4 GeoLoc 校正7.9 图像坐标转换通用接口7.10 3*3空间卷积运算7.11 DEM地形分析7.11.1 坡度坡向分析7.11.2 地形指数7.11.3 山体阴影7.11.4 彩色渲染7.11.5 立体彩色渲染7.12 格网插值7.12.1 计算数据指标7.12.2 离散点数据插值7.12.3 离散点数据插值示例7.13 小碎斑去除7.14 矢量栅格化7.15 栅格矢量化7.16 生成等高线第8章 CPL库介绍8.1 cpl_port.h8.1.1 数据类型定义8.1.2 常量和函数定义8.1.3 LSB和MSB相互转换8.2 cpl_error.h8.2.1 常用的错误代码8.2.2 错误处理函数8.3 cpl_conv.h8.3.1 GDAL 库配置项读写8.3.2 内存管理相关8.3.3 文本文件读取相关8.3.5 应用程序与动态库相关8.3.6 文件系统以及路径相关8.3.7 度、分、秒与十进制度转换8.3.8 ZIP压缩文件读写8.4 cpl_http.h8.5 cpl_minixml.h第9章 GDAL工具使用说明9.1 GDAL工具通用参数说明9.1.1 通用命令行选项9.1.2 创建文件通用选项9.2 Exe工具使用说明9.2.1 gdalinfo9.2.2 gdal_translate9.2.3 gdaladdo9.2.4 gdalwarp9.2.5 gdaltindex9.2.6 gdalbuildvrt9.2.7 gdal_contour9.2.8 gdaldem9.2.9 gdal_rasterize9.2.10 gdaltransform9.2.11 nearblack9.2.12 gdal_grid9.2.13 gdallocationinfo9.2.14 gdalsrsinfo9.2.15 gdal-config9.2.16 gdalmanage9.2.17 ogrinfo9.2.18 ogr2ogr9.2.19 ogrtindex9.3 Python脚本工具使用说明9.3.1 rgb2pct.py9.3.2 pct2rgb.py9.3.3 gdal_merge.py9.3.4 gdal2tiles.py9.3.5 gdal_retile.py9.3.6 gdal_proximity.py9.3.7 gdal_polygonize.py9.3.8 gdal_sieve.py9.3.10 gdalmove.py9.3.11 gdal_edit.py附录版权GDAL源码剖析与开发指南李民录 著人民邮电出版社北京GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库),是一个在X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库,它利用抽象数据模型来表达所支持的各种文件格式,还使用一系列命令行工具来进行数据转换和处理。

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() 函数产生相应的错误信息。

python gdal 方法 -回复

python gdal 方法 -回复

python gdal 方法-回复Python GDAL 方法是一组用于地理数据处理的强大工具。

GDAL (Geospatial Data Abstraction Library)是一个开放源代码的库,提供访问多种格式地理数据的功能。

Python GDAL 方法为开发者提供了一个简单而高效的方式来读取、写入和处理地理数据。

本文将一步一步回答关于Python GDAL 方法的问题。

1. 什么是Python GDAL 方法?Python GDAL 方法是一组用于地理数据处理的Python函数和类。

GDAL 库是一个强大的工具,用于读取、写入和处理多种格式的地理数据,如地理信息系统(GIS)数据、遥感图像数据等。

Python GDAL 方法提供了对这些功能的封装,使开发者能够通过Python轻松访问和操作地理数据。

2. 如何安装Python GDAL 方法?安装Python GDAL 方法比较简单,一般可以通过pip包管理器进行安装。

首先,确保你已经正确安装了Python环境。

然后,在终端或命令行中运行以下命令来安装Python GDAL 方法:pip install gdal安装完成后,你就可以在Python代码中使用GDAL库提供的函数和类了。

3. 如何读取地理数据文件?使用Python GDAL 方法读取地理数据文件非常简单。

首先,需要导入GDAL库:pythonfrom osgeo import gdal然后,使用`gdal`模块的`Open`函数打开地理数据文件:pythondataset = gdal.Open('path/to/your/file')其中,`path/to/your/file`是地理数据文件的路径。

返回的`dataset`对象代表了打开的地理数据文件。

4. 如何获取地理数据文件的信息?一旦打开了地理数据文件,你可以使用`dataset`对象提供的方法获取文件的各种信息。

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

GDAL开发文档这里列出所有相关的页面:∙GDAL数据模型∙GDAL驱动实现向导∙GDAL API入门∙OGR API 使用向导翻译:柴树杉(chaishushan@)出处:opencv-extension-libraryGDAL数据模型翻译:柴树杉(chaishushan@)原文:/gdal_datamodel.html该文档简要描述了GDAL的数据模型,该模型可以容纳其他各种信息。

数据集(Dataset)一个dataset(对应GDALDataset类)是一个光栅数据以及和它有关系的信息的集合。

特别地dataset包含了光栅数据的大小(像素、线等)。

dataset同时也为对应的光栅数据指定了坐标系统。

dataset本身还可以包含元数据,它们以一种键/值对的方式来组织。

GDAL的数据集是基于OpenGIS Grid Coverages的格式定义的。

坐标系统Dataset的坐标系统由OpenGIS WKT字符串定义,它包含了:∙一个全局的坐标系名称。

∙一个地理坐标系名称。

∙一个基准标识符。

∙椭球体的名字。

长半轴(semi-major axis)和反扁率(inverse flattening)。

∙初子午线(prime meridian)名和其与格林威治子午线的偏移值。

∙投影方法类型(如横轴莫卡托)。

∙投影参数列表(如中央经线等)。

∙一个单位的名称和其到米和弧度单位的转换参数。

∙轴线的名称和顺序。

∙在预定义的权威坐标系中的编码(如EPSG)。

更多信息请参考OpenGIS WKT坐标系统定义,以及osr教程文档和OGRSpatialReference类的描述文档。

在GDAL中,返回坐标系统的函数是GDALDataset::GetProjectionRef()。

它返回的坐标系统描述了地理参考坐标,暗含着仿射地理参考转换,这地理参考转换是由GDALDataset::GetGeoTransform()来返回。

由GCPs地理参考坐标描述的坐标系统是由GDALDataset::GetGCPProjection()返回的。

注意,返回的坐标系统字符串“”表示未知的地理参考坐标系统。

仿射地理变换GDAL数据集有两种方式描述栅格位置(用点/线坐标系)以及地理参考坐标系之间的关系。

第一种也是比较常用的是使用仿射转换,另一种则是GCPs。

仿射变换由6个参数构成,它们由GDALDataset::GetGeoTransform()返回它们把点/线坐标,用下面的关系转将点/线影射到地理坐标:Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)假设影像上面为北方,GT2和GT4参数为0,而GT1是象元宽,GT5是象元高,(GT0,GT3)点位置是影像的左上角。

注意,上面所说的点/线坐标系是从左上角(0,0)点到右下角,也就是坐标轴从左到右增长,从上到下增长的坐标系(即影象的行列从左下角开始计算)。

点/线位置中心是(0.5,0.5)。

GCPs数据集可以由一系列控制点来定义空间参考坐标系。

所有的GCPs共用一个地理参考坐标系,由GDALDataset::GetGCPProjection()返回。

每个GCP(对应GDAL_GCP 类)包含下面内容:typedef struct{char *pszId;char *pszInfo;double dfGCPPixel;double dfGCPLine;double dfGCPX;double dfGCPY;double dfGCPZ;} GDAL_GCP;字符串pszid是本GCP在数据集中一系列GCP点中惟一的标示字符串(通常是数字)。

字符串pszInfo通常为空,但是也可以包含用户针对GCP定义的一些文本信息。

甚至还可能是GCP状态中包含机器可分析信息,虽然现在还支持。

坐标(dfGCPPixel,dfGCPLine)是栅格中的GCP位置。

坐标(dfGCPX,dfGCPY,dfGCPZ)是联合的地理参考位置(dfGCPZ通常是0)。

GDAL数据模型没有实现由GCPs产生坐标系的变化的机制,而是把具体的操作留给用户实现。

通常1到5阶多项式是常用的方法。

通常一个数据集会包含仿射地理变换,或GCPS中的一个,或者两个都没有。

两个都有很少见,而且无法用权威坐标系定义。

元数据(Metadata)GDAL元数据是一种辅助的数据格式,并且以键/值对序列的方式呈现。

一般键的名称有严格的定义(没有空白、或某些特殊字符等)。

键所对应的值可以是任意的长度,包含任意的内容(NULL字符除外)。

元数据处理系统一般不能处理很大的数据,例如一个大于100K的数据很可能导致处理的终止。

虽然某些键现在可能没有,但是以后也可能会被定义。

一些格式的数据可以支持一些基本的元数据(可以由用户自己定义),可以使用驱动程序访问这些键/值。

例如,如果数据含有date/time标志,TIFF格式的驱动程序可能只是简单地返回基本的信息:TIFFTAG_DATETIME=1999:05:11 11:29:56元数据的键/值对还可以被组织到某些域中,默认的域是没有名字的。

当然,为了保存某些特殊的信息可能需要定义特殊的域。

目前虽然不能列举出一个对象所需要的所有域,但是程序可以测试任何我们已经知道确切含义的域。

SUBDATASETS 域SUBDATASETS域保存了一个子datasets列表。

这个列表通常是对应一个复合影象中每个子影象的位置(像HDF或NITF)。

例如一个由4个影象组成的NITF可能含有类似下面的子datasets列表:SUBDATASET_1_NAME=NITF_IM:0:multi_1b.ntfSUBDATASET_1_DESC=Image 1 of multi_1b.ntfSUBDATASET_2_NAME=NITF_IM:1:multi_1b.ntfSUBDATASET_2_DESC=Image 2 of multi_1b.ntfSUBDATASET_3_NAME=NITF_IM:2:multi_1b.ntfSUBDATASET_3_DESC=Image 3 of multi_1b.ntfSUBDATASET_4_NAME=NITF_IM:3:multi_1b.ntfSUBDATASET_4_DESC=Image 4 of multi_1b.ntfSUBDATASET_5_NAME=NITF_IM:4:multi_1b.ntfSUBDATASET_5_DESC=Image 5 of multi_1b.ntf以_NAME为后缀的键所对应的值可以传递给GDALOpen()用于访问文件。

以_DESC为后缀的键所对应的值可以以一种友好的方式显示给用户。

IMAGE_STRUCTURE 域默认域中的元数据一般和影象有关,但是和影象的具体格式无关。

换言之,与影象格式无关的信息在复制dataset的时候一般也会被复制。

为了处理那些与影象格式相关的数据,一般将相关的键/值对放到IMAGE_STRUCTURE域中,并且在复制dataset 的时候可以不被复制。

IMAGE_STRUCTURE域中的一个项是数据的压缩方式,对应的键名为COMPRESSION,对应的值说明的压缩的方式。

xml: 域任何以"xml:"为前缀名的域都不是一个普通的键/值对方式的元数据。

它是一个单一的XML文档,以一个大的字符串方式保存Raster Band一个波段的光栅数据对应GDAL中的GDALRasterBand类。

它描述了单个波段的band/channel/layer。

它并不是一次描述整个影象。

例如,一个24bit的RGB影象在一个dataset中一般被描述为三个波段,分别对应red/green/blue三中颜色。

一个波段的光栅数据具有以下性质:∙行列数。

如果没有抽样的话,该值和dataset定义的相同。

∙数据类型(GDALDataType)。

可以是Byte、UInt16、Int16、UInt32、Int32、Float32、Float64,或者是复合类型CInt16、CInt32、CFloat32或CFloat64。

∙块的大小。

这是建议的缓冲块的大小。

对于块式存储的影象来说,可能是一个块的大小。

对于以扫描线方式的影象,可能是一个扫描线的大小。

∙元数据中的name/value列表,和dataset中相同,但是可能更侧重当前波段的特征。

∙可选择的参数(字符串)。

∙An optional list of category names (effectively class names in a thematic image).∙An optional minimum and maximum value.∙An optional offset and scale for transforming raster values into meaning full values (ie translate height to meters)∙可选的光栅名称。

这个特性可以用来指定一些比较重要的数据。

∙每个波段解释,具体为:o GCI_Undefined: 默认,未知信息。

o GCI_GrayIndex: 为一个独立的灰度影象。

o GCI_PaletteIndex: this raster acts as an index into a color tableo GCI_RedBand: RGB或RGBA影象的红色波段。

o GCI_GreenBand: RGB或RGBA影象的绿色波段。

o GCI_BlueBand: RGB或RGBA影象的蓝色波段。

o GCI_AlphaBand: RGBA影象的alpha通道。

o GCI_HueBand: HLS影象的色调。

o GCI_SaturationBand: HLS影象的饱和度。

o GCI_LightnessBand: HLS影象的光强。

o GCI_CyanBand: CMY或CMYK影象的cyan波段。

o GCI_MagentaBand: CMY或CMYK影象的magenta波段。

o GCI_YellowBand: CMY或CMYK影象的yellow波段。

o GCI_BlackBand: CMYK影象的black波段。

∙颜色表,描述光栅数据的更多的细节。

∙Knowledge of reduced resolution overviews (pyramids) if available.颜色表一个颜色表包含0个或多个颜色结构。

结构体定义如下:typedef struct{/- gray, red, cyan or hue -/short c1;/- green, magenta, or lightness -/short c2;/- blue, yellow, or saturation -/short c3;/- alpha or blackband -/short c4;} GDALColorEntry;颜色表同时还对应一个调色板(GDALPaletteInterp),GDALColorEntry中的c1/c2/c3/c4的值可以作为调色板索引得到真正的颜色值。

相关文档
最新文档