You need to do a CreateField() on your destination, something like:

    poFDefn = poLayer->GetLayerDefn();
    for( int iField = 0; iField < poFDefn->GetFieldCount(); iField++ ){
        OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn( iField );

        if( poDstLayer->CreateField( poFieldDefn ) != OGRERR_NONE ){
            printf( "Creation of field failed.\n" );
        }
}

Best Regards,
Brent Fraser

On 12/4/2012 4:53 AM, SIVA RAMA KRISHNA wrote:
To All,

I am using the following code for creating a shape file from another with the attributes value; i am unable to fetch attribute values from source and change the features from newly created
shape files



Any Sort of help is greatly appriciated















#include "main.h"
#include<QList>
#include<QStringList>
#include<QDebug>
//OGRFeature* TranslateFeature(OGRFeature* poSrcFeature,OGRFeatureDefn *poFeatureDefn);
OGRLayer            *poSrcLayer;
OGRLayer            *poDstLayer;
OGRDataSource       *poDS;
OGRDataSource       *poODS=NULL;
OGRFeature           *poDstFeature;
OGRFeature           *poSrcFeature;
OGRFeatureDefn       *poFeatureDefn;

int main()
{

     int iField;
      const char *pszDriverName = "ESRI Shapefile";
       OGRSFDriver *poDriver;

       OGRRegisterAll();
       QList<double>fieldid;
       QList<QString>fieldname;
       const char* str="indiaaa" ;

       poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(
                   pszDriverName );
       if( poDriver == NULL )
       {
           printf( "%s driver not available.\n", pszDriverName );
           exit( 1 );
       }

poDS = poDriver->Open( "/home/support/Images/IND_adm (3)/IND_adm1.shp" );
       poSrcLayer=poDS->GetLayerByName("IND_adm1");
       poDriver->DeleteDataSource("firsts1.shp");
       poODS = poDriver->CreateDataSource( "firsts1.shp", NULL );
       poDstLayer = poODS->CreateLayer( "firsts1",NULL,wkbPolygon);
       poSrcLayer->ResetReading();
       int i;
       OGRGeometry *poGeometry;
      // OGRGeometry *bufferGeometry;
poDstFeature = OGRFeature::CreateFeature(poDstLayer->GetLayerDefn());
       poDstLayer->CreateFeature(poDstFeature);
       poSrcFeature=poSrcLayer->GetNextFeature();
        do{
            i=1;

           OGRFeatureDefn *poFDefn = poSrcLayer->GetLayerDefn();
                  int iField;

for( iField = 0; iField < poFDefn->GetFieldCount(); iField++ )
                  {
qDebug()<<"fieldcount"<<poFDefn->GetFieldCount();
                      printf("\n");
OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn( iField );

                    if( poFieldDefn->GetType() == OFTInteger )
                      {
printf( "%d,", poSrcFeature->GetFieldAsInteger( iField ) );


                       }
                      else if( poFieldDefn->GetType() == OFTReal )
                      {
printf( "%.3f,", poSrcFeature->GetFieldAsDouble(iField) );
fieldid.append(poSrcFeature->GetFieldAsDouble( iField ));

                       }
                      else if( poFieldDefn->GetType() == OFTString )
                      {
printf( "%s, Name", poSrcFeature->GetFieldAsString(iField) );
fieldname.append(poSrcFeature->GetFieldAsString(iField));

                       }
                      else
                    {
printf( "%s,name1", poSrcFeature->GetFieldAsString(iField) );
fieldname.append(poSrcFeature->GetFieldAsString(iField));

                      }
                  }
                  poGeometry=poSrcFeature->GetGeometryRef();
poDstFeature->SetGeometryDirectly(poGeometry);
                  poDstLayer->CreateFeature(poDstFeature);
                  poDstFeature->SetFID(100);
// poDstFeature->SetField(i,str); // this is not modifying
//                  i++;
//                  //poDstFeature->SetFrom(poSrcFeature,true);


     }while( (poSrcFeature = poSrcLayer->GetNextFeature()) != NULL );



           poDstLayer->ResetReading();

           qDebug()<<"size"<<fieldname.size();

             OGRDataSource::DestroyDataSource(poODS);
     }




_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev

_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to