Ejemplo n.º 1
0
/*!
  \brief Create OGR layer from VFKDataBlock

  \param poDataBlock pointer to VFKDataBlock instance

  \return poiter to OGRVFKLayer instance
  \return NULL on error
*/
OGRVFKLayer *OGRVFKDataSource::CreateLayer(const VFKDataBlock *poDataBlock)
{
    OGRVFKLayer *poLayer;

    poLayer = NULL;

    /* create an empty layer */
    poLayer = new OGRVFKLayer(poDataBlock->GetName(), NULL,
			      poDataBlock->GetGeometryType(), this);

    /* define attributes (properties) */
    for (int iField = 0; iField < poDataBlock->GetPropertyCount(); iField++) {
	VFKPropertyDefn *poProperty = poDataBlock->GetProperty(iField);
	OGRFieldDefn oField(poProperty->GetName(), poProperty->GetType());

        if(poProperty->GetWidth() > 0)
	    oField.SetWidth(poProperty->GetWidth());
        if(poProperty->GetPrecision() > 0)
	    oField.SetPrecision(poProperty->GetPrecision());
	
	poLayer->GetLayerDefn()->AddFieldDefn(&oField);
    }
    
    return poLayer;
}