GDAL2.X生成DXF文件源代码

 

#include<gdal_priv.h>
#include<iostream>
#include <ogr_spatialref.h>
#include "ogrsf_frmts.h"
int MakeDxfFile() {
	CPLSetConfigOption("GDAL_DATA", "D:\\make\\gdal_64bit\\data");

	const char* pszDriverName = "DXF";
	CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");


	RegisterOGRDXF();
	GDALAllRegister();
	//读取
	//GDALDataset* dataset = (GDALDataset*)GDALOpenEx(_vectorpath, GDAL_OF_READONLY, NULL, NULL, NULL);

	GDALDriver* poDriver;

	poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName);

	if (poDriver == NULL)
	{
		printf("%s driver not available.\n", pszDriverName);
		exit(1);
	}

	GDALDataset* poDS;

	// 模板文件名称,文件在GDAL中data下,拷贝到与cpp同目录下
	/*char** papszOptions = (char**)CPLCalloc(sizeof(char*), 3);
	papszOptions[0] = (char*)"HEADER=header.dxf";
	papszOptions[1] = (char*)"TRAILER=trailer.dxf";*/

	poDS = poDriver->Create((const char*)"out.dxf", 0, 0, 0, GDT_Unknown, NULL); //创建输出矢量文件
	//CPLFree(papszOptions);
	if (poDS == NULL)
	{
		printf("Creation of output file failed.\n");
		GDALClose((GDALDatasetH)poDS);
		exit(1);
	}

	OGRLayer* poLayer;

	poLayer = poDS->CreateLayer("hatch_out", NULL, wkbUnknown, NULL);
	if (poLayer == NULL)
	{
		printf("Layer creation failed.\n");
		exit(1);
	}

	OGRFeature* poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());

	// 生成一个正方形,放置在"Square"图层
	OGRLinearRing oSquare;
	oSquare.addPoint(0.0, 0.0);
	oSquare.addPoint(10.0, 0.0);
	oSquare.addPoint(10.0, 10.0);
	oSquare.addPoint(0.0, 10.0);
	oSquare.closeRings();
	poFeature->SetField("Layer", "Square");
	poFeature->SetGeometry(&oSquare);
	if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
	{
		printf("Failed to create feature in dxffile.\n");
		exit(1);
	}

	// 生成一个三角形,放置在"三角形"图层
	poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
	OGRLinearRing oTriangle;
	oTriangle.addPoint(20.0, 20.0);
	oTriangle.addPoint(30.0, 20.0);
	oTriangle.addPoint(30.0, 30.0);
	oTriangle.closeRings();
	poFeature->SetField("Layer", "Triangle");
	poFeature->SetGeometry(&oTriangle);
	if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
	{
		printf("Failed to create feature in dxffile.\n");
		exit(1);
	}

	// 生成一个菱形,放置在"Triangle"图层
	poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
	OGRLinearRing oRhombus;
	oRhombus.addPoint(40.0, 30.0);
	oRhombus.addPoint(50.0, 40.0);
	oRhombus.addPoint(40.0, 50.0);
	oRhombus.addPoint(30.0, 40.0);
	oRhombus.closeRings();
	poFeature->SetField("Layer", "Triangle");
	poFeature->SetGeometry(&oRhombus);
	if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
	{
		printf("Failed to create feature in dxffile.\n");
		exit(1);
	}

	// 生成一个多段线,不设置图层,将默认层
	poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
	OGRLinearRing oLinearRing;
	oLinearRing.addPoint(50.0, 50.0);
	oLinearRing.addPoint(60.0, 40.0);
	oLinearRing.addPoint(70.0, 50.0);
	oLinearRing.addPoint(80.0, 40.0);
	poFeature->SetGeometry(&oLinearRing);
	if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
	{
		printf("Failed to create feature in dxffile.\n");
		exit(1);
	}

	OGRFeature::DestroyFeature(poFeature);
	GDALClose((GDALDatasetH)poDS);
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: "cannot load library gdal19.dll"是指在加载gdal19.dll库时出现问题。gdal19.dll是一个与GIS(地理信息系统)相关的库文件。这个问题可能由以下几种原因引起: 1. 缺少gdal19.dll文件。如果该文件不存在于计算机系统中,无法加载该库文件。请确保gdal19.dll文件存在于正确的路径下。 2. gdal19.dll文件损坏。如果该文件损坏或损坏的部分无法被识别,加载过程会失败。可以尝试重新下载gdal19.dll文件,并确保文件完整无误。 3. 应用程序与gdal19.dll文件不兼容。某些应用程序需要特定版本的gdal19.dll文件才能正常运行。如果使用了不兼容的版本,则会出现加载错误。请查看软件的系统要求,并确保使用正确的gdal19.dll版本。 4. 环境变量设置错误。如果计算机系统的环境变量设置有问题,可能会导致无法加载库文件。请检查环境变量设置,并确保相关路径正确配置。 针对该问题,可以尝试以下解决方法: 1. 检查gdal19.dll文件。确保该文件存在于正确的位置,并且没有损坏。 2. 重新下载gdal19.dll文件。如果文件确实丢失或损坏,从可靠的源重新下载该文件。 3. 更新应用程序。确保应用程序与gdal19.dll文件兼容,并尝试升级或更新软件版本。 4. 检查环境变量设置。确保计算机的环境变量中包含正确的路径,以便正确加载gdal19.dll库文件。 总结起来,"cannot load library gdal19.dll"问题通常是由于文件缺失、文件损坏、版本不兼容或环境变量设置错误等原因引起的。根据具体情况,可以采取相应的解决方法来解决该问题。 ### 回答2: "cannot load library gdal19.dll"错误通常出现在使用GDAL库时,由于系统无法加载gdal19.dll库文件导致。以下是可能解决此问题的几种方法: 1. 确认文件路径:首先确保gdal19.dll库文件位于正确的文件路径中。您可以使用文件资源管理器搜索该文件,确保它存在于您正在使用的项目或应用程序的文件路径下。 2. 检查版本兼容性:确保使用的gdal19.dll库文件与您的操作系统和安装程序的版本兼容。不同版本的库文件可能与操作系统或应用程序不兼容,导致加载错误。 3. 更新GDAL文件:尝试更新您使用的GDAL文件。您可以从GDAL官方网站或其他可靠来源下载最新版本的GDAL库,并替换掉旧版本的gdal19.dll文件。 4. 确认环境变量:确保系统的环境变量中包含正确的GDAL文件路径。您可以在系统的环境变量设置中添加GDAL文件的正确路径,并重启您的应用程序以使更改生效。 5. 重新安装应用程序:如果上述方法都没有成功解决问题,您可以尝试重新安装使用GDAL库的应用程序。重新安装可能会修复任何缺失或损坏的文件,并解决库加载错误。 请注意,上述方法根据情况而异,可能需要您具体的操作系统和应用程序环境来进行调整。如果问题仍然存在,您可能需要进一步调查与GDAL文件的使用和加载相关的特定问题。 ### 回答3: "cannot load library gdal19.dll" 是一个常见的错误信息,通常出现在使用GDAL库时。这个错误表示系统无法加载gdal19.dll库文件。 这个错误可能有以下几个常见原因: 1. 文件缺失:gdal19.dll文件可能不存在于指定的路径中。解决方法是重新安装GDAL库,确保正确地安装了这个文件。 2. 文件路径问题:系统无法在环境变量中找到gdal19.dll的路径。可以通过检查环境变量设置,确保GDAL库的正确路径已添加到环境变量中。 3. 文件冲突:如果系统中存在多个gdal19.dll文件,可能导致冲突。解决方法是删除冲突文件,并确保只有一个正确版本的gdal19.dll存在。 4. 兼容性问题:某些程序可能不兼容特定版本的gdal19.dll文件。尝试更新GDAL库或与相关应用程序的开发者联系以解决兼容性问题。 为了解决这个问题,你可以尝试以下步骤: 1. 确保gdal19.dll文件存在,并位于正确的路径中。 2. 检查环境变量设置,确保已添加GDAL库的正确路径。 3. 如果存在多个gdal19.dll文件,删除冲突文件,只保留一个正确版本。 4. 尝试更新GDAL库或与相关程序的开发者联系以解决兼容性问题。 总之,解决"cannot load library gdal19.dll"错误通常需要检查文件的存在性和路径设置,并可能涉及更新库或解决兼容性问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值