当前位置:首页 > 代码相关 > 正文内容

GDAL使用(四)

admin3个月前 (02-12)代码相关138

接上面,可以使用exe工具实现同样的功能。

这个工具详情如下:

gdalwarp [--help-general] [--formats]
    [-s_srs srs_def] [-t_srs srs_def] [-ct string] [-to "NAME=VALUE"]* [-novshiftgrid]
    [-order n | -tps | -rpc | -geoloc] [-et err_threshold]
    [-refine_gcps tolerance [minimum_gcps]]
    [-te xmin ymin xmax ymax] [-te_srs srs_def]
    [-tr xres yres] [-tap] [-ts width height]
    [-ovr level|AUTO|AUTO-n|NONE] [-wo "NAME=VALUE"] [-ot Byte/Int16/...] [-wt Byte/Int16]
    [-srcnodata "value [value...]"] [-dstnodata "value [value...]"]
    [-srcalpha|-nosrcalpha] [-dstalpha]
    [-r resampling_method] [-wm memory_in_mb] [-multi] [-q]
    [-cutline datasource] [-cl layer] [-cwhere expression]
    [-csql statement] [-cblend dist_in_pixels] [-crop_to_cutline]
    [-if format]* [-of format] [-co "NAME=VALUE"]* [-overwrite]
    [-nomd] [-cvmd meta_conflict_value] [-setci] [-oo NAME=VALUE]*
    [-doo NAME=VALUE]*
    srcfile* dstfile

参数的具体说明见如下链接:

https://www.osgeo.cn/gdal/programs/gdalwarp.html#gdalwarp

数据情况和上篇一样。

这里直接上例子:

gdalwarp.exe -t_srs '+proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'E:\testdata\CZIOrigin.tiff O:\CZIProject.tif

空间参考采用的是proj.4的形式,当然也可以使用EPSG格式。

image.png

和这个exe工具对应的有代码中的调用,可以使用GDALWarp()函数,这个函数在gdal_utils.h头文件下。

代码:

#include <iostream>
#include <gdal_priv.h>
#include <gdal_utils.h>

int main()
{
	GDALAllRegister();

	GDALDatasetH srcDs = GDALOpen("E:\\testdata\\CZIOrigin.tiff", GA_ReadOnly);

	char** papszArgv = NULL;
	papszArgv = CSLAddString(papszArgv, "-s_srs");
	papszArgv = CSLAddString(papszArgv, "+proj=longlat +datum=WGS84 +no_defs");
	papszArgv = CSLAddString(papszArgv, "-t_srs");
	papszArgv = CSLAddString(papszArgv, "+proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs");

	GDALWarpAppOptions* warpAppOptions = GDALWarpAppOptionsNew(papszArgv, NULL);

	GDALDatasetH projectData = GDALWarp("O:\\CZIReprojext.tif", NULL, 1, &srcDs, warpAppOptions, NULL);

	GDALClose(srcDs);
    CSLDestroy(papszArgv);
	GDALWarpAppOptionsFree(warpAppOptions);
	GDALClose(projectData);

	system("pause");
	return 0;
}

这两个的效果和之前是一样的。

版权声明:本文由cyhu's essay发布,如需转载请注明出处。

本文链接:https://lovedm.club/?id=119

相关文章

GDAL使用(五)

GDAL使用(五)

在之前说的GDALWarp.exe程序的参数中有个校正选项,[-order n | -tps | -rpc | -geoloc],这里说一下geoloc校正。这里的内容还是参考李民录老师的书以及GDA...

C# 泛型委托

C# 泛型委托

虽然没有必要,但是还是先看看自定义的泛型委托:namespace _20200402 {     class Program &nbs...

C语言字符串换行连接

C语言字符串换行连接

有时候遇到一个字符串太长一行放下不好看的情况,可以使用换行连接:一是使用 \ 符号,如下所示:char* testString = "AAA\ BBB&quo...

C#事件_Sample_2

事件的拥有者与事件的响应者是分开的情况+=是事件订阅操作符,左边是事件,右边是事件处理器。using System; using System.Windows.Forms;...

C# 多线程(1)

一、首先看几个词的含义:进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程:线程(Thread)是操作系统能够进...

C# 与文件相关的几个类(2)

Directory类:静态类,主要处理文件目录。方法:CreateDirectory(String)在指定路径中创建所有目录和子目录,除非它们已经存在。返回值是一个DirectoryInfo对象Del...