[QGIS Commit] r11698 - trunk/qgis/src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Sep 21 15:48:40 EDT 2009
Author: jef
Date: 2009-09-21 15:48:38 -0400 (Mon, 21 Sep 2009)
New Revision: 11698
Modified:
trunk/qgis/src/core/qgsvectorfilewriter.cpp
trunk/qgis/src/core/qgsvectorfilewriter.h
Log:
fix #1941
Modified: trunk/qgis/src/core/qgsvectorfilewriter.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.cpp 2009-09-21 19:47:42 UTC (rev 11697)
+++ trunk/qgis/src/core/qgsvectorfilewriter.cpp 2009-09-21 19:48:38 UTC (rev 11698)
@@ -116,7 +116,9 @@
QgsDebugMsg( "creating " + QString::number( fields.size() ) + " fields" );
mFields = fields;
+ mAttrIdxToOgrIdx.clear();
+ int ogrIdx = 0;
QgsFieldMap::const_iterator fldIt;
for ( fldIt = fields.begin(); fldIt != fields.end(); ++fldIt )
{
@@ -178,6 +180,8 @@
mError = ErrAttributeCreationFailed;
return;
}
+
+ mAttrIdxToOgrIdx.insert( fldIt.key(), ogrIdx++ );
}
QgsDebugMsg( "Done creating fields" );
@@ -218,9 +222,15 @@
continue;
}
- int ogrField = fldIt.key();
- const QVariant& attrValue = feature.attributeMap()[ ogrField ];
+ if ( !mAttrIdxToOgrIdx.contains( fldIt.key() ) )
+ {
+ QgsDebugMsg( QString( "no ogr field for field %1" ).arg( fldIt.key() ) );
+ continue;
+ }
+ const QVariant& attrValue = feature.attributeMap()[ fldIt.key()];
+ int ogrField = mAttrIdxToOgrIdx[ fldIt.key()];
+
switch ( attrValue.type() )
{
case QVariant::Int:
Modified: trunk/qgis/src/core/qgsvectorfilewriter.h
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.h 2009-09-21 19:47:42 UTC (rev 11697)
+++ trunk/qgis/src/core/qgsvectorfilewriter.h 2009-09-21 19:48:38 UTC (rev 11698)
@@ -98,6 +98,9 @@
/** geometry type which is being used */
QGis::WkbType mWkbType;
+
+ /** map attribute indizes to OGR field indexes */
+ QMap<int, int> mAttrIdxToOgrIdx;
};
#endif
More information about the QGIS-commit
mailing list