GDAL创建 收集一些options

文章介绍了在使用GDAL库创建TIFF文件时涉及的关键参数,包括COMPRESS(压缩类型)、TILED(瓦片存储)、BIGTIFF(大文件支持)、INTERLEAVE(波段交错)等,以及如何通过设置这些参数来控制文件的压缩、质量、布局和元数据复制等特性。
摘要由CSDN通过智能技术生成

在使用GDAL创建TIFF文件时,可以为选项参数papszOptions提供以下选项:

  1. COMPRESS=<compression_type>:设置压缩类型,可选值包括NONE(不压缩,默认值)、JPEGLZWPACKBITSDEFLATECCITTRLECCITTFAX3CCITTFAX4CCITTRLEWPACKBITSWDEFLATEWLZMAZSTD

  2. PHOTOMETRIC=<photometric>:设置像素格式,可选值包括MINISBLACK(默认值,灰度图像)、MINISWHITERGBPALETTE(调色板索引图像)。

  3. TILED=YES/NO:指定是否以瓦片方式存储数据,默认值为NO。

  4. BLOCKXSIZE=<pixels>:指定每个瓦片的宽度(像素数),仅当TILED=YES时有效。

  5. BLOCKYSIZE=<pixels>:指定每个瓦片的高度(像素数),仅当TILED=YES时有效。

  6. BIGTIFF=YES/NO:指定是否使用BigTIFF格式,默认值为NO。BigTIFF支持超过4GB的文件大小限制。

  7. INTERLEAVE=<interleave>:设置波段存储的交错方式,可选值包括BAND(波段交错,默认值)、PIXEL(像素交错)、LINE(行交错)。

  8. COPY_SRC_OVERVIEWS=YES/NO:指定是否复制源数据集的概览到新创建的数据集,默认为NO。

  9. COPY_SRC_DOMAINS=YES/NO:指定是否复制源数据集的元数据域到新创建的数据集,默认为YES。

  10. 其他格式特定选项:不同的GDAL驱动程序支持不同的选项,可以查阅驱动程序的文档以获取更多特定于格式的选项。

这些选项可以作为papszOptions参数的键值对传递给GDAL的Create()方法或CreateCopy()方法,用于设置创建TIFF文件时的相关参数。

是否压缩

“COMPRESS”,“JPEG”or“LZW”
ps:tdom可以使用JPEG、LZW压缩,dsm仅能使用LZW压缩

压缩质量

“QUALITY”, “75”

是否是大tiff

“BIGTIFF”, “IF_NEEDED”

是否写出tfw

“TFW”, “YES”


	char** pszOptions = NULL;
	pszOptions = CSLSetNameValue(pszOptions, "BIGTIFF", "IF_NEEDED");
	if (m_SetDsm.bTfw)
		pszOptions = CSLSetNameValue(pszOptions, "TFW", "YES");
	std::string sCompress = m_SetDsm.sCompress.toLocal8Bit().toStdString();
	if (sCompress == "JPEG")
	{
		pszOptions = CSLSetNameValue(pszOptions, "COMPRESS", sCompress.c_str());
		pszOptions = CSLSetNameValue(pszOptions, "QUALITY", std::to_string(75).c_str());
		pszOptions = CSLSetNameValue(pszOptions, "TILED", "YES");
	}
	else if (sCompress == "LZW")
	{
		pszOptions = CSLSetNameValue(pszOptions, "COMPRESS", sCompress.c_str());
		pszOptions = CSLSetNameValue(pszOptions, "TILED", "YES");
	}
	GLenum pixelFmt = GL_RGB;
	int nRasterCount = pixelFmt == GL_RGB ? 3 : 4;
	GDALDriverH hDriver = GDALGetDriverByName("GTiff");
	GDALDataset* pDstDataset = (GDALDataset*)GDALCreate(hDriver, sOutputFilePath.toLocal8Bit().toStdString().c_str()\
		, nImgWidth, nImgHeight, nRasterCount, GDT_Byte, pszOptions);

设置最大波段数

设置最大波段数

 const char* pszMaxBandCount = CPLGetConfigOption("GDAL_MAX_BAND_COUNT", "65536");

避免中文乱码

避免中文乱码

	CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); 
	CPLSetConfigOption("SHAPE_ENCODING", "");
	CPLSetConfigOption("FILEGDB_ENCODING", "CP936");

设置prj4库全路径

设置proj全路径

	std::string strPrjLibFullPath = (_T("C:\\projd.dll"));
	CPLSetConfigOption("PROJSO",strPrjLibFullPath.c_str());
首先,你需要安装GDAL库并在Python中导入它。然后,你可以使用以下代码创建一个圆形的Shapefile: ```python from osgeo import ogr def create_circle_shp(output_path, center_x, center_y, radius): # 创建Shapefile文件 driver = ogr.GetDriverByName('ESRI Shapefile') data_source = driver.CreateDataSource(output_path) layer = data_source.CreateLayer(output_path.split(".")[0], None, ogr.wkbPoint) # 添加字段 layer.CreateField(ogr.FieldDefn("id", ogr.OFTInteger)) layer.CreateField(ogr.FieldDefn("name", ogr.OFTString)) # 创建圆形 circle = ogr.Geometry(ogr.wkbLinearRing) for i in range(0, 361): angle_in_radians = i * (math.pi / 180.0) x = center_x + radius * math.cos(angle_in_radians) y = center_y + radius * math.sin(angle_in_radians) circle.AddPoint(x, y) circle.CloseRings() # 添加圆形到图层中 feature = ogr.Feature(layer.GetLayerDefn()) feature.SetField("id", 1) feature.SetField("name", "circle") point = ogr.Geometry(ogr.wkbPoint) point.AddPoint(center_x, center_y) feature.SetGeometry(point) feature.SetGeometry(circle) layer.CreateFeature(feature) feature = None # 清理并关闭数据源 data_source.SyncToDisk() data_source = None ``` 这个函数需要四个参数: - `output_path`:输出Shapefile文件的路径。 - `center_x`:圆心的X坐标。 - `center_y`:圆心的Y坐标。 - `radius`:圆的半径。 你可以根据需要更改字段名称和类型,以及更改图层类型(例如,使用`ogr.wkbPolygon`创建多边形)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值