c#写图像tif gdal_浅谈GDAL

恒歌科技

6d95c574c4eee81fe73606baff916d8a.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 d29991b21efb050e6117708ccf6d28c1.png 45209c909180d6f7160ac69e8992501a.png 19d9a512f7f844e12539be01bca27abe.png

02

GDAL生成金字塔

地理信息数据一般都以比较大的tiff数据存储,加载和渲染的效率较低,生成金字塔缓存是一种有效解决大tiff数据加载缓慢和渲染浪费的问题。

接下来通过代码介绍如何利用GDAL生成金字塔缓存:

dd07b3627d17fffac94a097522dbffc3.png 9bf96a7e6c2d1c0359b6e291f81027a3.png 2ffb25c5fb4fda9e6f2ed1fc09a501cb.png

03

GDAL利用OGR矢量读取

OGR是GDAL对矢量支持的一个分支,矢量在地理信息系统中也有大量的运用如:国界线、省界限、路网等方面的运用。

以下介绍OGR如何读取矢量数据:

7547bedb450d770b2290bc1c29ff9bc3.png c41e910f2f8f997281273457376ebbaa.png be1f15d8cfdaacf7699f7f0091628372.png 24542cb9de35e3ebeda885e02596d4f2.png

对于地理空间数据的处理来说GDAL是一个功能强大且方便易用的工具,掌握GDAL的用法可以大大的提高数据处理的效率。

419ddbb5d5ae606fd8a544bba74dd222.png 419ddbb5d5ae606fd8a544bba74dd222.png

精彩合辑

2019

  • Qt绘图之图形视图框架

  • 如何在Cesium中计算动目标姿态?

  • 在Linux下编译osg与osgEarth

  • 数据可视化之风场分布图

  • OSG基础之内存管理

  • 细数OSG中的“神来之剪”

  • 使用msys2构建OSG程序

  • osg相机(基础篇)

  • OGC标准介绍

97526eb98177f08e44047991737912da.png abddc14cb95e917c0dcc8ab565124518.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值