博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
阅读量:2429 次
发布时间:2019-05-10

本文共 1563 字,大约阅读时间需要 5 分钟。

作者:朱金灿

来源:

      

            gdal库提供了一个矢量栅格化接口函数GDALRasterizeLayers。今天让我们学习一下这个接口函数的使用。该函数的原型如下:

CPLErr GDALRasterizeLayers 	( 	GDALDatasetH  	hDS,		int  	nBandCount,		int *  	panBandList,		int  	nLayerCount,		OGRLayerH *  	pahLayers,		GDALTransformerFunc  	pfnTransformer,		void *  	pTransformArg,		double *  	padfLayerBurnValues,		char **  	papszOptions,		GDALProgressFunc  	pfnProgress,		void *  	pProgressArg	 	)

下面解释下该接口的参数:

hDS  —— 输出的栅格数据,注意该数据必须以update模式打开

nBandCount —— 栅格数据要更新的波段数

panBandList  —— 要更新的波段列表

nLayerCount —— 矢量图层数,对应参数矢量图层数组pahLayers的元素个数

pahLayers  —— 矢量图层数组

pfnTransformer —— 将几何图形转换为栅格图像的像素/行列的转换器,如果该参数为空,则在内部创建一个。

pTransformArg ——将几何图形转换为栅格图像的像素/行列的转换器所用到的参数

padfLayerBurnValues—— 指定各个输出波段的输出像素值,因此一定是nBandCount个

papszOptions —— 控制栅格化的一系列选项值,是最复杂的一个参数,包括如下选项:

"ATTRIBUTE":

    指定属性字段中的字段值作为栅格值写入栅格文件中,该值将输出到所有输出波段中。假如该值指定了,padfLayerBurnValues参数的值将失效并且padfLayerBurnValues参数可以设置为NULL。

"CHUNKYSIZE":

指定该运行操作的块的高度。该值越大所需的计算时间越小。如果该值没有设置或者设置为0则由GDAL的缓存大小根据公式:缓存所占的字节数/扫描函数的字节数得到。所以该值不会超出缓存的大小。

"ALL_TOUCHED":

    设置为TRUE表示所有的像素接触到矢量中线或多边形(全部参与矢量化?),否则只是多边形中心或被brezenhams line algorithm算法(注:brezenhams line algorithm算法为一有名的矢量栅格化算法)选中的部分。默认值为FALSE。该选项暂时搞不明白,知道的同学请留言告诉我。

"BURN_VALUE_FROM":

    gdal的函数说明说该参数是用于设置几何图形的Z值,就是高程值。我搞不明白设置该值对栅格化有何影响。

"MERGE_ALG":

设置重写或增加新值到栅格数据中。选择REPLACE为 重写,选择ADD为添加一个新值到已存在的栅格数据中。默认值为REPLACE。

pfnProgress —— gdal的进度函数

pProgressArg —— 传递给进度函数的参数值

 

返回值:

CE_None 表示处理成功,CE_Failure表示有错误发生。

 

        值得注意的是,gdal的命令行程序gdal_rasterize也可以实现矢量栅格化,但该程序并不是直接调用GDALRasterizeLayers函数的,有兴趣的朋友可以看看gdal_rasterize的实现。计划以后提供一个GDALRasterizeLayers的使用例子程序。

 

参考文献:

 

1.

2. ,作者李民录。

 

 

转载地址:http://eanmb.baihongyu.com/

你可能感兴趣的文章
linux 通过crt直接上传和下载文件和文件
查看>>
javabase64编码原理和解码,加密案例
查看>>
Java 位运算(移位、位与、或、异或、非) 以及负数的二进制相互计算
查看>>
MyBatis 二级缓存机制
查看>>
第一章,安装Vmware和Ubuntu
查看>>
jquery freemarker模板设置变量每次循环加1
查看>>
VMware虚拟机启动后出现黑屏,不能显示界面,无论安装的是ubuntu还是centos
查看>>
osi七层模型,什么是tcp/ip协议,tcp与http,UDP的区别,tcp三次握手过程和特点
查看>>
第二章,ubuntu系统的查看防火墙,切换root用户,设置固定ip、系统时间等
查看>>
hash原理总结
查看>>
mongodb的优缺点
查看>>
如何在cmd下,查找指定一个TXT文件的内容,把这个文本里包含关键字的所有行复制到一个新的文本中
查看>>
线程池和队列学习,队列在线程池中的使用,什么是队列阻塞,什么是有界队列
查看>>
复制集让mongodb的secondary支持读操作,因为存在读写延迟所以是否需要读写分离
查看>>
svn小乌龟怎么断开链接,怎么查看电脑中的隐藏文件,svn复制包或修改包名应注意什么
查看>>
DDR内存基础知识
查看>>
uboot结构之BL0、BL1、BL2、BL3区别于关系
查看>>
Linux模块传参
查看>>
文件系统
查看>>
Linux驱动之总线
查看>>