结合C++和GDAL实现shapefile(shp)文件的创建和写入

工具:vs2012+GDAL 2.0

包含头文件:

#include "ogrsf_frmts.h"

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("NAME",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=100;
    for(int i=1;i<=10;i++)
    { 
        OGRFeature *poFeature; 
        poFeature = OGRFeature::CreateFeature( poLayer->GetLayerDefn() ); 
        poFeature->SetField("ID",i);
        poFeature->SetField("NAME",i);
        x=(rand() % (b-a))+ a;
        y=(rand() % (b-a))+ a;
        poFeature->SetField("X",x);
        poFeature->SetField("Y",y);
        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;}

这样,就会在d盘根目录生成一个newShp.shp的文件,用arcgis打开,显示如下

结合C++和GDAL实现shapefile(shp)文件的创建和写入结合C++和GDAL实现shapefile(shp)文件的创建和写入
原文链接: https://www.cnblogs.com/denny402/p/4960260.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/224398

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午12:25
下一篇 2023年2月13日 下午12:26

相关推荐