恒歌科技
![6d95c574c4eee81fe73606baff916d8a.gif](https://i-blog.csdnimg.cn/blog_migrate/faeba025dbea2bc9bfb1c65265bce3a6.gif)
2019/12/31
GDAL(Geospatial Data Abstraction Library)是一个由C语言写成、操作栅格地理数据的库。GDAL是开源、跨平台的,目前支持C/C++、VB、Python、Java、C#/.NET、Ruby、Perl。并提供对多种栅格数据的支持,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。
GDAL使用抽象数据模型来解析它所支持的数据格式,抽象数据模型包括数据集、坐标系统、仿射地理坐标转换、大地控制点、元数据、栅格波段、颜色表、子数据集域、图像结构域、XML域等。
01
GADL和OGR常用类
GDALMajorObject:带有元数据的对象。
GDALDataset:通常是从一个栅格文件中提取出相关联的栅格波段集合和这些波段的元数据,同时也负责所有栅格波段的地理坐标转换和坐标系定义。
GDALDrive:文件格式驱动类,GDAL会为每一个所支持的文件格式创建一个该类的实体,来管理该文件格式。
GDALDriverManager:文件格式驱动管理类,用来管理GDALDriver类。
Geometry:Geometry (包括OGRGeometry等类)封装了OpenGIS的矢量数据模型,并提供了一些几何操作,WKB和WKT格式之间的相互转换,以及空间参考系统。
Spatial Reference:OGRSpatialReference封装了投影和基准面的定义。
Feature:OGRFeature封装了一个完整feature的定义,一个完整的feature包括一个geometry和geometry的一系列属性。
Feature Definition:OGRFeatureDefn里面封装了feature的属性,类型、名称及其默认的空间参考系统等。一个OGRFeatureDefn对象通常与一个层对应。
Layer:OGRLayer是一个抽象基类,表示数据源类OGRDataSource里面的一层要素。
Data Source:OGRDataSource是一个抽象基类,表示含有OGRLayer对象的一个文件或一个数据库。
Drivers:OGRSFDriver对应于每一个所支持的矢量文件格式,由类OGRSFDriverRegistrar来注册和管理。
02
GADL应用
01
GDAL读取数据tiff数据
在地理信息领域tiff格式的数据非常常见,如果需要对数据进行处理分析,那么读取数据是必不可少的环节。接下来将以一段简单的代码来介绍Gdal对tiff数据的读取。
下文函数中的第一个参数pFileName为需要读取的文件名,第二个参数nOffX和第三个参数nOffY为从图片的什么位置开始读,第四个参数nSizeX和第五个参数nSizeY为在原图中读取数据的大小,第六个参数和第七个参数为希望读取后保存的大小(如果不需要抽吸则四五参数和六七参数相等),第八个参数为读取后数据存放的位置。
详情如下:
![465d4520fdbd2ba0aa335a8913e87d0a.png](https://i-blog.csdnimg.cn/blog_migrate/35178bad4982678a14e903e102efbc71.png)
![d29991b21efb050e6117708ccf6d28c1.png](https://i-blog.csdnimg.cn/blog_migrate/915f27f1b2ac0918967e08327a08225f.png)
![45209c909180d6f7160ac69e8992501a.png](https://i-blog.csdnimg.cn/blog_migrate/855b17bd418fe9dcf17bd742e958c874.png)
![19d9a512f7f844e12539be01bca27abe.png](https://i-blog.csdnimg.cn/blog_migrate/4fbd90f187679b9d92e87753424baf95.png)
02
GDAL生成金字塔
地理信息数据一般都以比较大的tiff数据存储,加载和渲染的效率较低,生成金字塔缓存是一种有效解决大tiff数据加载缓慢和渲染浪费的问题。
接下来通过代码介绍如何利用GDAL生成金字塔缓存:
![dd07b3627d17fffac94a097522dbffc3.png](https://i-blog.csdnimg.cn/blog_migrate/7b3793c4a3cea63f94e9558b643cb575.png)
![9bf96a7e6c2d1c0359b6e291f81027a3.png](https://i-blog.csdnimg.cn/blog_migrate/93de3156f9d951a11ace3221f5ed319d.png)
![2ffb25c5fb4fda9e6f2ed1fc09a501cb.png](https://i-blog.csdnimg.cn/blog_migrate/745b3429d3c32dde8c21d9438e6f57cb.png)
03
GDAL利用OGR矢量读取
OGR是GDAL对矢量支持的一个分支,矢量在地理信息系统中也有大量的运用如:国界线、省界限、路网等方面的运用。
以下介绍OGR如何读取矢量数据:
![7547bedb450d770b2290bc1c29ff9bc3.png](https://i-blog.csdnimg.cn/blog_migrate/dfb8eea3d981ac99ba3b8d52a887e03e.png)
![c41e910f2f8f997281273457376ebbaa.png](https://i-blog.csdnimg.cn/blog_migrate/af5271ca93254037aed29856baaabdcd.png)
![be1f15d8cfdaacf7699f7f0091628372.png](https://i-blog.csdnimg.cn/blog_migrate/9924c99209384d7632b92eb365d76e0d.png)
![24542cb9de35e3ebeda885e02596d4f2.png](https://i-blog.csdnimg.cn/blog_migrate/9cd0cf649475bd09259d1ef522e5e7c1.png)
对于地理空间数据的处理来说GDAL是一个功能强大且方便易用的工具,掌握GDAL的用法可以大大的提高数据处理的效率。
![419ddbb5d5ae606fd8a544bba74dd222.png](https://i-blog.csdnimg.cn/blog_migrate/bfeaad1b4a92fdd5b70a23192b3aca48.png)
![419ddbb5d5ae606fd8a544bba74dd222.png](https://i-blog.csdnimg.cn/blog_migrate/bfeaad1b4a92fdd5b70a23192b3aca48.png)
精彩合辑
2019
Qt绘图之图形视图框架
如何在Cesium中计算动目标姿态?
在Linux下编译osg与osgEarth
数据可视化之风场分布图
OSG基础之内存管理
细数OSG中的“神来之剪”
使用msys2构建OSG程序
osg相机(基础篇)
OGC标准介绍
![97526eb98177f08e44047991737912da.png](https://i-blog.csdnimg.cn/blog_migrate/51a12d2cfe5fbdead4dcbdb2c823ff38.jpeg)
![abddc14cb95e917c0dcc8ab565124518.gif](https://i-blog.csdnimg.cn/blog_migrate/891c6882d8e0f071b7ddd091fecfddf9.gif)