C++和GDAL实现shapefile(shp)文件的创建

#include "ogrsf_frmts.h"
#include <iostream>
#include <qgstininterpolator.h>
#include <QtCore/QList>


int main() {
    const char* pszDriverName = "ESRI Shapefile";
    GDALDriver* poDriver;
    GDALAllRegister();
    poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName);
    if (poDriver == NULL)
    {
        printf("%s driver not available.\n", pszDriverName);
        return 0;
    }
    GDALDataset* poDS;

    poDS = poDriver->Create("d:/newShp.shp", 0, 0, 0, GDT_Unknown, NULL); //创建shp文件
    if (poDS == NULL)
    {
        printf("Creation of output file failed.\n");
        return 0;
    }
    OGRLayer* poLayer;
    poLayer = poDS->CreateLayer("point_out", NULL, wkbPoint, NULL);
    if (poLayer == NULL)
    {
        printf("Layer creation failed.\n");
        return 0;
    }
    OGRFieldDefn idField("ID", OFTReal);
    OGRFieldDefn firstField("VALUE", OFTInteger);
    OGRFieldDefn secondField("X", OFTReal);
    OGRFieldDefn thirdField("Y", OFTReal);
    idField.SetWidth(32);
    firstField.SetWidth(32);
    secondField.SetWidth(32);
    thirdField.SetWidth(32);
    poLayer->CreateField(&idField);
    poLayer->CreateField(&firstField);
    poLayer->CreateField(&secondField);
    poLayer->CreateField(&thirdField);

    int x, y;
    int a = 10, b = 1000;
    for (int i = 1; i <= 30; i++)
    {
        OGRFeature* poFeature;
        poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
        poFeature->SetField("ID", i);

        std::cout << "input x:";
        std::cin >> x;
        std::cout << "input y:";
        std::cin >> y;
        poFeature->SetField("X", x);
        poFeature->SetField("Y", y);

        int value;
        std::cout << "input value:";
        std::cin >> value;
        poFeature->SetField("VALUE", value);
        
        OGRPoint pt;
        pt.setX(x);
        pt.setY(y);
        poFeature->SetGeometry(&pt);
        if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
        {
            printf("Failed to create feature in shapefile.\n");
            return 0;
        }
        OGRFeature::DestroyFeature(poFeature);
    }
    GDALClose(poDS);
    return 1;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容