GDAL入门教程

书籍

《GDAL源码剖析与开发指南.pdf》

链接:https://pan.baidu.com/s/1VBWgAhf8h_Gr2nx6BnB3gg
提取码:s6tv

学习目的

  • 初级:了解GDAL能做什么事情
  • 中级:能搭建GDAL C#、C++开发环境和最简单demo
  • 高级:了解GDAL常用功能,形成代码demo;

简介

GDAL

  • Geospatial Data Abstraction Library 地理空间数据抽象库 MIT协议
  • 读写空间数据(栅格、矢量)的开源库
  • 包含:
    • 利用抽象数据模型表达各种文件格式
    • 一系列命令行工具进行数据转换和处理
  • 很多著名GIS产品使用了GDAL/OGR库
  • 特点
    • GDAL提供多种栅格数据支持
    • OGR提供矢量数据的读写支持
    • GDAL库提供一系列算法:矢量栅格化、栅格矢量化、图像校正算法、DEM相关算法接口
    • 可以进行矢量图形之间的常用操作:求交、求并、缓冲区等(基于开源库GEOS:Geometry Engine,Open Source实现)
    • 可以进行投影和坐标转换(基于PROJ4库来实现)
    • 使用配置文件来对GDAL库支持的数据格式进行扩展

PROJ4

投影坐标转换库

GEOS

矢量图形算法库

OGR

GDAL项目的一个分支、功能和GDAL类似,提供对矢量数据的读写支持

OSGeo

  • OpenSourceGeospatialFoundation 开源空间信息基金会

  • OSGeo开源库

    • GDAL
    • PROJ4
    • GEOS
    • QGIS:跨平台
    • GRASS
    • OSSIM
    • OPenLayers:WebGIS客户端的JavaScript包
    • MapServer:实时地图发布系统

RasterIO

基于GDAL库二次封装,更符合Python风格,空间栅格数据处理的Python库

遥感概念

遥感

运用现代光学、电子学探测仪器,不与目标物体接触,远距离把目标物的电磁波特性记录下来,通过分析、解译揭示出目标物本身的特征、性质及其变化规律

一景数据

  • 卫星拍摄一次所拍摄到的画面
  • 资源三号一景:50公里*50公里
  • 高分一号一景:32.5公里*32.5公里
  • 高分二号一景:23.5公里*23.5公里

遥感影像数字图像处理

  • 图像恢复
  • 数据压缩
  • 影像增强
  • 信息提取

常见栅格数据格式

  • GeoTIFF:最常见,支持地理坐标系、投影坐标系、高程数据,广泛用于卫星遥感、地形分析和数字地图领域
  • GRID:Esri格网格式,常用于ArcGIS
  • JPEG2000格式:基于波let变换的图像压缩技术,可用于压缩撒喊个数据。支持多分辨率、多波段和空间元数据,广泛用于卫星遥感和数字地图领域

常见矢量数据格式

  • dwg:AutoCAD图形文件,转么用于存储矢量图形的标准文件格式
  • shp:ArcView GIS软件特有数据格式,存储地理信息空间和属性信息
  • gpx:gps设备记录下来的GPS点文件,xml格式;

SWIG

  • Simplified Wrapper and Interface Generator
  • 将c或c++编写的软件与其他各种高级语言进行嵌入联接

Doxygen

  • 生成C++注释文档的标准工具
  • 也支持:C、Object-C、C#、Java等

空间参考

概念

大地水准面

  • 静止海水面向大陆延伸所形成的不规则的封闭曲面
  • 重力等位面,即物体沿该面运动时,重力不做工
  • 是海拔高程系统的起算面
  • 大地水准面通过确定它与参考椭球面的间距来实现的
  • 地球质量并非均匀分布,重力的方向也会相应发生变化,所以大地水准面的形状是不规则的
  • 反应了地球内部物质结构、密度和分布等信息

地球椭球体

  • 为了测量成果的计算和制图需要,选用近似大地水准面的椭球体代替
  • 规则的曲面、测量和制图的基础,长半轴、短半轴、扁率表示
  • 由于是近似大地水准面,所以地球椭球体可以有多个

基准面

  • 特定区域内与地球表面极为吻合的椭球体
  • 通过基准面的原点对椭球体进行定位
  • 基准面的坐标系原点往往距地心有一定偏移

