gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
来源:互联网 发布:c语言判断数字大小 编辑:程序博客网 时间:2024/05/21 20:43
作者:朱金灿
来源:http://blog.csdn.net/clever101
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. gdal_alg.hFile Reference
2. GDAL源码剖析(四)之命令行程序说明二,作者李民录。
- gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
- GDAL矢量栅格化
- GDAL栅格矢量化
- GDAL栅格矢量化
- GDAL矢量转栅格
- Python中用GDAL实现矢量对栅格的切割
- GDAL 栅格数据转矢量数据
- R结合GDAL批量矢量裁剪栅格
- 矢量图形栅格化
- 使用矢量面裁剪栅格数据的对齐问题
- 栅格数据自动矢量化
- 栅格数据自动矢量化
- arcgis中ArcMAP下栅格图象矢量化的步骤
- ArcGIS教程:栅格河网矢量化的工作原理
- 使用GDAL进行栅格数据读取示例
- GDAL的PDF接口的使用 VS2013
- 矢量数据向栅格数据的转换
- ArcGIS教程:栅格河网矢量化
- [T9译言]--<敏捷转型>之Chapter 1了解敏捷
- 排序算法之插入排序
- C++: Accessing the virtual table directly(盗版)
- 什么是 ant----编译打包工具 ant
- Linux 静态库与共享库
- gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
- POJ 3468 A Simple Problem with Integers (线段树—成段覆盖)
- C++的I/O(vc版)(六)
- Myeclipse 导入 tomcat 源码
- oracle vpd 虚拟专用数据库
- Boost下载安装编译配置使用指南(含Windows、Linux以及ARM Linux)
- Linux2.6 内核进程调度分析
- windows下 直接点击startup.bat 启动tomcat服务
- CSS3之圆角border-radius