基于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编码,中文不乱码。

posted @   yangly  阅读(699)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示