基于gdal库用C++实现将shp文件转成geojson文件
做矢量瓦片时发现项目使用的Tippecanoe不能直接处理shp类型文件,需要将shp转成geojson类型。在网上查找相关资料:
https://blog.csdn.net/weixin_43857611/article/details/120556351
https://www.cnblogs.com/yulijunzj/p/4974369.html
感谢两位的分享,实践可行
void SHPToGEOJson::Shpfile2GeojsonFile(eString inFileName, eString outFileName) { GDALAllRegister(); OGRRegisterAll(); CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "YES"); CPLSetConfigOption("SHAPE_ENCODING", "CP936"); eUTF8String utf8FilePathin(inFileName); eUTF8String utf8FilePathout(outFileName); GDALDataset *poSrcDS = (GDALDataset *)GDALOpenEx(utf8FilePathin.Cstr(), GDAL_OF_VECTOR, NULL, NULL, NULL); if (poSrcDS == NULL) { return; } GDALDriver* poDriver = GetGDALDriverManager()->GetDriverByName("GeoJSON"); GDALDataset* poDstDS = poDriver->CreateCopy(utf8FilePathout.Cstr(), poSrcDS, FALSE, NULL, NULL, NULL); if (poDstDS != NULL) { GDALClose((GDALDatasetH)poDstDS); } GDALClose((GDALDatasetH)poSrcDS); }
代码中的个别变量类型为项目使用类型,文件名称可用char*类型取代。
转化后的文件为UTF-8编码,中文不乱码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律