GDAL的PDF接口的使用 VS2013

GDAL是遥感图像处理中比较常用的开源库。因项目要求,需要将多个图层的GTIFF文件叠加输出为PDF文件,且可以分层浏览展示。鉴于网上很少有关于GDAL PDF接口的使用说明,本人大致的将自己所做的说明记录一下。

1.    打开PDF接口。 打开GDAL目录, 修改frmts/makefile.vc文件的EXTRAFLAGS值.

在最后添加 –DFRMT_pdf

2.    打开VS2013工具。VS2013 x86 本机工具

跳转到GDAL目录下。输入 nmake /f makefile.vc MSVC_VER=1800 DEBUG=1 可生成x64 debugwin32 releasewin32 debug相应库

3.在代码文件头加入

#include "gdal.h"
#include "cpl_string.h"
#include "gdal_priv.h"
#include "ogr_spatialref.h"
#include "commonutils.h"
#include "gdal_utils_priv.h"
#pragma comment(lib,"gdal_i.lib")

这里我仿照GDAL自带的命令行工具 gdal_translate的源代码写了测试.其实就是命令行 "-of pdf 111.tiff test.pdf -co LAYER_NAME=111 -co EXTRA_RASTERS=222.tiff -co EXTRA_RASTERS_LAYER_NAME=222"   需要注意的是栅格图之间的叠加必须要有地理信息,否则无法叠加,支持多张图叠加,如 -co EXTRA_RASTERS=222.tiff,333.tiff  -co EXTRA_RASTERS_LAYER_NAME=222,333  。当然也可以以图片的形式叠加,则不需要地理坐标信息。命令为 -co EXTRA_IMAGES=TEST.PNG,0,0,1 后面3个数字为坐标以及图片放缩比例。

// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "gdal.h"
#include "cpl_string.h"
#include "gdal_priv.h"
#include "ogr_spatialref.h"
#include "commonutils.h"
#include "gdal_utils_priv.h"
#pragma comment(lib,"gdal_i.lib")

static void Usage(const char* pszErrorMsg = NULL, int bShort = TRUE) CPL_NO_RETURN;
static void Usage(const char* pszErrorMsg, int bShort)

{
	int iDr;

	printf("Usage: gdal_translate [--help-general] [--long-usage]\n"
		"       [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/\n"
		"             CInt16/CInt32/CFloat32/CFloat64}] [-strict]\n"
		"       [-of format] [-b band] [-mask band] [-expand {gray|rgb|rgba}]\n"
		"       [-outsize xsize[%%]|0 ysize[%%]|0] [-tr xres yres]\n"
		"       [-r {nearest,bilinear,cubic,cubicspline,lanczos,average,mode}]\n"
		"       [-unscale] [-scale[_bn] [src_min src_max [dst_min dst_max]]]* [-exponent[_bn] exp_val]*\n"
		"       [-srcwin xoff yoff xsize ysize] [-epo] [-eco]\n"
		"       [-projwin ulx uly lrx lry] [-projwin_srs srs_def]\n"
		"       [-a_srs srs_def] [-a_ullr ulx uly lrx lry] [-a_nodata value]\n"
		"       [-gcp pixel line easting northing [elevation]]*\n"
		"       [-mo \"META-TAG=VALUE\"]* [-q] [-sds]\n"
		"       [-co \"NAME=VALUE\"]* [-stats] [-norat]\n"
		"       [-oo NAME=VALUE]*\n"
		"       src_dataset dst_dataset\n");

	if (!bShort)
	{
		printf("\n%s\n\n", GDALVersionInfo("--version"));
		printf("The following format drivers are configured and support output:\n");
		for (iDr = 0; iDr < GDALGetDriverCount(); iDr++)
		{
			GDALDriverH hDriver = GDALGetDriver(iDr);

			if (GDALGetMetadataItem(hDriver, GDAL_DCAP_RASTER, NULL) != NULL &&
				(GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATE, NULL) != NULL
				|| GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATECOPY, NULL) != NULL))
			{
				printf("  %s: %s\n",
					GDALGetDriverShortName(hDriver),
					GDALGetDriverLongName(hDriver));
			}
		}
	}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GDAL是地理数据抽象库(Geospatial Data Abstraction Library)的简称,它是一个开源的地理信息系统(GIS)软件库。GDAL提供了用于处理和转换地理数据的函数和工具,包括读取、写入、转换、投影和处理各种格式的地理数据。 PDF是便携式文档格式(Portable Document Format)的缩写,它是一种独立于应用程序、操作系统和硬件平台的文件格式,最初由Adobe Systems开发并推广。PDF文件通常用于以可靠和可视化的方式传输和存储文档,包括文本、图形、图像和其他元素。 "李民录gdal pdf"的问题可能是在询问关于使用GDAL库处理PDF文件的方法和可能性。 首先,需要说明的是,GDAL主要用于处理地理数据,而PDF文件通常不包含地理数据。因此,GDAL本身并不直接支持读取和处理PDF文件。如果想要使用GDAL处理PDF文件,需要使用其他的库或工具来解析和提取PDF中的文本和图像数据,然后再使用GDAL来处理这些数据。 一个可能的方法是使用Python编程语言中的pdfminer库来解析PDF文件,并提取出其中的文本和图像数据。然后,可以使用GDAL提供的函数和工具来处理这些数据。例如,可以使用GDAL来处理提取出的图像数据,并将其转换为其他地理数据格式,如栅格数据(如GeoTIFF)或矢量数据(如Shapefile)。 总结来说,尽管GDAL库本身不直接支持对PDF文件的处理,但可以结合其他库和工具,如pdfminer来解析和提取PDF文件中的数据,并使用GDAL来处理和转换这些数据。这种组合使用的方式可以在一定程度上实现对PDF文件的操作和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值