Hi everyone,

I am using below codes to try convert geometry from a Dgn file to Shape
file. But, I can't exit the FeatureReading loop:

void convert()
{
   OGRRegisterAll();
   OGRDataSource       *poDS,  *poSHPDS;
   const char *pszDriverName = "ESRI Shapefile";
   OGRSFDriver *poDriver;
   poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(
                  pszDriverName );
                
   // Open file DGN
   poDS = OGRSFDriverRegistrar::Open( sourceFile, FALSE );
                                
   if( poDS == NULL )
  {
         cout << "Error opeing DGN file." << endl;
        return false;                           
  }
  // Create datasource for file shp
  poSHPDS = poDriver->CreateDataSource(destinationPath,NULL);
  if( poSHPDS == NULL )
  {
        cout << "Error creating shape file." << endl;
        return false;
  }
                
  OGRLayer  *poLayer, *poSHPLayer;
                                
  // Get Layer from DGN file
  poLayer = poDS->GetLayer(0);
                                
  // Create new Layer of SHP file       
  poSHPLayer = poSHPDS->CreateLayer (shpFileName, NULL, wkbPolygon, NULL);
  if(poSHPLayer == NULL)
  {
          cout << "Error creating Layer of Shape File." << endl;
          return false;
  }
  OGRFeature *poFeature;
  
  poLayer->ResetReading();
                
  *while( (poFeature = poLayer->GetNextFeature()) != NULL ) // Can't exit
this loop* 
  {
                        
        OGRGeometry *poGeometry;
        poGeometry = poFeature->GetGeometryRef();
                
        // if feature is a Polygon
        if( poGeometry != NULL && (wkbFlatten(poGeometry->getGeometryType()) ==
wkbPolygon ) )
        {               
                OGRFeature *poSHPFeature; 
                //Create new Feature shape file
                poSHPFeature = OGRFeature::CreateFeature 
(poSHPLayer->GetLayerDefn()); 
                poSHPFeature->SetGeometry (poGeometry);
                OGRPolygon *poPolygon = (OGRPolygon*) 
poSHPFeature->GetGeometryRef();

                poLayer->SetSpatialFilter(poGeometry); 
                poLayer->ResetReading ();
                
         }      
         OGRFeature::DestroyFeature( poFeature );
        
    }
    OGRDataSource::DestroyDataSource( poDS );
    OGRDataSource::DestroyDataSource( poSHPDS );
    return true;
}

Please find my attached dgn file.  Dc19.dgn
<http://osgeo-org.1560.x6.nabble.com/file/n5057267/Dc19.dgn>  

Are there anyone know why and how to fix it ?

Thanks and regards,
Tai



--
View this message in context: 
http://osgeo-org.1560.x6.nabble.com/Can-t-convert-geometry-from-Dgn-file-to-Shape-file-tp5057267.html
Sent from the GDAL - Dev mailing list archive at Nabble.com.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to