地图投影

  • 利用一定数学法则,把地球表面的任意点,转换到地图平面上的理论和方法
  • 地理坐标系GCS
    • 确定地图在地球位置的坐标,经纬度表示
    • GCS包括:基准面、角度测量单位、本初子午线
  • 投影坐标系
    • 投影坐标=地理坐标系(北京54、西安80、WGS84)+ 投影方法(高斯-吕迪格、Lambert投影、Mercator投影)+线性单位

GDAL算法

大图像处理策略

对大图像分块,每次只处理一块数据,直到处理完所有的块

图像重采样

目的是将图像放大或者缩小

图像裁切

矩形的规则裁切

使用AOI(Area of Interesting)的不规则裁切

图像镶嵌

将有重叠区域的多个图像根据其地理坐标拼接成一个图像的过程

图像重投影

将图像从一个投影通过坐标转换成另外一个投影

依赖PROJ4库

图像校正

将一组没有投影的数据校正到某种投影中去

本质上是建立一种从原始图像行列号到某种投影的数学关系

和图像重投影类似

DEM地形分析

坡度坡向分析

地形指数

地形耐用指数

地形位置指数

粗糙度

山体阴影

模拟太阳光照射地形所引起的明暗对比,然后对地形图进行渲染,使之看起来具有立体效果的一种方式,常用于地图的渲染

彩色渲染

  • 根据地面高度划分的高程层,逐层设置不同颜色
  • 蓝色表示海洋
  • 绿色表示平原
  • 黄色表示低山、丘陵
  • 棕、灰、紫、白,表示高山

立体彩色渲染

山体阴影+彩色渲染图组合=立体感的彩色地形图

格网插值

使用离散的数据点创建一个栅格图像的过程

小碎斑去除

将图像中的细小图斑移除,使用周围的像元值替代

矢量栅格化

栅格矢量化

生成等高线

通过DEM数据和制定的等高距生成等高线矢量文件

CPL库

  • Common Portability Library、 GDAL核心库

  • 封装大量通用函数:

    • 常用的数据结构(四叉树、哈希表、链表)

    • 文件读写(二进制、文本、csv、xml、zip)

    • 数据库操作

    • 网络数据读取

    • 多线程

    • 文件系统

GDAL工具

GDAL库提供一些很实用的命令行工具、脚本工具,可完成目前遥感图像处理中的大部分内容

Exe工具

gadlinfo

用于输出GDAL支持的栅格图像的相关信息:坐标系统、四至坐标、行列数、波段描述

gdal_translate

用于格式转换,同时还可以实现图像矩形裁切、重采样、数据类型转换等功能

gadladdo

为大多数支持的格式建立或者重建金字塔

gdalwrap

对图像进行重投影、校正、镶嵌等操作

gadltindex

生成栅格数据的矢量落图文件(根据四至范围生成矩形矢量)

gdalbuildvrt

生成vrt虚拟文件

gdal_contour

从DEM文件中提取等高线矢量文件

DEM:Digital Elevation Model 数字高程模型,地形表面形态的数字化表示

gdaldem

  • 用于对DEM数据进行处理

  • 包括生成

    • 山体阴影图
    • 坡度图
    • 坡向图
    • 彩色渲染图
    • 地表耐用指数图
    • 地形位置指数图
    • 粗糙度图

gdal_rasterize

将矢量文件转为栅格文件

gdaltransform

坐标转换

nearblack

近白色、近黑色、自定义颜色像元转换成白色或黑色

gdal_grid

将OGR支持的离散数据插值成一个规则的栅格数据

gdallocationinfo

查询图像制定位置的像元值

gdalsrsinfo

把指定的控件参考信息按照不同的格式进行显示

gdal-config

查看关于GDAL安装信息

gdalmanage

栅格数据管理:查看数据格式、删除数据、重命名、复制

ogrinfo

输出矢量数据信息

ogr2ogr

矢量信息格式转换、重投影等功能

ogrtindex

生成矢量数据落图矢量文件(四至范围生成矩形矢量框)

Python脚本工具

rgb2pct.py

24位RGB真彩图像转换为带有颜色表的单波段数据

pct2rgb.py

颜色表的单波段数据转24位RGB真彩图像

gdal_merge.py

图像镶嵌处理

gadl2tiles.py

切片并生成地图简单网页

gdal_retile.py

生成金字塔或者瓦片

gdal_polygonize.py

栅格矢量化

gdal_sieve.py

去除栅格图像小碎图斑

gdal_fillnodata.py

填充图像中像元像素值为NoData的像元

gadlmove.py

空间参考转换

gdal_edit.py

修改栅格图像信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值