Gdal中SHP转GeoJSON(C++实现)

这篇博客介绍了如何使用C++和GDAL库将SHP地理数据文件转换为GeoJSON格式。通过GDAL的 ogr2ogr 命令行工具和C++代码示例,展示了读取SHP文件并将其复制到GeoJSON文件的过程。操作简单,适用于需要在C++环境中处理地理数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gdal中读取SHP文件并转换GeoJSON文件(C++实现)

网上资料较少,C++相关实现代码更少,一边学习一边记录吧。

GDAL命令行工具实现

ogr2ogr -f GeoJSON output.json input.shp

注意:shp文件并不单独存在,需要将相关文件置于同一文件夹下。

(https://www.kaggle.com/learn-forum/122966)

C++实现

源码很简单,读取 shp 文件并复制到 json 文件即可。

#include <iostream>
#include "gdal.h"
#include "gdal_priv.h"
#include "ogrsf_frmts.h"

using namespace std;

// 将 shp 文件转化为 json 文件输出
void parseShpfile2GeojsonFile(char *inFileName, char *outFileName) {
	// 注册驱动
	GDALAllRegister();
	// 支持中文路径
	CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
 	// 属性表字段支持中文
 	CPLSetConfigOption("SHAPE_ENCODING", "");
	// 打开文件,读取数据
	GDALDataset *poSrcDS = (GDALDataset *)GDALOpenEx(inFileName, GDAL_OF_VECTOR, NULL, NULL, NULL);

	// 判断是否读取成功
	if (poSrcDS == NULL)
	{
		cout << "未能成功读取!" << endl;
		return;
	}
	
	// json 驱动
	GDALDriver* poDriver = GetGDALDriverManager()->GetDriverByName("GeoJSON");
	
	// 复制 shp 文件到指定输出的 json 文件 
    GDALDataset* poDstDS = poDriver->CreateCopy(outFileName, poSrcDS, FALSE, NULL, NULL, NULL);
    
	//释放内存
	if( poDstDS != NULL )
    	GDALClose((GDALDatasetH) poDstDS);
	GDALClose((GDALDatasetH) poSrcDS);
}

int main() {

	// shp 文件转化为 json 文件输出
	parseShpfile2GeojsonFile(input.shp, output.json);
	return 0;
}

编译执行:

g++ parse.cpp -lgdal -o parse
./parse

执行后即可看到转换后的 json 文件,亲测可行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值