void GdalFeatureConnector::setAttributes(OGRFeatureH hfeature, SPFeatureI& feature, const std::vector<bool>& validAttributes, const std::vector<ColumnDefinition>& columnDef) { int index = 0; for(int i=0; i < feature->attributeColumnCount(); ++i){ if ( !validAttributes[i]) continue; IDomain dom = columnDef[i].datadef().domain<>(); if(hasType(dom->valueType(),itINTEGER)) { gdal()->setIntegerAttribute(hfeature,index,feature->cell(i).toInt()); } else if (hasType(dom->valueType(),itDOUBLE | itFLOAT)) { gdal()->setDoubleAttribute(hfeature,index,feature->cell(i).toDouble()); } else if (hasType(dom->valueType(),itTHEMATICITEM | itNAMEDITEM | itINDEXEDITEM | itNUMERICITEM | itTIMEITEM)) { gdal()->setStringAttribute(hfeature,index,dom->impliedValue(feature->cell(i)).toString().toLocal8Bit()); } else if (hasType(dom->valueType(), itDATETIME)) { QVariant v = feature->cell(i); if ( QString(v.typeName()).compare("Ilwis::Time") != 0){ ERROR2(ERR_COULD_NOT_CONVERT_2,v.toString(), "time"); gdal()->setDateTimeAttribute(hfeature,index,0,0,0,0,0,0,0); }else{ Time time = v.value<Ilwis::Time>(); gdal()->setDateTimeAttribute(hfeature,index, time.get(Time::tpYEAR), time.get(Time::tpMONTH), time.get(Time::tpDAYOFMONTH), time.get(Time::tpHOUR), time.get(Time::tpMINUTE), time.get(Time::tpSECOND), 0);//TODO TimeZone?? } } else if (hasType(dom->valueType(),itSTRING)){ gdal()->setStringAttribute(hfeature,index,feature->cell(i).toString().toLocal8Bit()); } ++index; } }